跟着我学微服务,微服务带来了哪些挑战
跟着我学微服务,微服务带来了哪些挑战

我们通过跟着我学微服务,什么是微服务?微服务有哪些主流解决方案?| 跟着我学微服务,你所在领域业务为什么要微服务化,何时微服务这两篇文章对微服务有了整体的了解,今天我们来分析你要给你的组织进行微服务化,会带来哪些挑战,给你的组织和团队业务微服务化设计作为参考
1 系统复杂性增加
我们从单体应用演变为微服务时,一个服务拆成了多个服务,整体系统的复杂性就会增加,需要处理服务之间的通信、部署、监控和维护等方面的工作。下图中云票务系统在单体架构时期,核心子模块有商品、订单、支付、验票,我们在进行微服务化后将其演变为独立的服务,让其以独立的进程运行。通信方式由原来的进程内调用变成了进程外的网络通信,系统的部署和监控维护方式也会变的更复杂

2 增加服务间通信开销
进行微服务拆分之后订单微服务和聚合支付微服务、商品微服务之间通过网络进行通信,传递数据需要额外的网络开销和序列化开销,可能导致性能瓶颈和增加系统延迟。相比如单体架构的进程内调用,由于网络通信的开销系统性能也会降低

3 数据一致性和事务管理更麻烦
订单微服务、聚合支付微服务、商品微服务每个微服务都有自己的数据存储。数据一致性和跨服务的事务管理变得更加复杂,需要额外解决分布式事务和数据同步的问题。在同一个进程中订单状态、支付状态、商品库存交由同一个Spring事务容器进行管理即可,然而微服务划分之后就需要采用分布式事务解决方案进行实现,因为三个微服务系统各自的数据存储也是独立的,所以还涉及到三套系统的数据一致性处理问题。虽然分布式系统数据一致性和事务都有成熟的解决方案,但是对于系统设计者和实现者来说也是一项不小的挑战

4 增加部署和运维复杂性
微服务架构涉及多个独立部署的服务,对于部署、监控和容错机制的要求更高,需要建立适当的部署运维策略和自动化工具,以简化部署和运维过程。在一个比较大的产品线可能存在成百上千的服务和服务器,那么这时候对微服务的部署还有对服务、服务器的维护工作量将成倍增加。所以你要对你所在的领域进行微服务化你要考虑如何解决这些问题,微服务对于你的团队技术要求会相比单体架构要高很多,另外企业需要投入的人力和物力也会大大增加。是否进行微服务化这是一个很重要的考量点

5 增加服务治理和版本管理难度
随着微服务数量的增加,服务的治理和版本管理变得更加复杂。需要考虑服务的注册发现、负载均衡、监控和故障处理等方面,以确保整个系统的可靠性和稳定性。下图中各个微服务在相互之间调用时会涉及到服务注册与发现、负载均衡,那么这时配套的相关中间件在做系统架构时也必须考虑进来,另外一个就是在系统升级和部署时还需要考虑对应的系统版本。我们在进行微服务化时就必须要考虑如何治理你拆分的这些微服务及后续演化出来的新版本

6 分布式系统的复杂性
微服务架构涉及构建和管理分布式系统,而分布式系统本身具有一些固有的挑战,如网络延迟、分布式一致性和容错性。可以参考下图我们在构建分布式系统时需要注意的问题

7 增加团队沟通和协作成本
每个微服务都由专门的团队负责,可能增加团队之间的业务、技术沟通和协作成本。需要有效的沟通渠道和协作机制,确保服务之间的协调和一致性。

分布式系统存在的问题微服务一样存在,所以我们在考虑给你的业务进行微服务化时一定要考虑多方面因素,你所在组织、领域业务、系统数据量、企业研发支出是否允许你的业务进行微服务。我们不能为了微服务而微服务,实施一个新的技术和业务标准一定是能给你的业务赋能,给你的组织降本增效。
欢迎大家关注我的项目实战内容itbeien.cn,一起学习一起进步,在项目和业务中理解各种技术。

欢迎沟通交流技术和支付业务,一起探讨聚合支付/预付卡系统业务、技术、系统架构、微服务、容器化。并结合聚合支付系统深入技术框架/微服务原理及分布式事务原理。加入我的知识星球吧

跟着我学微服务系列
01跟着我学微服务,什么是微服务?微服务有哪些主流解决方案?
贝恩聊架构-项目实战地址
8 源码地址
跟着我学微服务-基于企业级支付项目系列文章、资料和源代码会同步到以下地址,代码和资料每周都会同步更新
该仓库地址主要用于基于企业级支付系统,学习微服务整体技术栈