在上一篇中,我们大致了解了云原生的发展史和基础概念,这一篇主要来了解下阿里云应用托管平台EADS的基础概念和基本能力。
一、EDAS拥有哪些能力?
EDAS,是Enterprise Distributed Application Service的缩写,即企业级分不少应用服务。它一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持Dubbo、Spring Cloud 等微服务运行环境。总体来说,EADS平台拥有以下能力:
从图中可以看出,无论是资源的弹性伸缩,还是微服务的治理与监控,EADS都提供了全面的支持。
EDAS提供了系统级的操作界面,用户通过控制台可以实现【资源管理】、【应用生命周期管理】、【运维管控及服务治理】、【立体化监控及数字化运营】等。
对于微服务架构师来说,一个清晰的服务拓扑和链路监控大盘是相当重要,EDAS提供了从应用、中间件,到数据库调用的完整链路查询展示,方便架构师或运维排查系统问题。
二、EDAS的服务化基础设施
EDAS的服务化基础设施包括:
- 分布式任务调度服务
分布式任务调用平台SchedulerX 允许用户配置任意周期性调度的单机或者分布式任务,秒级触发,高可用容灾,历史调度查询。适用于诸如每天凌晨2点定时迁移历史数据等任务调度场景,目前在阿里内部,任务个数多达数十万个。
- 实时配置推送服务
提供高效的分布式配置管理,能够将分布式系统的配置信息在EDAS控制台上集中管理起来,做到一处配置,处处使用,秒级推送,目前在阿里内部,日均推送数亿次。
- 分布式事务处理
阿里巴巴自主研发分布式事务组件TXC,突破性的解决了分布式事务处理的难题,保障每一次分布式服务调用、消息收发和数据库操作都有事务保障。简单易用业务无侵入。从笔者的个人经验来看,这是目前微服务架构领域的重+难+坑点所在。
三、EDAS应用全生命周期管理
在微服务领域,框架技术本身已经不再有太高的门槛,但是一线架构师在生产实践过程中仍然会碰到很多问题。比如,在版本升级时如何做到优雅停机和批量发布,系统如何根据流量来做自动弹性伸缩等等。单一解决这类问题,业界已有不少方案,但是假如能提供系统化,工单化、界面化的解决方案,将会减少很多工作量。
EDAS在解决这类问题时,提供了整套的应用全生命周期管理的方案,如下:
架构师可以通过界面化的方式,解决应用实例的生命周期管控。由于每家公司在资源使用方面、流程方面会有差异,EDAS支持各个生命周期的脚本挂载,来解决这些差异化。
四、EDAS灰度发布和流量管控
只需为要求灰度的部分应用准备实例资源,不用将业务系统整体再搭建一套,支持多重灰度,允许不同的应用有各自不同的灰度控制,甚至允许同一个应用同时参与多个灰度控制支持链路灰度,允许多个应用同处于一个灰度控制,上游环节识别出来的灰度流量,经过非灰度的中间应用环节,在下游环节仍可路由到对应的灰度应用实例。
五、EDAS应用监控及故障排查能力
前面提到过,EDAS提供完整的链路监控能力。更深入的讲,其实EDAS提供的是全链路监控+排障能力。作为架构师,除了要了解各个微服务节点的链路稳定性,在系统出现异常情况时,需要拿到第一手的快照数据,以便还原故障现场。这里笔者汇总了一下常用的功能:
- 服务和接口监控
用于监控应用下的接口调用详情,包括SQL分析、NoSQL调用分析、异常分析、错误分析、链路上下游和接口快照。另外,当某段代码出现异常时,通过阿里鹰眼系统,可以看到详细异常信息:
- 应用故障线程分析
线程分析功能提供线程粒度的CPU耗时和每类线程数量的统计,并且每5分钟记录一次线程的方法栈并聚合,可真实还原代码执行过程,快速定位线程问题。
EDAS也提供系统资源层面的监控,比如CPU、内存、网络、磁盘等,这里不再赘述。