不要再说微服务可以解决一切问题了!
微服务架构提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,形成分布式调用,为用户提供最终价值。
因此无论是创业型公司还是互联网独角兽企业,都将微服务架构当成一把利刃,用它解决项目在开发中所遇到的一切问题。
目前,能够支持微服务架构的开源技术有很多,那么微服务架构真的很容易吗?
通过互联网大会以及企业内部培训等方式和多家创业型公司的 CTO 和架构师交流后发现,很多项目以微服务架构规划开始,经过几次迭代后却以单体架构收尾,导致项目失败。
项目复盘后分析后得出,失败主要是由于缺乏实战经验,在架构设计阶段不能快速识别和有效解决微服架构的副作用所导致的。
实际上,微服务架构是一把双刃剑,其目标是将单体应用拆分为无状态的服务,通过横向扩展的方式解决项目的瓶颈,还能解决项目中出现的诸如代码冲突、模块耦合、项目交付质量下降、团队工作效率下降的问题、接口性能瓶颈等问题。
微服务架构的弊端也很明显,例如不能简单的通过一行注解来保证事务的完整性,容易出现数据不一致性情况。
那么,如何最简单可靠地使用分布式事务解决数据不一致的问题呢?
原本内部接口调用变成服务间的 RPC 调用,和单体应用相比,微服务架构下的接口性能反而更低了,这种问题该如何规避?
RPC 调用过程因为网络问题不可避免出现重复调用情况,引发脏数据,因此在微服务架构下就要求每个接口都需要具备幂等性,那么,幂等性的常用解决方案有哪些?
微服务拆分没有技术标准,这就涉及到服务到底如何拆分比较合理,服务拆分颗粒度如何把握,一个服务的维护团队有多少人比较合适呢?
系统架构设计时先按功能拆分独立的服务,再引入 Dubbo 或者 SpringCloud 框架,系统就变成了微服务架构了吗?
为什么从单体变成微服务架构后原始接口反而变慢了?
微服务框架下的代码到底如何优化?
微服务架构转型后,测试团队还是按照之前的思维执行接口测试、功能测试,是否覆盖所有场景?
框架是否需要测试,服务与服务之间调用的异常该如何测试?
当这些技术问题摆在研发团队面前时,有些 CTO 开始犹豫了:
创业型公司技术架构选型在项目启动时就按微服务架构来设计项目是否必要?
若没有使用微服务架构那么项目运行过程中出现性能问题如何解决呢?
假设目前是单体架构,后续如何能平滑迁移到微服务架构?
随着项目团队逐步壮大以及在生产环境下不断的试错,团队经过多次线上实战,获得了很多宝贵生产的经验,终究会找到处理这些副用作的方法或技巧。
然而,当公司业务转型从单一业务线变成多元化的业务线后,似乎微服务架构下的系统又出现了新的问题:
各业务线之间的数据形成孤岛,同样的功能重复开发,有时为加快项目开发进度甚至从别的业务线直接把原功能的代码复制过来经过简单修改就完成新需求的开发,导致同类型的 bug 在每个业务线都会出现。
研发团队人数一直在不断的增加,但是总是感觉研发人员不够用。
此时,中台的出现恰好解决了这些问题,中台倡导企业级能力复用的思想,提倡将共性需求下沉到中台形成通用能力对外输出,以减少重复开发。因此,微服务架构转向中台架构,是仅喊口号还是需要怎么怎样系统的过程?
《架构演变实战:从单体到微服务再到中台》这本书通过真实案例实战的方式完整地讲述了如何从一个单体架构逐步转型到中台的历程!
内容简介
全书共 9 个章节:
第 1 章通过案例的方式讲解当单体架构遇到问题后如何去优化,其次通过一个失败的案例来描述在真正打算使用微服务架构前需要有哪些准备。
第 2 章则介绍服务如何拆分,以及标准化微服务架构的项目结构有哪些优势。
第 3 章则以概念和实战来介绍常用的微服务开始模式有哪些。
第 4 章则以实际案例为基础,描述如何从单体架构转型到微服务架构,在这过程中需要做哪些工作。
微服务重点在于每个服务的打磨,因此第 5 章则通过具体方案讲述如何去打磨每个服务,如何使用多级缓存、并行调用等手段来提高系统的吞吐量,如果使用混合限流来保障服务的稳定性,如何使用消息队列来做削峰等。网关是系统的统一入口,是微服务架构下非常重要的组件,当开源网关不满足业务需要,如何自研一套微服务网关呢?
第 6 章则以具体案例来介绍如何从 0 开始自研满足个性化需求的网关。微服务架构不仅开发模式需要转变,测试方式也需要转变,那么微服务架构下如何做系统测试,为什么又要引入混沌实验?
第 7 章站在测试角度去看微服务架构下的测试。
第 8 章去评估在既能保障服务稳定运行,又能避免浪费,通过科学有效的方式来以全链路压测平台为基础,系统科学的评估线上容量。
第 9 章则讲述如何从微服务架构走向中台,在这过程中需要如何去组建中台团队,需要公司的哪些支持配合等,如何把控中台的需求以及中台如何分阶段去考核等。
本书以真实案例为基础,再融合技术要点,逐步介绍如何设计出满足业务需求和性能需求的架构,是架构师参考的工具书,也是技术优化的参考书。
专家点评
微服务由于具有扩展性强、松耦合、便于敏捷开发等特性,在云计算时代被越来越多的组织所采用,采用微服务架构成为现代企业数字化转型的必经之路。
本书从单体应用开篇,详尽阐述了架构选型、拆分、实施、优化等微服务落地过程中所遇到的问题和解决的办法。全书深入浅出,既有整体的理论性指导,又有对 Dubbo、Spring Cloud 等微服务工具的详尽解释,对于微服务实践者有非常高的参考和学习价值。
——厉启鹏,Apache RocketMQ PMC M ember、RocketMQ 中国社区发起人
初识本书作者是在 Dubbo 社区的线下沙龙中,后续在 Dubbo 社区的维护过程中我们也有过一些深入的交流与探讨。作者对 Dubbo、微服务架构的深刻认知与丰富的实践经验让人印象深刻。
本书从当前流行的微服务架构出发,详细介绍了如何从单体架构升级为微服务架构,并以实战的形式从基础理论开始,逐步优化微服务架构的每个细节,最终升级为中台架构,整个升级思路讲解清晰。本书将理论和实践相结合,可作为微服务架构技术选型或实施的参考图书。
——刘军,Apache Dubbo PMC Chair、Dubbo3 开源负责人
本书的最大特点是贴合业务来谈架构,针对不同的业务场景给出了有针对性、接地气的架构范式、演进思路及落地策略,同时融合了潘老师基于自身实战经验的深度总结。相信这本诚意之作定能让读者受益匪浅!
——李鑫,《微服务治理:体系、架构及实践》作者、天弘基金线上渠道技术负责人
从微服务的基础知识,到微服务的进阶知识,以及到最后的中台系统实战,作者条理清晰、由浅入深地介绍了服务架构所涉及的方方面面的关键技术和原理。建议相关从业人员阅读本书。
——王新栋,京东零售技术总监、《架构修炼之道》作者
本书从一个创业公司由单体架构向微服务架构转型的实际案例出发,向读者展示了构建分布式系统的全生命周期。通过翔实的案例剖析、深度的原理讲解及实操分享,读者不仅知其然,更能知其所以然。本书不失为一本可以常备案头的实用百宝书。相信不管是对分布式原理感兴趣的初学者,还是正着手分布式转型的资深工程师,通过阅读本书,都会有所收获。
——宋顺(齐天),蚂蚁集团高级技术专家、Apollo Config PM C
本书基于潘老师自己的经验,对中台架构及其实现做了很客观的阐述,利弊解释都颇富“实感”。没有完美的架构,也没有完美的方法,顾“此”极有可能失“彼”,这也再度验证了很多人对架构的看法。架构即平衡之道,架构即取舍之道。架构理论有共性,架构实施则充满个性,需要在实施中时刻提醒自己,在别人的经验和自己的环境中做好取舍,在别人的能力和自己的限制之间做好平衡。不然,本书第 1 章的“翻车”事故,就有可能在你实践本书第 9 章的设计时重现。大的成功不是很容易复现,大的失败却很容易再临。
——付晓岩,《企业级业务架构设计:方法论与实践》《聚合架构:面向数字生态的构件化企业架构》作者
评论