什么是企业级分布式应用服务
企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)以阿里巴巴中间件团队多款成熟的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。
EDAS 充分利用阿里云的资源管理和服务体系,引入阿里巴巴中间件整套成熟的分布式产品,全面兼容 Apache Tomcat 的 Java 容器,提供高性能的分布式服务框架以及秒级推送的分布式配置管理服务。此外,EDAS 还创新性的提供了分布式系统链路追踪、容量规划、数据化运营和多款经过阿里电商平台长期考验的高可用稳定性组件,帮助企业级客户轻松构建大型分布式应用服务系统。
企业级分布式应用服务功能
EDAS 作为应用托管和微服务管理的 PaaS 平台,支持多样的服务框架,提供全应用生命周期管理、服务治理、微服务管理、应用监控诊断等功能。(EDAS 提供的主要功能都可以通过控制台完成。建议您使用 Chrome 浏览器进行控制台操作)
1. 应用托管
您的应用可以部署到 EDAS 的集群(主要为 ECS 集群和容器服务 Kubernetes 集群)及无服务器的 EDAS Serverless 中。如果您有多套环境,还可以使用命名空间进行隔离。
3. 应用生命周期管理
应用部署完成后,可以通过 EDAS 控制台进行其它应用生命周期管理操作。
说明:因部署的集群类型不同,生命周期管理操作有些差异。
4. 服务治理
EDAS 集成了众多服务治理组件,以便应对突发的流量洪峰和服务依赖所引发的雪崩问题,提高平台的稳定性。
- 弹性伸缩:弹性伸缩能够感知应用内各个实例的状态,并根据状态动态实现应用扩容、缩容。在保证服务质量的同时,提升应用的可用率。
- 限流降级:限流降级用于解决后端核心服务因压力过大造成系统反应过慢或者崩溃问题,通常用于例如商品秒杀、抢购、大促、防刷单等大流量场景。
- 健康检查:健康检查对容器与应用进行定时检查和汇报,然后将结果上报到控制台,从而帮助您了解集群环境下整个应用的运行状态,排查和定位问题。
- 灰度发布:灰度发布包括对单个应用的灰度发布和全链路灰度发布。您可以通过灰度发布实现应用新、旧版本的平滑过渡。
5. 应用开发
EDAS 支持基于原生 Spring Cloud、原生 Dubbo 以及 HSF 开发的应用托管到 EDAS 中。
- Spring Cloud:Spring Cloud 框架下开发的应用只需添加依赖、修改很少的配置,即可托管到 EDAS。无需搭建 Eureka 和 Consul,节省部署、运维成本,并能够获取 EDAS 企业级的应用托管、服务治理、监控报警和应用诊断等能力。
- Dubbo:Dubbo 框架下开发的应用只需添加依赖、修改很少的配置,即可托管到 EDAS。无需搭建 ZooKeeper 和 Redis,节省部署、运维成本,并能够获取 EDAS 企业级的应用托管、服务治理、监控报警和应用诊断等能力。
- HSF:HSF 是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。连通不同的业务系统,解耦系统间的实现依赖;统一了分布式应用中服务的发布/调用方式,从而帮助您方便、快速的开发分布式应用;提供或使用公共功能模块,并屏蔽了分布式领域中的各种复杂技术细节。
6. 微服务管理
EDAS 提供服务和服务间调用链的查询功能,帮助您管理分布式系统的中的每一个组件和服务。
- 服务拓扑:通过拓扑图的形式直观的了解不同服务间的相互调用关系及相关性能数据。
- 服务查询:在具体地域及命名空间下,查看应用中的 HSF、Spring Cloud 和 Service Mesh 服务。
- 服务报表:以租户维度展示当前租户内所有应用的所有服务在近 24 小时内的运行时情况,包括服务调用量、调用耗时和调用出错次数。您在这个报表上可以一目了然的看到整体系统的服务之间的对比情况。
- 调用链查询:通过设置查询条件,可以准确找出哪些业务性能较差,甚至异常。
- 调用链详情:基于调用链查询的结果,查看慢业务或出错业务的调用链的详细信息,进行依赖梳理,包括识别易故障点、性能瓶颈、强依赖等问题;也可以根据链路调用比例、峰值 QPS 评估容量。
7. 配置管理
配置管理:EDAS 已经集成了应用配置管理 ACM。您可以在 EDAS 中使用 ACM 对应用配置进行集中管理和推送,还可以基于命名空间在不同环境间进行配置的隔离和同步。
8. 应用监控
- 应用监控:实时监控应用的 IaaS 层资源和服务的健康状态,帮助您快速发现、定位问题。同时支持开通高级监控(业务实时监控 ARMS)。
- 日志管理:无需登录实例就可以查看实例上所部属的应用运行日志。当应用出现异常情况的时候,您可以通过查看日志来排查问题。
- 实时日志:当应用出现异常情况的时候,您可以通过查看实时日志来排查 Pod 相关问题。
- 通知报警:当某些资源使用过度时,通过短信与邮件的方式通知给相应的联系人及时处理线上问题。
9. 应用诊断
基于 HSF 框架开发的应用部署并运行在容器(EDAS-Container)中。EDAS 提供了基于容器的诊断功能,为您提供相应数据来诊断应用运行问题。
- GC:监控当前选择的应用实例发生 GC 的一些性能指标,同时还可以基于所选时间区间来分析当前实例的 GC 情况。帮助您初步判断应用中的某个实例的健康状态,即应用是不存在内存泄漏或者大对象、应用存在大对象、应用可能存在内存泄漏。
- 内存:提供应用实例中 Tomcat 容器所在 JVM 进程的堆 (heap)与非堆(non heap)的统计信息。
- 类加载:提供实时的 JAR 包的加载情况。开发者有时会碰到应用中存在 JAR 包版本冲突的问题,此功能可以很直观的体现出相应的 JAR 加载的路径,从而简化此类问题排查的成本。
- 连接器: Tomcat 连接器指的是 Tomcat 的 XML 配置中的。可理解为每一个的配置为一行拉取出来的信息。该视图提供最近十分钟之内对应连接器的运行情况。
- 对象内存分布:选择系统类、Java 基本对象类和类加载相关。然后会基于选择的 3 个大类,以饼状图和列表的形式展示具体类的对象个数、占用空间,以及在占系统总内存的百分比。
- 方法追踪:方法追踪采用 JVM 字节码增强的技术,对选中方法的所有方法调用增加必要的耗时与调用序列记录的增强,从而达到观看执行过程中的具体执行序列的目的。帮助您在应用运行时出现问题时,进行快速的问题排查。
- 线程热点:线程热点包括获取线程快照和分析调用统计两个功能。
- 获取线程快照
- 向目标实例获取当前所有线程的栈帧,类似于 jstack 命令;获取到线程栈后,将过滤已经识别出的空闲的线程,如:HSF、Tomcat、GC 等;剩下的线程中,为避免过大的开销,默认只为您取回了30 个线程的数据。
- 分析调用统计
- 统计分析一段时间内应用中的方法调用,同时给出方法调用和调用关系(调用栈), 最终结果提供两种维度的视图(树状与火焰图状),同时自动高亮显示您的业务方法,让您迅速定位到耗时占比最多的业务方法的调用源头。
- Druid 连接池监控:当应用的数据连接池采用 Druid 数据库的时候,EDAS 将提供数据连接池和 SQL 执行行为的监控。
- Commons Pool:当应用或应用的类库中采用 Commons Pool2(2.0 版本)的时候(如 Redis 客户端 Jedis、Commons DBCP2 连接池),EDAS Commons Pool 监控组件将监控池的配置及使用情况。
10. 组件中心
组件中心围绕分布式、微服务体系,重点建设服务集成和整合能力,进而实现 PaaS 平台开放的生态体系。您需要借助组件,完成相关功能。
微服务组件
- 云服务总线 CSB:在 EDAS 控制台创建 CSB 专享实例,用来管理和控制目标环境内应用对外的服务开放,也可以引入外部服务并进行管理控制;开放 VPC 内的 EDAS 应用,用于在自有开发环境通过公网来测试联调阿里云 VPC 内的 EDAS 应用。
- 业务实时监控服务 ARMS:业务实时监控服务 ARMS(Application Real-Time Monitoring Service)是一款阿里云应用性能管理(APM)类监控产品。借助 ARMS 可以迅速便捷地为企业构建秒级响应的应用监控能力。
- 分布式任务管理 SchedulerX:SchedulerX 是一款分布式任务调度产品。它为您提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
应用诊断组件
目前 EDAS 提供的诊断组件包括方法跟踪、日志模块、性能分析模块、Druid 数据库连接池监控和 Apache Commons Pool 监控。这 5 个模块均提供对应用容器的在线诊断能力。
11. 系统管理
- 主子账号体系: 通过主子账号体系。您能够根据自己企业的部门划分、团队划分和项目划分在 EDAS 平台上建立对应的主子账号关系;同时,ECS 资源也以主子账号关系进行划分,便于用户进行资源的分配。
- 角色与权限控制:应用的生命周期管理通常涉及研发、运维和机器资源等角色,不同的角色对于应用的管理操作各不一致。因此 EDAS 提供了角色和权限控制机制,方便用户为不同的账号定义各自的角色,并分配相应的权限。
- 服务鉴权:为保证您每一次分布式调用的稳定与安全。在服务注册、服务订阅以及服务调用等每一个环节,都进行严格的服务鉴权。
企业级分布式应用服务的产品优势
EDAS 支撑了整个阿里巴巴99%以上的大规模应用系统,其中涵盖了包括会员、交易、商品、店铺、物流和评价在内的所有在线核心系统,在稳定性、可靠性等多个维度具有独特的优势。
1. 更可靠
- 阿里巴巴近10年使用与沉淀的核心技术产品
- 支持阿里巴巴所有核心应用稳定运行
- 历次双十一大促考验
- 完善的鉴权体系保证每一次服务调用的安全可靠
2. 更全面
- 完善的 PaaS 平台支持应用生命周期的管理
- 完整的服务治理解决方案管理分布式服务
- 全面的应用诊断排查系统轻松定位故障根源
- 线上压测,容量规划轻松获取线上机器运行性能指标和实时运行水位
- 自动弹性伸缩从容应对突发流量高峰
3. 更深入
- 深入业务指标,实现全盘报表
- 立体化多维度监控,实现全息排查
- 链路跟踪洞察每一次分布式调用
- 依赖分析剖析每一处系统瓶颈
4. 更开放
- 多款互联网中间件已经开源
- 捐献 Apache 顶级项目,极佳的业界口碑
- 无捆绑,可以轻松使用开源软件替换
企业级分布式应用服务应用
在云环境中,应用发布与管理会变得十分复杂。本地开发完成的应用需要登录到每一台服务器进行发布和部署;后续还会有应用的重启,扩容等。服务器的不断增加对于运维人员将是一个极大的挑战。
针对这个场景,EDAS 提供了一个可视化的控制台,无论集群规模多大,都可以在控制台上轻松地进行应用生命周期管理。
当集中式应用转变成分布式系统后,系统之间的相互可靠调用一直以来都是分布式架构的难题,比如网络通信,序列化协议设计等很多技术细节需要确定。
EDAS 提供了一个高性能的 RPC 框架,能够构建高可用的分布式系统,系统地考虑各个应用之间的分布式服务发现、服务路由、服务调用以及服务安全等细节。
应用开发完毕部署到生产环境之后,通常需要对应用运行状态进行一些监控,比如 CPU 使用率、机器负载、内存使用率和网路流量等。但此类基础监控通常满足不了业务需求,比如系统运行变慢却无法定位瓶颈所在,或者页面打开出错但是无法排查具体调用错误等。
对此,EDAS 提供了一系列系统数据化运营组件,针对分布式系统的每一个组件和每一个服务进行精细化的监控和跟踪,建立数字化剖析系统,帮助用户精准的找到系统瓶颈所在。
随着互联网+的不断兴起,“科技+行业”的融合创新已经成为行业转型的核心策略。比如金融+科技造就了众安保险、天弘基金、网商银行等创新金融企业,塑造了行业转型的标杆。为了能够更好地支撑业务的创新,如何塑造企业的共享业务中台,如何支撑互联网架构下研发工程效率的提升,将会是企业遇到的核心挑战。面对这些挑战,阿里巴巴旗下一站式研发提效平台云效和阿里巴巴集团中间件EDAS联合推出了一整套研发平台支撑解决方案,初步实现DevOps闭环。
EDAS DevOps 版是业内领先的面向企业的一站式研发效能平台,通过项目管理流程和专项提效自动化工具,真正实现24小时持续集成持续交付。
相关名词解释
- Ali-Tomcat:Ali-Tomcat 是 EDAS 中的服务运行时必须依赖的一个容器,主要集成了服务的发布、订阅、调用链追踪等一系列的核心功能,无论是开发环境还是运行时,均必须将应用程序发布在该容器中。
- Dubbo:Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
- EDAS:企业级分布式应用服务(Enterprise Distributed Application Service)。以阿里巴巴中间件团队多款久经沙场的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。EDAS 充分利用阿里云的资源管理和服务体系,引入阿里巴巴中间件整套成熟的分布式产品,帮助企业级客户轻松构建大型分布式应用服务系统。
- EDAS Agent:EDAS Agent是 EDAS 中安装在用户 ECS 上,主要用于 EDAS 服务集群与部署在相应的 ECS 上的应用程序之间进行通信的 Daemon 程序,在运行的过程中主要承担应用管理、状态回报、信息获取等功能;同时也是 EDAS 控制台与用户应用程序之间信息沟通的主要桥梁。
- EDAS RPC 服务:EDAS RPC 服务提供对 Dubbo 框架的支持。一个使用 Dubbo 框架开发的,并以 WAR 为部署方式的应用,可以无缝在 EDAS 平台进行应用的发布和管理,并使用所有 EDAS 所提供的服务治理和数据化运营功能。
- EDAS 应用生命周期:应用是 EDAS 管理的基本单位,一个应用下面通常包含了多台机器。EDAS 提供了完整的应用生命周期管理机制,可以完成应用从发布到运行过程的全面管理,包括应用创建、部署、启动、回滚,扩容缩容和停止下线等操作。
- EDAS 鹰眼监控系统:EDAS鹰眼监控系统用于分析分布式系统的系统调用、消息发送和数据库访问,从而精准发现系统的瓶颈和隐患。
- EDAS 应用实例数限额:表示主账号及其名下的子账号所拥有的所有应用下面的实例数上限。付费账号在给主账号分配此限额的时候,其下的所有主账号的限额之和不能大于付费账号的总应用实例数限额。
- IaaS 基础监控:EDAS 的监控功能之一,能够针对应用的运行状态,对机器的 CPU、内存、负载、网络和磁盘等基础指标进行详细的监控。
- SchedulerX:SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品。用户在应用中依赖 SchedulerX-Client,并在 SchedulerX 控制台创建定时任务,进行相应的参数配置后,启动该应用就可以接收到定时任务的周期调度。SchedulerX-Server 集群为调度触发提供高可用性和高稳定性的保证,并且可以实现对用户客户端机器集群进行分布式调度。
- 分布式链路跟踪:EDAS 鹰眼监控系统能够分析分布式系统的每一次系统调用、消息发送和数据库访问,从而精准发现系统的瓶颈和隐患。
- 分布式配置管理:EDAS 提供的功能,将分布式系统的配置信息在 EDAS 控制台上进行集中管理,可以实时增加、修改、删除配置,并将配置更新在全局范围或者应用内部进行推送。
- 分布式任务调度:任务调度服务允许用户配置任意周期性调度的单机或者分布式任务,并能对任务运行周期进行管理,同时提供对任务的历史执行记录进行查询。适用于诸如每天凌晨2点定时迁移历史数据,每隔5分钟进行任务触发,每个月的第一天发送系统月报等任务调度场景。
- 服务鉴权:HSF 服务框架致力于保证用户每一次分布式调用的稳定与安全。在服务注册、服务订阅以及服务调用等每一个环节,都进行严格的服务鉴权。
- 服务降级:与服务限流相反,每一个应用会调用许多外部服务,对于这些服务配置降级规则可以实现对劣质服务的精准屏蔽,确保应用自身能够稳定运行,防止劣质的服务依赖影响应用自身的服务能力。EDAS 从响应时间维度对降级规则进行配置,帮助用户在应对流量高峰时合理地屏蔽劣质依赖。
- 服务调用监控:EDAS 的监控功能之一,能够针对应用的服务调用情况,对服务的 QPS、响应时间和出错率进行全方面的监控。
- 服务限流:EDAS 可以对每一个应用提供的众多服务配置限流规则,以实现对服务的流控,确保服务能够稳定运行。限流规则可以从 QPS 和线程两个维度进行配置,帮助用户在应对流量高峰时,确保系统能以最大的支撑能力平稳运行。
- 容量规划:将性能压测工作日常化之后,应用的负责人能够非常方便的看到应用的性能指标,并根据这些性能指标,结合当前系统运行水位,实现对应用精准的容量规划。
- 容器诊室:即容器监控,包含对 Tomcat 容器的各项监控。
- 自动化压测:独创的自动化压测工具模型,能够帮助客户将性能压测融入到日常生活中。值得一提的是,所有自动化压测的流量,全是生产环境真实流量,通过对服务权重的控制,在保证稳定的前提下,真正意义上做到线上压测。
关于企业级分布式应用服务EDAS的指南:企业级分布式应用服务EDAS使用攻略
(课程内容主要讲解企业级分布式应用服务EDAS相关技术和使用方法,能帮助学员快速掌握企业级分布式应用服务EDAS的使用,适合云计算开发者学习)
阿里云开发者社区全面升级,一站式体验,用得更爽:(阿里云开发者社区首页)