一言不合上官网简介
企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)以阿里巴巴中间件团队多款久经沙场的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。
EDAS简介
一言不合上官网简介
企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)以阿里巴巴中间件团队多款久经沙场的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。
EDAS 充分利用阿里云的资源管理和服务体系,引入阿里巴巴中间件整套成熟的分布式产品,全面兼容 Apache Tomcat 的 Java 容器,提供高性能的分布式服务框架以及秒级推送的分布式配置管理服务。此外,EDAS 还创新性的提供了分布式系统链路追踪、容量规划、数据化运营和多款经过阿里电商平台长期考验的高可用稳定性组件,帮助企业级客户轻松构建大型分布式应用服务系统。
丰富的二方服务体系EDAS 除了以互联网中间件 PaaS 平台为基础,采用高性能 RPC 框架 HSF 和 Dubbo 作为服务化框架之外,还提供了丰富的二方服务体系。
分布式配置管理
集中式系统变成分布式系统后,如何有效地对分布式系统中每一个机器上的配置信息进行有效的实时管理成了一个难题。EDAS 提供高效的分布式配置管理,能够将分布式系统的配置信息在 EDAS 控制台上集中管理起来,做到一处配置,处处使用。更重要的是,EDAS 允许您在控制台上对配置信息进行修改,在秒级时间内就能够实时通知到所有的机器。
分布式任务调度
任务调度服务允许用户配置任意周期性调度的单机或者分布式任务,并能对任务运行周期进行管理,同时提供对任务的历史执行记录进行查询。适用于诸如每天凌晨2点定时迁移历史数据,每隔5分钟进行任务触发,每个月的第一天发送系统月报等任务调度场景。
分布式事务
全局事务服务(Global Transaction Service,简称 GTS)是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题。该产品支持 DRDS、RDS、Oracle、MySQL、PostgreSQL、H2 等多种数据源,并可以配合使用 EDAS、Dubbo 及多种私有 RPC 框架,同时还兼容 MQ 消息队列等中间件产品,能够轻松实现分布式数据库事务、多库事务、消息事务、服务链路级事务及其各种组合,策略丰富,易用性和性能兼顾。
官网简介太长了,废话连篇,如果你没耐心看的话就别看了。总结成一句话就是,丫是一个分布式服务框架,以前跑在本地现在给你个EDAS跑到阿里云上,什么drds,mq,zookeeper都可以通过edas直接迁移过来。
EDAS的框架是采用了HSF和Dubbo作为服务化框架。HSF和DBubbo是两个强竞争关系的产品,HSF是淘宝的,dubbo是阿里的。11年dubbo贡献给了开源社区,现在dubbo的应用要比hsf的多。
最上层是服务治理和数据化运营。
中间层是RPC服务框架,也就是hsf或者dubbo。
最下层应用管理平台,一些应用部署和运维的事情。
三层加在一起,形成了一个完美的分布式服务框架。
来详细解读一下这三层。
EDAS功能解读
从EDAS官网捞出来的产品功能表
应用管理平台
- 应用基本管理和运维
阿里云上有大量的应用上下线的积累,EDAS提供可视化的管控界面来做这些应用的部署启停上下线等。
- 弹性伸缩
EDAS在阿里云上的资源监控和扩缩容,这种多租户的资源隔离阿里做的最好了,不考虑钱的话我就不需要弹性伸缩,直接给我无限资源好了。
- 主子账户体系
针对用户的企业级特性,EDAS 独创主子账户体系。再进一步的做资源隔离。
- 角色与权限控制
应用的生命周期管理通常涉及研发、运维和机器资源等角色,不同的角色对于应用的管理操作各不一致。因此 EDAS 提供了角色和权限控制机制,方便用户为不同的账号定义各自的角色,并分配相应的权限。
高性能RPC服务框架
- 分布式服务框架
丫用的HSF和DUBBO。有服务发布与注册、服务调用、服务路由、服务鉴权、服务限流、服务降级和服务调用链路跟踪这些功能。这个东西基本上就是为了让其他公司用HSF或者DUBBO的服务能跑到阿里云上。 - 分布式配置管理
DUBBO那些框架的分布式配置管理是要自己外接zookeeper的,EDAS帮你把这些事情给做好了。 - 分布式任务调度
定时任务调度。和spring-quartz基本一个意思 - 分布式事务
官网看的好高大上。丫说这个是。全局事务服务(Global Transaction Service,简称 GTS)是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题。该产品支持 DRDS、RDS、Oracle、MySQL、PostgreSQL、H2 等多种数据源,并可以配合使用 EDAS、Dubbo 及多种私有 RPC 框架,同时还兼容 MQ 消息队列等中间件产品,能够轻松实现分布式数据库事务、多库事务、消息事务、服务链路级事务及其各种组合,策略丰富,易用性和性能兼顾。
其实就是一个JTA的TransactionManager来管理事务。有能一起commit的就commit,不能commit的就手动做些数据步长之类的。
大概就是12345678910TransactionManager transactionManager = ...; //transactionManager.begin(); // 启动事务try {jdbcConn.executeUpdate(sql); // 执行SQL语句,DB写入binlog,但不更新表jmsMQ.send(message); // 发送消息,MQ记录消息,但不进入队列dubboService.invoke(parameters); // 调用远程服务,Provider缓存请求信息,但不执行transactionManager.commit(); // 提交事务,数据库,消息队列,远程服务同时提交} catch(Throwable t) {transactionManager.rollback(); // 回滚事务,数据库,消息队列,远程服务同时回滚}
运维管控与服务治理
- 服务鉴权
HSF 和Dubbo都有服务注册、订阅、调用等。在这些环节上做了服务鉴权来保障安全。
- 服务限流
一个应用可能有多个服务,限流可以从QPS和线程两个维度去调整。不知道这个是怎么做到的。
- 服务降级
这也是dubbo里的概念,比如一个消费者需要依赖某个外部服务,当该外部服务崩溃或者响应时间达到了需要配置降级的时候,降级之后程序再调用该外部服务会直接返回null,以避免因外部服务错误污染自己的程序。
应用可能会有多个外部依赖的服务,EDAS可以根据一个外部依赖服务的响应时间来决定是否屏蔽服务。帮助用户在应对流量高峰时合理屏蔽劣质依赖。
- 自动化压测
EDAS提供了自动化压测工具,刚上线的时候就可以在生产环境上做压测。
- 分布式链路跟踪
阿里总是喜欢把名字起得很高大上。这是 一个监控系统,监控分析系统调用、消息发送和数据库访问等。
- 服务调用监控
对应用的服务调用情况监控,从服务的QPS,响应时间,出错率等角度监控
- Iaas监控
对应用监控,对机器的CPU/内存/磁盘等等硬件信息做监控收集。
总结
EDAS是个针对DUBBO和HSF这两RPC框架的云服务。在这两个框架之外提供了强大的部署、运维、监控等功能,还有一堆阿里云最擅长的资源分配。