剖析阿里企业级分布式应用服务EDAS架构

简介:

企业级分布式应用服务与传统IOE架构的区别

 

 

> > > >
 

传统IOE架构

 

 

传统IOE架构

 

随着时间推移,在出现新业务时,开发人员有两种应对办法。

  • 在原应用上增加新业务,将原本较小的应用慢慢扩充成很大的应用;

  • 另起炉灶,重新创建针对新业务的新应用。

 

第一种只适用于业务较少的情况,而在新业务不断增加的情况下,增加新应用也就成了必须。而在这种传统架构中,新增的应用需要一一与原有的底层数据库相连,导致每个应用都需要连接多个数据库。

 

此外,在传统IOE架构中:

  • 每个应用彼此没有太大关系,按烟囱式排列,唯一的共通点在于都与底层的数据库相连;

  • 所能处理的应用个数通常比较少,从几个到几十个不等。

 

总结:在传统IOE架构中,每个应用都比较庞大,同时需要连接多个数据库;架构中的应用数量较少,应用与应用之间的关系简单。

 

> > > >
 

大型分布式应用

 

 

大型分布式应用

 

  • 应用彼此间存在复杂的调用关系;

  • 架构中可管理的应用多,可能达到成百上千个应用。

 

其优点在于:这种架构具有良好的可扩展性;而缺点在于管理与运维比较困难,另外由于应用数量多,随着业务增长,应用服务器从十台增加到上百台上千台,这时业务系统故障与机器故障就一定会成为常态。

 

传统“中心化”系统与阿里的“去中心化”系统架构的区别

 

 

> > > >
 

传统“中心化”(ESB)系统架构

 

 

传统中心化系统架构

 

  • 服务调用者与服务提供者通过企业服务总线相连接;

  • ESB成为瓶颈:无论在性能上还是成本消耗上,ESB都会导致瓶颈出现。

 

> > > >
 

阿里“去中心化”系统架构

 

 

阿里“去中心化”系统架构

 

开发这个架构的初衷是为了支撑分布式应用,为了让整个业务系统的扩展没有瓶颈,只需按照业务发展需要进行扩展;上图是最早的雏形。后面为了完善该架构,又做了很多工作,下面将详细说明。

 

EDAS服务调用

 

 

> > > >
 

服务接口可视化:让分布式应用不再是黑盒

 

 

在最初的架构中,由于看不到任何的数据或者发布了什么服务,开发人员也并不明确每个应用具体包含什么服务,这就像一个黑盒子,所有内容都是一团迷雾。

 

EDAS在线平台

 

将服务接口可视化之后,在应用启动时将自动完成服务注册,所发布和消费的服务可以在EDAS平台在线查看,所有内容一目了然。

 

> > > >
 

EDAS服务调用的安全性

 

 

6.jpeg

EDAS服务调用结构

 

普通框架是没有安全性可言的,任何人只要知道地址就可以通过服务接口随意进行调用。为此我们针对三种维度的安全性做出了控制:在发布、订阅和调用服务时必须使用合法的安全令牌(access key/secret key)。

 

  • 服务提供者在服务注册中心发布,需要权限AK;

  • 服务调用者获得服务提供者的IP,需要授权;

  • 服务调用者知道IP,需要调用时,需要正确的AK。

 

此外,授权数据会下发到服务机器中,避免造成性能瓶颈。

 

EDAS应用发布

 

 

> > > >
 

传统集中式模式

 

 

7.png

传统的应用包下载模式

 

  • 应用包通过中间文件服务器下载,需受限于其网络带宽;

  • 能够发布的机器数量较少。

 

> > > >
 

P2P流式应用包分发模式

 

 

8.png

P2P应用包分发模式

 

  • 通过EDAS发布控制中心下载;

  • 类似P2P下载模式,可快速提供任何一个下载点;

  • 支持大规模应用集群发布。

 

> > > >
 

效率对比

 

 

随着所发布的应用实例增多,两种发布方式的效率对比如下:

 

9.png

两种发布方式的效率对比

 

传统集中式(黄色):随着发布集群规模扩大,耗时急剧增长;P2P流式:采用EDAS燎原发布系统,随着应用实例的增加,发布的时间几乎保持不变。

 

EDAS扩容

 

 

EDAS提供简单方便高效的应用扩容服务。在传统模式中,扩容需运维或开发人员手动布置环境、安装GDP等等;而在P2P流式中,一键即可扩容,只要机器资源足够,在EDAS平台点击“应用扩容”即可完成。

 

10.png

一键扩容界面

 

EDAS数据化运营

 

 

> > > >
 

立体监控服务

 

 

11.jpeg

立体监控服务

 

EDAS监控服务三个层面的监控数据:资源、容器和应用。

  • 系统资源:负载、CPU、内存、 磁盘、网络

  • 容器:堆内存、类加载情况、线程池、连接器

  • 应用:响应时间、吞吐率、关键链路分析

 

其中:

 

系统资源监控

 

12.png

系统资源监控界面

 

以应用/单机的视角来对基础资源消耗进行监控:

  • 可以看到应用下所有节点的平均负载;

  • 通过技术监控,及时发现问题;

  • 可以配置报警规则,有异常时快速报警。

 

容器监控

 

13.jpeg

容器监控界面

 

实时采集容器运行的监控指标,为应用运行环境问题诊断提供依据:

  • 堆内存与非堆内存使用情况;

  • 类加载情况;

  • 线程运行情况;

  • 连接器情况。

 

应用实时监控

14.jpeg

应用监控界面

 

