微服务的缺点

更新日期: 2020-02-19阅读: 1.6k标签: 微服务

微服务,火了好几年的东西。曾经我们看中的是微服务拆分之后,每个项目变得更小,对团队的每个人来说维护成本降低,因为需要了解 的东西局限于一个更小的服务。第二是加强了技术选型的灵活性。但是由于没有实践,并不知道微服务会带来什么大的问题。

当我们大规模应用微服务之后,问题才开始慢慢显现出来。


网络调用过多

微服务之间互相调用,有时候是非常频繁的,例如鉴权类接口,几乎每一个接口都要请求一次,因此是整个系统中并发要求最高的, 网络调用与函数调用相比性能相差许多,尤其是当服务间使用 RESTful 而当其基于 HTTP/1.x 协议时,因此为了提升性能,会在 服务间引入gRPC或Thrift等,从而又引入了新技术栈的维护成本和更多的问题。


技术栈太过灵活

当每个人都可以自己主导一个服务的开发时,技术栈选型往往就变得多样化,以我所在团队为例,语言有Python、Go,HTTP框架有 Flask、Gin,这还是在大家统一服务端语言和框架的情况下。而HTTP client则是显现出技术多样化的最好例子,Python有requests, Go则有 net/http , req , resty 等,他们的功能和能解决的问题都差不多,但是却因为不同成员的不同偏好而引入,而当A成员 去维护B成员的项目时,A成员就不得不再学一个重复的对他无提升的东西。


难于应对连表查询的需求

当微服务拆分开来之后,数据库、缓存等也会一并拆开。这时候,服务之间的数据提取就从原本查数据库变成了走api。不同服务的需求 不一样,这就会导致API向两个方向演变:越来越多的API,或者是越来越大的API,更糟糕的是两者的集合。而另一种需求则更为致命, 连表查询。原本在数据库表中连表查询即可的需求,现在可能要在多个服务间调用,在语言里实现去重、连表的部分逻辑。多次网络 请求,大量运算带来的是API性能的急剧下降。


核心应用崩溃会导致大面积瘫痪

还是以上面的例子为例,高可用这个词,用在核心服务上再合适不过,例如鉴权类的核心服务,每挂一秒钟,影响的都是数量极大的服务 和用户,而即便是 99.9999% 高可用的服务,一年也会挂 31.53 秒。


运维成本增加

毫无疑问,项目的增加会提高运维成本,而运维并不仅仅包括当服务挂了之后,去重启应用这么简单,更多的包括,一不小心日志导致 磁盘爆了、突然而来的超高流量、某个应用成为瓶颈等。这对监控、及时响应来说都是极大的挑战。


接口风格不一致

如上所说,不同成员有不同的风格,如果团队中每个成员的接口风格不一致,没有编码规范,就会导致对接API的人非常的痛苦,每个 项目有不同的返回结构,对接者使用静态语言解析JSON时,会非常难做。

上面就是个人总结的一些微服务所带来的问题。

原文:https://jiajunhuang.com/articles/2020_02_19-should_i_use_microservice.md.html

链接: https://www.fly63.com/article/detial/7503

微服务化的不同阶段 Kubernetes 的不同玩法

作为容器集群管理技术竞争的大赢家,Kubernetes已经和微服务紧密联系,采用Kubernetes的企业往往都开始了微服务架构的探索。然而不同企业不同阶段的微服务实践面临的问题千差万别,注定要在技术路线上产生分叉

微服务架构下的监控需要注意哪些方面?

微服务本身并没有一个严格的定义,不过从很多人的反馈来看,大家都达成了这样一个共识:微服务是一种简单的应用,大概有10到100行代码。我知道使用代码行数来比较实现其实很不靠谱,因此你能理解这个意思就行,不必过分拘泥于细节

微服务架构之「 调用链监控 」

「 调用链监控 」是在微服务兴起后才有的一种新流行的监控模式。因为在我们传统单体应用的项目中,不存在服务链/调用链的概念,所以也就根本没有调用链监控的需求了

一个知名网站的微服务架构最佳实现

在Medium,我们的技术堆栈始于2012年的单体Node.js应用程序。我们已经构建了几个卫星服务,但我们还没有制定一个系统地采用微服务架构的策略。 随着系统变得越来越复杂并且团队不断发展

采用微服务架构的六个考量因素

新兴技术的下一波浪潮正向我们涌来,人工智能、可穿戴设备、物联网及更多技术变得普及开来。许多组织现面临着管理这些整体式应用程序这个难题。当下,速度和灵活性必不可少

最终,我们放弃了微服务

微服务被认为是一种理想的架构模式,因此,Steven Lemon 所在公司的领导层决定从单体架构向微服务架构迁移,这让整个开发团队在随后的的日子里苦不堪言,七大现实问题摆在面前无法解决,微服务架构的好处也没有享受到

微服务架构如何影响软件开发文化?

微服务,并不仅仅是一种代码构造方式。微服务概念一出现就引发了热烈讨论,很多文章都喜欢将其与整体式架构比较,乃至来自大型企业的用例等。然而,在说起微服务时,开发人员关注的往往是这场革命的技术意义

为什么会产生微服务架构?

Web应用架构受系统用户量、开发人员组织方式影响严重。过去二十年互联网迅速发展,Web架构也从单体式演进出微服务,背后还有比如 Martin Fowler 提出的理论支撑。虽然每个人都听说过微服务,但是很多人并不太清楚为什么要这么做

PHP微服务集群搭建

近些年微服务架构大行其道,趁着最近有时间,来捣鼓捣鼓微服务是怎么一回事。微服务的概念由 Martin Fowler 于2014年3月提出:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调

「微服务架构」基于Nginx的三种微服务参考架构

NGINX从一开始就参与了微服务运动。 NGINX的轻巧,高性能和灵活性非常适合微服务。NGINX Docker映像是Docker Hub上排名第一的应用程序映像,您今天在Web上找到的大多数微服务平台都包含一个演示

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!