微服务是一个经久不衰的热门话题,很多国内的公司选择使用 Dubbo、SpringCloud 作为自己公司内部的微服务框架,而在 EDAS 的赋能下,这些微服务框架获得了更加强大的治理能力。
本次分享将主要围绕以下四个方面展开:
· EDAS介绍
· 微服务开发
· 服务查询
· 金丝雀发布
一、EDAS介绍
什么是EDAS
企业级分布式应用服务 EDAS(EnterpriseDistributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。
以Dubbo举例说明:
EDAS托管,省去了很多步骤,节省了一些无关的开发运维。
EDAS支持的版本
微服务开发
1、Dubbo
支持2.5x 2.6x 2.7x
2、SpringCloud
支持D版本以及以上版本
3、HSF(不建议使用,阿里内部,未开源)
EDAS原生托管Dubbo
消费者与提供者之间存在服务需要治理,EDAS托管之后,提供服务注册与发现、配置管理、微服务治理平台的功能。开发者,无需关心服务治理,只要进行消费调用即可。
EDAS Dubbo 组件 & 开源组件矩阵
EDAS注册中心,采用的Nacos注册中心。用户如果采用的Nacos,那么可以无缝迁移;如果采用的ZK之类的注册中心,则有两种方案,可以切换到Nacos注册中心,或者 沿用原注册中心。
二 微服务开发部署
部署非常便捷,可以提供两种方案选择
- 控制台上传、部署
2.EDAS提供的IDEA插件(CloudToolKit),上传、部署
EDAS为应用,完全有了托管,对于客户,无需关心扩容等运维事项。
三 服务查询
应用部署完毕之后,点击服务查询,就清晰地看到部署的实例情况
点击实例
可以非常清晰直观的展示出应用部署情况。
EDAS托管之后,不管Dubbo版本,对于元数据都有相关的显示。
通过接口元数据,可以很明晰的看出对外暴露的所有的服务接口。
与Dubbo Admin区别
DubboAdmin是通过与注册中心协同,获取全部的注册信息,去管理应用情况
弊端:
- 无法扩展
- 因存储在内容,性能也会存在不足
EDAS合理做了改变
与Nacos 区别
Nacos的很多接口的调用信息显示,没有完全开源出来,所以也是有些不是很直观
Nacos更多的是注册中心的控制台,对于服务治理,是很难解决的
开源实现总结:
总的来说,服务查询的开源实现能够解决一定程度的问题,但同时也有一定的局限性
- Dubbo Admin 有版本的限制,仅支持Dubbo 2.7+
- Dubbo Admin 同步了注册中心全量数据,资源消耗大,由于内存限制,无法横向扩展,实现并不优雅
- Nacos 控制台提供的服务信息是注册中心视角的服务,并非微服务视角的服务
- Nacos 控制台缺少与服务治理其他能力的联动,本质上还是注册中心的功能
- 开源实现无法满足混合部署类型服务的诉求,部分功能可能多种微服务框架并存
EDAS服务查询实践
EDAS采用无侵入式的Agent方案对托管微服务应用进行微服务治理
无侵入方案通过Agent技术来实现,通过字节码增强技术,运行时对框架代码进行增强,例如服务创建、服务注销时进行拦截,上报给EDAS
四 灰度发布
选择金丝雀发布,即可部署需要进行灰度的包
五 微服务增强
成本:无需自行运维Eureka、Zookeeper、Consul等中间件组件,可以直接使用EDAS提供的服务发现与配置管理能力。
部署:服务优雅上下线和分批发布功能,让应用部署可配、可查、可控
服务治理:EDAS提供了服务查询、条件路由、黑白名单、标签路由、动态配置、负载均衡、权重配置和统一配置管理,可以对应用进行全面的服务治理
弹性伸缩:EDAS提供了弹性伸缩功能,可以根据流量高峰和低谷实时对应用扩容和缩容
限流降级:EDAS提供了限流降低功能,保证应用高可用
流控:EDAS提供了高级监控功能,除了基本的实力信息查询外,可以查询微服务调用链、服务调用拓扑和慢SQL
总结:
- EDAS对现在的Dubbo、SpringCloud开源功能作了沿用以及相关的拓展
- 在上述基础上,EDAS总结出用户更多呼声比较大的需求功能,比如开源中没有实现的,或者因为机器限制等不方便实现的功能,EDAS都已经覆盖性的作了实现。
答疑
问题1:灰度的最小粒度?
针对SpringCloud用户,会根据path设置,外加EL表达式的新建规则,去粒度控制
针对Dubbo用户,会根据方法配置,外加EL表达式的新建规则,去粒度控制
问题2:灰度的实现机制?
Dubbo里边会有很多的filter,SpringCloud会有很多agent,EDAS会自动在启动时,把配置注入到对应的位置,以此来实现灰度
问题3:可以支持Dubbo版本?
原则上支持Dubbo 2.5 2.6 2.7,是可以承诺的,但是之前的版本,也是可以使用,但是不承诺所有功能一切正常
问题4:EDAS的定位,后续补充产品?
EDAS构成分为,微服务解决方案、应用托管解决方案、容器托管解决方案
<end>