活动简介
微服务架构提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,形成分布式调用,为用户提供最终价值。因此无论是创业型公司还是互联网独角兽企业,都将微服务架构当成一把利刃,能解决项目在开发中所遇到的一切问题,目前能够支持微服务架构的开源技术有很多,那么微服务架构真的很容易吗?
发现很多项目以微服务架构规划开始,经过几次迭代后却以单体架构收尾,导致项目失败。项目复盘后分析后得出主要原因是由于缺乏实战经验,在架构设计阶段不能快速识别和有效解决微服架构的副作用所导致。实际上微服务架构是一把双刃剑,其目标是将单体应用拆分为无状态的服务,通过横向扩展的方式解决项目的瓶颈,还能解决项目中出现的诸如代码冲突、模块耦合、项目交付质量下降、团队工作效率下降的问题、接口性能瓶颈等问题。微服务架构的弊端也很明显,例如不能简单的通过一行注解来保证事务的完整性,容易出现数据不一致性情况,那么如何最简单可靠的使用分布式事务解决数据不一致的问题。原本内部接口调用变成服务间的RPC调用,和单体应用相比,微服务架构下的接口性能反而更低了,这种问题该如何规避? RPC调用过程因为网络问题不可避免出现重复调用情况,引发脏数据,因此在微服务架构下就要求每个接口都需要具备幂等性,那么,幂等性的常用解决方案有哪些?微服务拆分没有技术标准,这就涉及到服务到底如何拆分比较合理,服务拆分颗粒度如何把握,一个服务的维护团队有多少人比较合适呢?
系统架构设计时先按功能拆分独立的服务,再引入Dubbo或者SpringCloud框架,系统就变成了微服务架构了吗?为什么从单体变成微服务架构后原始接口反而变慢了?微服务框架下的代码到底如何优化?
微服务架构转型后,测试团队还是按照之前的思维执行接口测试、功能测试,是否覆盖所有场景吗?框架是否需要测试,服务与服务之间调用的异常该如何测试?
当这些技术问题摆研发团队面前,有些企业CTO开始犹豫了,创业型公司技术架构选型在项目启动时就按微服务架构来设计项目是否必要?若没有使用微服务架构那么项目运行过程中出现性能问题如何解决呢?假设目前是单体架构,后续如何能平滑迁移到微服务架构?
本期的交流特别邀请了微服务专家:潘志伟 (科技公司技术总监,著作书籍:《架构演变实战——从单体到微服务再到中台》),做客twt社区进行线上微服务架构演变实战赋能交流。
本场交流价值点:
传统企业、或者一直使用单体架构的架构师,当遇到代码冲突严重、项目进度慢、系统性能问题而无法扩容等等一些列研发过程中的问题而想转型微服务架构,那么通过本场交流与学习可以帮助企业管理者或者架构师梳理架构转型的思路,流程和方法,避免架构过程中遇到的各种坑。
分享嘉宾
潘志伟 某科技公司技术总监
阿里云MVP、QCon 演讲嘉宾,拥有十多年的软件架构设计经验,擅长分布式微服务架构设计和中台规划,目前带领研发团队,承担系统的分析、架构设计、实施、演进、团队管理和培训等工作,有独到的团队建设和管理经验。
原创分享:
1、《某互联网金融企业如何从0到4500W用户将单体应用迁移到微服务实践经验》
作者最新书籍出版:《架构演变实战:从单体到微服务再到中台》欢迎扫描订购:
作者原创书籍
《架构演变实战:从单体到微服务再到中台》这本书通过真实案例实战的方式完整地讲述了如何从一个单体架构逐步转型到中台的历程!
本书结构
第一章以一次失败的从单体架构转型分布式架构为案例,以真实的案例的方式介绍单体应用遇到性能瓶颈后如何快速优化升级暂时解决当前问题,匆忙转型升级微服务架构后最终失败的原因。
第二章通过复盘分析架构转型失败的原因,明确企业需要转型微服务架构前首先需要在技术上以及组织架构上做改变,其次在服务拆分环节通过介绍多个实用方法来说明如何正确的拆分服务,最后再利用工具来保障拆分后每个工程结构的一致性,命名符合规范。
第三章介绍服务治理的概念再结合常用的RPC框架,以Dubbo为例从原理开始再到核心代码分析,最后结合实例案例介绍项目中如何使用该框。
第四章、第五章重点介绍单体应用如何一步一步转变为微服务架构,例如单体项目如何平滑迁移到微服务架构并实现流量无损线上,架构升级过程中如何使用多级缓存、消息队列、并行调用机制、熔断降级等技术手段来保障接口的高并发和低延迟特性。
第六章API网关在微服务架构中起着至关重要的作用,本章节介绍微服务的统一入口API网关,从0开始介绍如何搭建高性能API网关,文中介绍了如何采用异步模式来提高网关的吞吐量,再集成熔断降级功能实现API资源隔离以及接口的高可用性。
第七章介绍在微服务架构下的企业应用该如何高效的去测试,通过讲述测试模型的迭代过程来引出契约测试平台需求,并介绍如何搭建满足要求的契约测试平台。为了提高系统的稳定性,简单的业务功能测试肯定不能满足要求,因此在最后的测试环节又引入混沌试验来模拟各种异常场景。
第八章介绍了比较容易忽视的系统容量预估和服务上线的流程,通常面向终端用户的互联网产品上线后应尽可能的避免产生线上问题,通过介绍如何在产品发布环节引入灰度发布机制来提前发现和解决问题。在容量预估环节采用了目前比较成熟的全链路压测方案来真实预估线上系统实际处理能力。
第九章介绍了当企业面临多业务线同时运营时如何把业务线中共性、可复用的能力下沉,形成通用能力给外部系统调用,减少重复造轮子的工作。文中以实际例子为出发点讲述如何自顶而下的去创建业务中台,包括如何去识别共性需求,如何创建的中台团队等。万事有利皆有弊,中台的确对具备多业务线的企业有利,但是弊端也很明显,最后讲述了企业在推行中台过程中存在的弊端。
希望读者能通过本书快速地对微服务架构所涉及的方方面面有一个基本认识,理解其中的优点和不足,并进一步试用和评估。