开发者学堂课程【微服务治理技术进阶:【直播】微服务治理技术的原理介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1033/detail/15310
【直播】微服务治理技术的原理介绍
内容介绍:
一、全书内容简介
二、微服务治理技术原理介绍
三、无损上下线解决方案
四、微服务全链路灰度解决方案
五、微服务 Serverless Pass 解决方案
趋势和展望
业内首本微服务治理技术白皮书:
·阿里巴巴电商体系10余年的微服务实践经验沉淀。
·阿里云 MSE 产品数百家企业客户成功案例总结。
·覆盖︰基本概念介绍、底层技术原理、场景解决方案、最佳实践。
·不仅是一本深度阐述微服务技术的书,更是一本解决微服务落地难题的书。
·高效构建完整的微服务治理体系,提示开发效率和线上稳定性。
这本书它不仅包含了阿里巴巴电商体系10余年之间的一些微服务治理的一些经验的沉淀,同时也包含了阿里云产品 MSE 微服务引擎这个产品数百家企业成功落地案例的一些总结。这本书除了覆盖最基本的原理介绍以及微服务的一些底层技术原理的阐述之外,还包含了阿里电商体系和向客户通用的微服务痛点的总结和抽象,将其整理成了11个微服务场景的解决方案,也把这些方案如何借助于阿里云产品解决这些痛点形成了最佳实践进行分享,这本书不仅是一本深度阐述微服技术的书,更是一本解决微服落地难题的书。这本书帮助大家高效去构建完整的微服务治理体系以及提升线上的开发效率和稳定性。
一、全书内容简介
·微服务治理背景和趋势
业务发展离不开服务治理保驾护航
服务治理在云原生场景下的挑战
微服务治理的发展趋势
服务治理的区分
·微服务治理发展历史
服务治理技术概述
SDK 微服务治理
Java Agent 服务治理
Service Mesh 微服务治理
·微服务场景解决方案
线上发布稳定性解决方案
全链路灰度解决方案
可观测增强解决方案
应用配置解决方案
限流降级解决方案
开发测试提效解决方案
敏捷开发解决方案
无缝迁移上云解决方案
注册发现高可用解决方案
应用安全解决方案
异构微服务互通解决方案
Serveriess Paas 解决方案
·解决方案最佳实践
线上发布稳定性最佳实践
全链路灰度最佳实践
应用配置最佳实践
限流降级最佳实践
开发测试提效最佳实践
敏捷开发最佳实践
无缝迁移上云最佳实践
服务发现高可用最佳实践
Serverless 微服务治理最佳实践
·客户实践案例
物流行业:菜鸟 CPaas 平台微服务治理实践
互联网行业:来电科技微服务治理实践
机器智能行业:云小蜜 Dubbo3 微服务治理实践
游戏行业:广州小迈微服务治理实践
全书分为六章,第一、二章介绍微服治理的背景以及历史和趋势,第三章开始将阿里巴巴集团以及云上数百家客户的一些成功落地的方案的总结,抽象成了10余个微服务产品的解决方案,其中包含线上发布稳定性、全链路灰度、可观的增强以及限流、降级、开发、测试、提效、敏捷开发、无缝迁移上云、以及 Serverless 等11个解决方案,第四章中详细阐述了如何借助于阿里云产品解决这些微服务场景方案的一些痛点,详细介绍第四章借助于阿里云的龙溪服务产品 ACK 以及微服务产品MSE 微服务引擎这两个产品演示,在云原生的场景下,如何解决微服务产品的痛点,可以根据书籍中的提示做操作实践。从应用 demo 的部署、控制台的一些配置以及去开发、可观测,从整个流程体验如何解决微服务产品的痛点,同时最佳实践中 demo 以及部署的 yaml 文件都已经开源,可以根据书籍中的地址访问项目查看源码以及部署的 yaml 文件,第五章找到一些已经授权公开的客户,阐述客户落地中最佳实践的一些案例分享,第六章介绍对全书一个总结以及微服务未来趋势的一些展望。
两个下载的途径,扫左边的二维码,可以直接钉钉或支付宝登录,就能直接下载到本地的,建议大家使用钉钉或者支付宝扫码,其他的 APP 也是可以的,只不过流程可能会繁杂一点,也可以通过扫码关注公众号,回复关键词技术白皮书,获取下载地址。
二、微服务治理技术原理介绍
200自研微服务
·依赖冲突难管理
·SDK 升级成本高
2013Fat-SDK Pandora
·基于隔离容器
2019- ·运维治理效率大幅提升
2020- OneJava Agent
·Proxyless Mesh
·无侵入
·升级成本
·全面兼容开源
2019- One Mesh
无侵入
多语言
双模微服务治理
阿里云内部从08年开始做自研微服务的尝试和改造,在开始给业务方推的过程中,发现了一些问题,自己做了服务框架、数据库、消息队列这些中间件,但发现业务放在使用的时候,依赖了很多中间件提供的 SDK,之间有依赖冲突,比较难以管理,经常需要开发者手动排除依赖冲突等,SDK 升级的成本会比较高,中间件开发者推动业务开发者升级 SDK,都会有一些问题,13年之后推出了基于类隔离的应用容器潘多拉,不管是业务开发者还是中间件的开发者,只需要对接潘多拉的版本就可以,极大的提升了运维治理的效率。随着商业化的发展,发现对于开源的解决方案并没有潘多拉这样一站式的解决方案,推出了 OneJava Agent 治理体系,通过OneJava Agent 技术,将增强的业务逻辑注入到业务进程中,可以实现用户不需要改一行代码,以无侵入的方式去使用微服务治理能力,升级成本也是零升级成本,而且能够完全兼容开源的 SDK 或框架等。同时在19年发现有很多现有的服务开始用多语言,比如用勾浪等语言做开发,需要一种无侵入的方式,OneJava Agent 方式只支持 JAVA,采用了 serviceless one mach 模式做一些治理。以商业化最成功的 OneJava Agent 模式为例介绍
业务无侵入、无感知
0升级成本
全面兼容开源
更轻量:不改变现有业务架构
在一个 JVM 中,有业务代码,也有 One Java Agent 的代码,One Java Agent 作为底座,提供了插件管理、插件隔离、并行启动的能力,在这些能力的基础上,各个中间件的子团队,如监控团队会提供监控能力作为插件,测试团队提供测试能力、服务治理能力等,限流能力和混沌工程能力也会一并提供,用户只需要用开源的框架和 SDK 作为标准的接入,各个中间件团队使用这些能力提供给业务方,好处是业务无侵入无感知,业务的升级成本也比较低,更重要的是如果是使用开源框架,不需要改一行代码,也可以接入现有的服务治理体系中,即更轻量,不会改变现有的业务架构
三、无损上下线解决方案
据统计,微服务应用开发运维过当中的事故,主要发生在一个应用的上下线过程当中,如何实现一个应用发布过程中上下线无损,是微服务治理中一个重要主题,微服务治理白皮书当中做了详细的介绍,相关内容的一个原因,在这里做一个简单介绍。
上图是常见的微服务的调用过程,消费者通过注册中心去感知提供者 b,正常的第二步当中,消费者 a 是通过一个像 spring cloud 的框架,会通过一个定时的注册中心拉取服务实例列表,再去发起调用,像 spring cloud,默认是30秒,提供者下线过程中不能被消费者 a 实时感知到,要等到消费者 a 下一次到注册中心拉取实例列列表,才能感知到服务提供者 a 的一个下限,因此会出现流量的有损,白皮书当中,对常见业界的一些微服务下线过程中的解决方案进行了详细的介绍,比如在下线过程中,通过主动通知,还有延迟等待、延迟自适应等待等一些机制去实现实例下限过程中的流量无损,比如一个成熟的解决方案,提供者 b 接收到一个下限命令后,不会马上下线,是通过主动通知、主动注销,让消费者能够实时的感知到提供者 b 下线的一个动作,消费者再去拉取最新的一个提供者实例列表,在下一次调用时,避免去调用已下线的实力,从而实现应用下线过程中的无损,除了无损下线以外,无损上线也是为服务治理当中的一个普遍的诉求,在框架的设计中,延迟加载其实是框架设计中的一个重要原则,应用在初始化过程中相关处理请求的一个类,不会在应用初始化阶段就进行一个类加载,然后初始化,它是等到第一次处理请求时,才会进行相关的类加载和初始化。
比如像 spring cloud 框架当中的 rest time lay 发起远程调用时,第一次处理请求的耗时是后续处理请求耗时的几十倍之多,刚启动的一个实例上线之后就处理线上大量的流量,会出现大量请求的处理,响应来不及,出现大量请求的阻塞,资源耗尽,甚至会导致一个应用实例的档机等一些问题。因此业界常用的一些解决方案分批发布,延迟注册,还有像小流量预热等一些内容,在白皮书当中都进行了一个详细的介绍,上图右下角的图像,是阿里云微服务治理团队提出的一个小流量预热方案,让刚启动的应用不直接就处理线上大量的流量,通过负载均衡时做一个小流量预热的方案,让刚启动的实例能够处理请求的一个量缓慢的增加对刚启动的实例进行保护,实现应用上线的无损。更多详细的内容欢迎大家在书中阅读相关内容
四、微服务全链路灰度解决方案
介绍微服务全链路灰度的一个完整解决方案,具体详细的可以自己下载电子书来进一步进步实践跟了解。
1.概念
·泳道
·基线环境
·流量回退
·泳道组
首先了解全链路灰度的一个概念,提出了四个概念嘛,其实也嗯,也是,比较常见的一些概泳道,是一组项目版本隔离的一种应用环境,只有满足了流控规则的流量才会进入到对应的泳道中,并且流量会在泳道中闭环,第二块是一个基线环境,基线环境是未达标的一个应用,可以看到上面未达标的交易中心与商品中心,其实就是一个基线环境,也就是线上的一个稳定环境。流量回退,是说当我们的流量进入到泳道组中,当发现泳道组中可能部分应用是没有基线环境的全部应用,流量是会回到基线环境中,当后续如果流量继续有对应的标签的话,它是会优先找到那些标签的流量,泳道组其实是泳道的一个集合,上图是一个全链路灰度的一个最简单的架构图,流量从入口往外进入,开始翻流,要进行一个全链路灰度发布时,只要对应用达标,并且在控制台创建一个泳道就会实现,只要简单的操作就可以实现一个全链路灰度的能力,产生全链路灰度的能力。