微服务架构学习与思考(05):微服务架构适用场景分析

本文分析了微服务架构的适用场景,指出微服务并非万能解决方案,需要结合业务发展阶段、复杂度、访问量、用户量、开发人员素质等因素考虑。微服务在应对复杂业务、提升交付效率时展现优势,但在治理复杂度和运维难度上也有所增加。适合微服务的场景包括需求响应变慢、业务复杂度高、团队规模扩大等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简述

在实际开发中,需要考虑多种因素,来决定采取哪种架构模式才适合当前业务发展情况。

毕竟微服务也不能“包治百病”,不要把它当做万能药。企业研发哪里得病了,觉得只要把“微服务”这服药给用上,就药到病除。哪有这么简单的事情。
微服务有它自身的特点,优点和缺点,有其适用范围,微服务并不能解决所有问题。

你需要综合考虑一些情况:

比如 业务所处发展阶段:

  1. 刚开始探索
  2. 高速发展期
  3. 还是成熟期

业务的复杂度:

  1. 业务访问量是多还是少
  2. 用户量是多还是少

开发人员:

  1. 开发人员素质,是初级还是高级
  2. 开发人员的数量

产品的形态:

  1. APP
  2. web
  3. 小程序
    是否3者都有

等等都是需要综合考虑的因素。

二、微服务和单体优缺点对比分析

下面内容是对比微服务架构和单体架构的优缺点:

说明:√ - 优 , × - 劣

序号对比项微服务架构单体架构优劣评比
1调用难度API 接口调用数据库共享或本地程序调用API都是远程调用,出问题情况更多,微服务:× 单体:√
2系统设计-可扩展性每个业务可以独立一个微服务,用api进行通信,可扩展性强由于是一个单体应用,整个应用都在一起,耦合度高,可扩展性下降微服务:√ 单体:×
3系统设计-可维护性每个团队独立负责一个或者几个微服务,业务复杂度降低,可维护性高所有开发人员都在一个单体上进行开发,所以业务整合在一起,可维护性差微服务:√ 单体:×
4系统设计-高性能一个微服务可能调用几个其他的微服务,网络通信变多,性能下降在单体内进行通信,性能高微服务:× 单体:√
5业务开发复杂度由于把单体拆分成多个微服务,业务复杂度也随着分解到多个服务中在一个单体里,业务都糅合在一起,容易牵一发而动全身微服务:√ 单体:×
6开发效率早期设计和沟通的工作量加大,随着项目规模和时间的推移,效率变化不大早期工作量小,随着项目规模和时间的推移,效率大幅度下降随着时间复杂度上升:微服务 √,简单项目:单体 √ , 复杂项目:微服务 √
7需求变更响应速度各个微服务只负责自己的业务部分,独立变更,敏捷开发更好单体变更,有可能牵一发而动全身,导致其他模块出事故微服务:√ 单体:×
8运维难度大系统拆分成多个小系统,导致系统变多,服务一多,部署和运维难度就加大,所以需要DevOps由于是单体,运维相对来说简单微服务:× 单体:√
9交付效率拆分成多个小系统,小系统打包编译快,交付也随之变快。配合DevOps会更快大单体比较大,编译打包慢,导致交付也慢微服务:√ 单体:×
10服务治理服务变多,治理复杂单体应用治理简单微服务:× 单体:√
11业务复用性微服务更好单体复用性差微服务:√ 单体:×
12代码复用性可以用组件形式复用,微服务形式复用一般是共享库形式复用微服务:√ 单体:×
13开发成本前后期开发成本一样前期开发成本低,后期业务复杂度上来成本变高一个变化的过程,前期:单体 √ 后期:微服务 √
14职责划分由于每个微服务由独立团队负责,职责划分明确开发人员都在一个单体上开发,功能交叉,职责模糊,容易产生丢锅行为微服务:√ 单体:×
15开发人数由于划分为多个微服务,1个或几个微服务由独立团队负责,开发人数会上升人数增加没有微服务那么明显微服务:× 单体:√
16风险由于划分为多个独立的微服务,风险被分担给各个服务,控制在各个小系统内单体系统是一个整体,一个小错误可能导致整个系统不可用,牵一发而费全身微服务:√ 单体:×
17分布式开发情况困难增加,比如分布式事务,分布式一致性,数据库拆分之后的联合查询数据库拆分后的联合查询微服务:× 单体:√
18系统整体复杂度整体复杂度变高,因为拆分微服务比较多整体复杂度稍低微服务:× 单体:√

从上面各项分析,可以看出,对于微服务和单体,各有优缺点。
业务简单项目:单体优势为开发效率、调用难度、服务治理、运维难度、开发成本。 比如刚开始展开业务,还不知道业务是否可行,需要验证业务模型时候,可以用单体快速简单开发验证业务模型,跑通业务模型。

业务复杂项目:微服务的优势就开始上升了。优势明显增多。但是治理复杂度也随着上升。

所以微服务也不是银弹,它也有很多缺点,所以它也有不适用的场景。

三、微服务适用场景

从上面的单体和微服务对比的优缺点分析来看,微服务架构也不是“包治百病”,它也有适用的场景。怎么判断这个适用场景?对着上面的项目对比来看,就可以判断当前项目是否适合微服务架构。这也是架构选型所要考虑的情况。

微服务适用场景也可以简化为下面:

  • 响应需求变慢,需求开发时间变长。
  • 交付的效率变差,bug数越来越多。
  • 业务复杂度变高,应用达到3个或3个以上,或者模块达到5个或以上。
  • 团队人数变多,开发至少有5人以上,运维至少2人。
  • 项目需要长期迭代维护,至少一年以上。

上面只是为了判断简化对比项目,是一个简单模型,但请务必参考上面详细的对比项目来认真思考。

什么时候适合引入微服务的考量因素:

  • 业务角度
    • 业务需求开发是否经常延迟
    • 产品交付是否能跟上业务发展
    • 业务维护周期长
    • 业务复杂度
    • 业务量有多少
  • 研发质量
    • 代码是否因为修改而经常出现bug
    • 代码臃肿庞大,变得越来越臃肿
    • 响应需求变化时间变长
    • 交付时间变长
  • 技术人员
    • 有技术,有意愿
    • 团队人数足够
  • 业务发展期
    • 刚创立公司初期
    • 高速发展期
    • 成熟期

最后:微服务架构不是银弹

[完]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值