开发者学堂课程【开源微服务最佳实践:开源微服务最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/961/detail/14882
开源微服务最佳实践
内容介绍:
一、行业思考
二、微服务引擎
三、最佳实践:MSE+ASM双模微服务引擎
一、行业思考
1、微服务在云原生下的挑战
今年微服务发展新的技术发展层出不穷,包含服务治理、容器化K8S、服务网格等。更多的客户不再满足追求系统的稳定,而是希望新技术的引入可以更多降本增效的价值。很多客户在风险规划体系时更倾向于使用开源软件。但开源框架和中间件只解决研发成本不会直接有开箱集中的效果,并且还会带来以下三个挑战:
(1)稳定性 包括业务自身SLA保障、高可用、多活、容灾
(2)成本 包括开源框架自研成本、微服务组件运维成本
(3)效率 包括白天高峰发布、微服务集成效率
2、云原生微服务发趋势
(1)开源生态、标准化
开源降低了研发成本和效率,标准化使系统上云、换云、新技术的引入更容易及灵活。
(2)后端服务BaaS化 (注册中心、配置中心、MQ 、DB 、Redis)
BaaS是一种新型的云服务,作为应用开发的新模型可以降低开发者的成本,让开发者专注于具体的开发工作,本质上符合现在系统的发展趋势。客户将三维系统从机房搬迁到云上,目的是让基础设施释放劳动力和降低成本,BaaS化的云服务带来了同样的收益。
(3)基础能力与应用解耦、下沉(Java Agent,Sidecar)
微服务的初衷是为了加快业务的快速发展和单元复制,微服务化到了某时间段,业务已经实现了微服务的设计原则,但是一些底层的技术和基础能力,又存在很多耦合的问题,在集成和升级时会出现相应的问题,因此技术组件的解耦和下沉成为了技术新的发展趋势。代表技术为 Java Agent 以及 Sidecar。
二、微服务引擎
微服务引擎(MSE):提供全托管微服务组件服务、无侵入的服务治理能力,帮助用户更方便、更稳定、成本更低的使用开源微服务技术栈构建微服务。包含一下几部分:
(1)治理中心
支持近5年 Spring Cloud 和 Dubbo 的版本,不需要修改代码、配置,并且镜像可以快速接入,接入后提供服务目录、服务测试、限流降级、无损下线,标签路由等能力。
(2)配置中心
全托管 Nacos 服务
配置查询和版本管理·
默认高可用:多可用区部署、自动探活
丰富完善的监控报警
后续 ASM 更丰富、强大的配置能力将迁移至本产品。
(3)注册中心
全托管 Zookeeper/Nacos/Eureka 服务
默认高可用:多可用区部署、自动探活
丰富完善的监控报警
针对特殊组件,不仅可以微服务服务发现,也可以做其他分布式协调工作。
(4)微服务网关
托管 Zuul、Kong、Spring Cloud Gateway
丰富完善的监控报警,免运维
支持手动和自动弹性伸缩
微服务体系打通,实现南北及东西流量统一路由分发以及服务治理
产品优势:
(1)开箱即用
不修改代码、不修改配置、不修改镜像实现零成本接入
(2)云原生
Kubernetes 集群五分钟之内接入
(3)拥抱开源
支持 Spring Cloud、Dubbo 近五年所有版本,可以快速集成。
(4)全托管
免运维、高可用、提供99.95%的稳定性保障
三、最佳实践:MSE+ASM 双模微服务引擎
服务网格代表性的产品,在真正的落地过程中,方便性及管理能力有较大的缺失,用户的学习和理解成本非常高,现有服务网格对比 Java,开源微服务框架通过MSE提供的无侵入式的治理能力也是能够解决耦合的方案,从性能、稳定性、功能上看,java的 agent 更加优秀。服务网格的价值和付出的成本目前在 java 体系中不成正比。在其他场景下,服务网格还是比较好的选择。MSE 结合阿里云现有托管式的服务网格MSE 的产品,形成一个双模微服务引擎的解决方案帮助客户更好的运营和管理微服务。
MSE 提供无差异支持 java 体系微服务及 mesh 体系微服务平台。提供统一视图、可观测性、统一治理。基于 javaaqent 模式,业务方无感知,多语言微服务通过servicemeshsidecar 模式,业务方无感知。
结合微服务组件 BaaS 化(注册中心,配置中心,微服务网关,Istio 管控面)为微服务保驾护航,提供专业能力。