微服务架构真的不适用了吗

最近,微服务架构在国产化的潮流下,出现了一些不同声音。在私有化的情况下,微服务反而会带来非常大的困扰。比如原来单体架构,很容易部署的场景,现在变得复杂了,以前实施人员一键搞定上线,现在专业运维人员努力才能搞定,成本、时间、质量、运维都带来了非常大挑战。

于是乎微服务架构无用论时有抬头,不对,严格来说是不适用论,不管哪种论调,感觉都有点矫枉过正。

来看一下微服务架构之前的核心主流架构,即单体架构。在之前参与ToB的ERP时代是典型的这种架构,一套代码,所有开发人员进行需求开发、BUG修改、集中发布,对应的可能是几个月产品更新。安装包制作好后,做好安装盘,一线人员直接在客户机房进行安装部署上线。研发团队做好Dev的开发工作,一线承接后续Ops,Dev和Ops大部分情况下是分离的,运维可能会比较少或客户自己搞定或者购买运维服务确保系统的稳定运行。那时版本不更新是常态,只有客户需要进行个性化调整才会进行系统更新发布。

基于这些应用特征,单体架构最大的优势是易于开发和部署,在非海量数据或请求下,可以调出最优的性能。但是由于是一套代码,耦合度相当高,即使是非常注重解耦的团队,也无法真正做到,只会是一厢情愿。同时多个团队在一起开发,发布周期一般以月为单位甚至更长,产品的进化速度受到了大大的制约。

当然在面对私有化客户时,单体架构具备非常大的优势,但在产品的进化,敏捷维度则显的力不从心。这也是为什么微服务架构在私有化时代受到挑战的一个重要原因。

那既然有这么多好处,是否为了私有化就要将已经服务化的产品,重新调整回到单体架构呢,这个是完全没有必要的。

让我们看看微服务架构,面向ToC产品形态,快速演进、快速迭代必不可少,微服务架构完美的给予了支撑,也是为此应运而生的。

面对单体架构的技术问题,开发人员的技术负载太大,随着时间的推移,慢慢系统改不动不敢改成为了常态,重构后质量控制好的可能会好一阵,质量控制不好的可能立马陷入另一个质量漩涡,这样的例子还是比较多的。由于发版比较慢,用户体验是一个非常大的挑战,出现问题也无法快速得到解决。

对于单体架构的人员问题,比较明显的是组织受康威定律的影响,会极大影响产品架构,在单体架构时代会有整体的设计,人员的沟通也会比较顺畅,但是集中在一个环境资源的抢占非常大,等待的现象时有发生,比如发布可能一个团队的一个问题导致所有产品的发布失败,这个问题是一直被诟病的。

微服务架构比较好的解决了上述2类问题,也是微服务的优势,比如说:

1)组织拆成比较小,服务边界比较明确,服务接口也比较清晰。

2)按照服务边界的划分敏捷团队,进行迭代式开发,快速演进和迭代,促进了产品的进化。

3)客户能享受不断迭代享受到产品新的特性以更好的支撑起业务场景,特别是可以享受行业KnowHow应用实践。

4)发布过程并行化,各敏捷团队相互不影响,提升DevOps的效能,提升整体研发效能。大家可以脑补一下500人以上的研发团队分别进行单体和微服务发布的便利性的差异。

5)分布式架构,灵活的扩容,支撑大数据量海量请求的性能和高可用,这个是最大的能力。

6)不同服务可以用不同语言,可以支撑多语言、多框架。

总之敏捷、效率、弹性、收益是微服务架构一些特性,以支撑起更大规模研发团队的开发工作。

当然微架构也有非常明显的问题:

首先是部署成本,由于采取了分布式、云原生部署方式,部署成本高,相比单体架构是2~3倍的逻辑。

其次是运维成本的增大,由于云原生组件非常多,对于运维的能力要求高,运维监控也比较大的要求。

最后是团队的协作,由于边界非常清晰,大家的边界感也非常强,出现问题排查协作非常多,处理速度降低。

单体架构和微服务架构都有非常明显优劣势,各自都有相应的适用场景。

面对当前国产私有化的浪潮,微服务架构关于部署方面的劣势需要尽量收敛,解决办法可能是保持合适大小的微服务,即服务模块化,这样即能保持微服务的一些优势,也有单体快速交付的优势,融合优势,即满足客户要求,又能保持比较好的开发效能效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微服务架构并不适用于所有系统。它最适用于大型、复杂的系统,其中包含许多独立的功能模块,这些模块可以独立地开发、部署和维护。如果系统相对较小且功能相对简单,则微服务架构可能不是最佳选择。此外,如果组织没有足够的技术能力来支持微服务架构,或者如果该组织对于开发、部署和维护微服务的成本感到担心,则也可能不适合使用微服务架构。 ### 回答2: 微服务架构是一种基于服务拆分的架构模式,可以提供灵活、可扩展的系统设计。然而,并不是所有的系统都适合采用微服务架构。以下是一些不适合微服务架构的情况: 1. 小型应用:如果应用比较小,业务逻辑简单,并且没有明显的团队划分,采用微服务架构可能会带来过多的开销。此时,可以选择单体架构或者简单的模块化架构。 2. 实时性要求极高的系统:微服务架构中,服务之间通过网络通信,这会增加一定的延迟。例如,某些金融交易系统可能要求毫秒级的实时性能,此时采用微服务架构可能无法满足需求,应该选择更加低延迟的架构。 3. 强一致性要求的系统:微服务架构中,每个服务都有自己的数据存储,数据的一致性比较复杂。如果系统对数据的强一致性要求比较高,那么使用微服务架构可能会增加数据一致性的复杂性和成本。此时,可以选择使用单体架构或者分布式事务来满足需求。 4. 技术团队能力不足:微服务架构不仅要求对业务进行拆分,还必须具备良好的分布式系统设计和开发能力。如果技术团队缺乏分布式系统相关经验,那么采用微服务架构可能会遇到许多挑战,并且导致开发和运维成本增加。 总之,微服务架构适用于大型、复杂的系统,需要根据具体的业务和技术场景来判断是否适合采用。对于不适合的系统,可以选择其他合适的架构模式来满足需求。 ### 回答3: 微服务架构的优点在于其模块化、松耦合、可扩展性强等特点,使得它特别适合用于大型、复杂的分布式系统开发,但并非所有系统都适合微服务架构。 首先,小型系统可能不适合采用微服务架构微服务架构引入了互相独立的服务,每个服务需要处理自己的业务逻辑和数据存储,增加了分布式系统的复杂性和额外的开发工作量。对小型系统而言,这种复杂性可能会超过其所需的规模和需求。在这种情况下,使用传统的单体架构可能更加简洁和直观。 其次,对于固定需求、小规模的业务应用,微服务架构也不适合微服务架构的设计初衷是为了应对频繁的需求变更和横向扩展的需求,在这些情况下,微服务架构可以更加灵活地满足需求。但是对于固定需求、小规模的业务应用来说,微服务架构的设计和部署过程可能会带来不必要的复杂性和开销,不值得投入这样的资源。 最后,存在严格的性能和延迟要求的系统也不太适合微服务架构。由于微服务架构中的每个服务都是独立的,因此在服务之间进行通信将会引入一定的延迟。如果系统有着对实时性能要求很高的需求,那么微服务架构可能无法满足这种要求。 综上所述,小型系统、固定需求的业务应用和对性能有严格要求的系统并不适合采用微服务架构。然而,需要根据具体的业务场景和需求来决定是否使用微服务架构,以充分发挥微服务架构的优势,提升系统的可扩展性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值