监控服务接口的调用量,分布式系统服务的承载能力等,并将其数据化:

  • 监控所有服务接口、方法的实时调用情况,调用链的实时查询;

  • 快速感知系统流量变化,找出系统瓶颈;

  • 执行实时链路分析。

 

服务综合治理

 

 

分布式应用的难点在于集成分布式应用一体化监控、数据化运营以及高效的服务治理。其中,服务有两种角色,服务提供者以及链路负责人。

 

服务提供者关心:

 

谁调用了我的服务? 在什么链路下调用,调用是否合理?调用趋势怎样?产生的瞬间峰值有多少?我的系统是否能支撑,是否需要扩容。

 

所能采取的应对措施:分组、限流、鉴权、压测。

 

链路负责人关心:

 

我依赖了哪些应用、哪些服务? 整个链路的依赖路径是怎样的? 哪些容易出错,哪些是链路的处理瓶颈? 这些依赖如果出错,会有什么影响?

 

所能采取的应对措施:捕获异常;降级:对于不稳定的服务,是否需要降级;开关:系统压力很大的话,需要关闭不必要的操作;优化:利用服务治理,对瓶颈进行优化。

 

> > > >
 

鹰眼监控

 

 

15.jpeg

鹰眼监控界面

 

阿里鹰眼监控平台能够提供应用的响应时间和吞吐量信息,并提供全链路分析功能,从而找出系统热点和瓶颈:

  • 完整记录所有故障;

  • 准确定位故障源。

 

所解决的问题:在开发者参差不齐的情况下,快速完成上层业务目标,完成开发任务;提供透明化的观察方式:快速找出对依赖的压力、易故障点与瓶颈点。

 

16.png

快速找出对依赖的压力、易故障点与瓶颈点

 

> > > >
 

容量压测

 

 

17.jpeg

容量压测界面

 

自动计算前端的关键请求与后端机器数量的对应关系,针对机器是否需要加减进行预测:

  • 在真实线上的环境基础上,通过调整服务器权重,真实模拟压测情况,评估单机的最大服务能力,从而提供吞吐能力数据以供性能优化参考;

  • 用自动化平台,相对科学的精确手段将服务能力数据化。

 

> > > >
 

限流降级

 

 

容量是任何一个系统天然存在的上限。客观上讲,不管性能如何,都有可能在业务上超出预期容量。

 

限流是服务接口提供方对消费方的设置,降级则是服务消费方对服务提供方的设置。通过降级设置,对服务消费方进行保护,一旦超过某个时间,便允许强行断开。通过现有的能量对服务提供方进行保护,在出现超过流量最大能力的时候断开,避免将系统整个拖垮。

 

> > > >
 

弹性伸缩

 

 

18.png

扩容界面

 

应用扩容规则和缩容规则一站式设置:根据CPU、LOAD、RT三个指标设置应用的自动扩容或缩容。

 

EDAS配置推送

 

 

19.jpeg

大型分布式系统应用配置推送

 

  • 对大型分布式应用配置进行集中管理:修改更容易,通知更及时,配置变更也更安全;

  • 对应用配置变更进行历史记录:让应用配置可以轻松回退到前一版本;

  • 追踪应用配置推送轨迹:让配置推送所到达机器变得可视化;

  • 应用集群推送的规模更大、效率更高。

 

> > > >
 

EDAS灰度系统

 

 

20.jpeg

EDAS灰度系统

 

能够允许一部分用户使用新功能,一部分用户使用原有功能,再通过实际测试作出最正确的决定。在业务系统层面,让现有的系统可以平滑升级。

 

EDAS——世界级优秀PAAS平台

 

 

21.jpeg

应用客户案例

 

  • 适用于各行各业;

  • 高性能、高弹性、高容错;

  • 打造以应用为中心的平台服务,让开发人员专注于业务逻辑;

  • 构建360度的应用运维服务平台,集成各种运维管控工具。


本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2016-04-13

相关实践学习
微服务实战-服务注册中心 - Nacos
Nacos是阿里巴巴于2018年7月发布的一个开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理: Kubernetes Service  gRPC & Dubbo RPC Service  Spring Cloud RESTful Service  
目录
相关文章
|
3月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
658 3
|
4月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
1月前
|
缓存 Cloud Native 中间件
《聊聊分布式》从单体到分布式:电商系统架构演进之路
本文系统阐述了电商平台从单体到分布式架构的演进历程,剖析了单体架构的局限性与分布式架构的优势,结合淘宝、京东等真实案例,深入探讨了服务拆分、数据库分片、中间件体系等关键技术实践,并总结了渐进式迁移策略与核心经验,为大型应用架构升级提供了全面参考。
|
1月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
260 1
|
2月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
7月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
271 5
|
5月前
|
监控 算法 关系型数据库
分布式事务难题终结:Seata+DRDS全局事务一致性架构设计
在分布式系统中,CAP定理限制了可用性、一致性与分区容错的三者兼得,尤其在网络分区时需做出取舍。为应对这一挑战,最终一致性方案成为常见选择。以电商订单系统为例,微服务化后,原本的本地事务演变为跨数据库的分布式事务,暴露出全局锁失效、事务边界模糊及协议差异等问题。本文深入探讨了基于 Seata 与 DRDS 的分布式事务解决方案,涵盖 AT 模式实践、分片策略优化、典型问题处理、性能调优及高级特性实现,结合实际业务场景提供可落地的技术路径与架构设计原则。通过压测验证,该方案在事务延迟、TPS 及失败率等方面均取得显著优化效果。
328 61
|
6月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2151 57
|
8月前
|
监控 Java Nacos
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
|
6月前
|
消息中间件 缓存 算法
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
327 0
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡

热门文章

最新文章