以应用为中心的微服务PaaS平台---企业级分布式应用服务 EDAS

【EDAS之灰度发布、流量管理功能正式邀请公测】

近日,EDAS应用多版本部署和流量管理功能正式启动公测,帮助用户实现诸如灰度发布、Http流量隔离和应用性能指标对比等场景。

使用方法:通过设置请求Cookie规则,来引导Http流量的流向。例如:设置所有userId在某一个范围内的请求,全部由192.168.1.2这台机器处理。
公测对象:所有已开通EDAS用户。了解EDAS EDAS基础版1-2个应用实例免费开通
申请方法:通过工单方式提交申请,即可免费试用。现在就提工单

-------------------------------------------------------我是正文分隔符-----------------------------------------------

本文主要从高速增长的阿里业务开始谈起,讲述当年面对的业务场景和背景,碰到了什么样的技术挑战,且用什么样的思路去解决它,最后和大家分享了解决后产生的产品Aliware中非常重要的EDAS。

高速业务增长带来的挑战

大型电子商务平台吸引了大量卖家和买家,图为2014年IPO时候截得的图,可以看到在阿里上有10亿多件商品等,现在仍然以非常高的速度在增长。

图为2003年到2010年淘宝网注册用户数,用户数从非常低的值逐渐涨到近40000万人,这些用户突然来到我们的网站,就会给网站非常多的访问压力。2003年到2006年我们主要是想尽方法以业务为核心积累技术,到后来互联网人群在高速增长,整个体系面临的技术挑战就会非常多,具体有以下四点:

  • 业务需求爆发式增长
  • 开发人员快速扩张
  • 系统代码量越来越多
  • 系统压力越来越大

综合来看,一个技术性网站最重要的技术挑战在于考虑业务的高速增长、用户数量的高速增长导致下层原来看不见的问题变成了新的问题。

挑战与解决之道

阿里前期技术团队规模500人左右,单一War应用,是以PHP为核心构建的系统,PHP+MySQL+Linux+Apache标准的LAMP的系统架构,后来逐渐用一些开源的技术替换掉了原来的商业产品,随着业务的不断发展,不断的把新的代码加入到系统中,我们研发了一套分布式存储架构,搜索也是自己构建的。

技术问题

随着技术快速增长和演进,随着人员的增加,我们发现很多严重的问题展现出来。

业务支持缓慢,牵一发而动全身

很多人同时维护一个核心工程,不同人有不同的理解,会导致源代码冲突严重,很难做项目管理,协同成本非常高,进而项目发布周期就会很长,迭代速度变慢,且错误难以隔离。

数据库能力达到上限

只有一个数据库的问题是很大的,发布一个新的系统可能会导致宕机,由于数据库里本身的索引建错了,建错是因为库是重建的,Oracle的索引重建机制还没有来得及更新柱状图。所以,只有一个Oracle数据库时,连接数捉襟见肘,单机IOPS达到瓶颈,CPU 90%以上,每年宕机最少一次。

数据孤岛

多套用户体系导致用户不知道到底在哪个网站登录,我们想知道用户的画像,分析用户的购买行为,但两个不同网站的相同用户名不确定是否为同一用户,所以没办法进行后续的大数据分析。随着系统越来越多,我们发现大量的用户在系统出现时,比如查询用户的方法,在不同的业务系统里出现多次,每一次都不完全一样,数据隔离、重复建设,数据不一致,这是项目管理和代码管理的乱象。

基于EDAS进行服务化改造

没有任何服务化的经验去借鉴,我们只能一步一步的摸着石头过河。我们做了几个关键性的努力,首先是用户中心迁出,从一个大的系统里拆出一小块放到外面,这就是用户中心,用户中心是一个比较简单纯粹的处理用户登录的系统,当时在内部就有六、七种登录方式,我们把这些方式全部代理出来,变成一个单独的服务中心。如果我们不把系统代码进行革新,就没有办法支撑,紧接着,我们就开始做自己的中间件的研发,千岛湖项目产生时,EDAS、MQ、DRDS就随着它一步步的演进到现在。交易中心是整个系统里最复杂的业务流程,几乎和所有业务系统有关联,当它用一些中间件完成整个系统的突破时,我们就可以认为看起来中间件和应用都准备好了。接着我们进行了第三个五彩石项目,商城和淘宝各有一套购买流程,我们需要用EDAS进行服务化改造,把这两套流程融合到一起,使之能同时支撑两个不同的出口,完成下一步的延伸。

服务化以后的架构演进

服务化以后,开始时业务应用很少,随着系统往下延伸,很多人开始做服务化系统,服务之间也会进一步的复杂,从而会形成一个复杂的网状结构,那么,依赖很多,如何进行准确的梳理呢?

当系统变成网状结构后,一定会有一些业务系统是重要业务,一些业务系统是非重要业务,这些非重要业务突然出现小的故障时,整个系统就会宕机,我们成立了稳定性小组进行业务梳理,以交易流程为核心,哪些系统划成重要系统,哪些系统为非重要的业务系统,但是,系统在不断的变化,我们没有办法准确知道每一次变化后它的依赖关系是怎样的,很难进行梳理,必须通过系统的方式来解决问题。

鹰眼系统

我们把整个系统现象成一个高速公路的路网,流量进来就如同行驶的汽车,如何能够知道汽车从哪里进来又从哪里出去呢?在高速公路上做很多的关卡,这样可以准确的追踪到所有连接的道路和通信,这样,哪里有问题都可以通过非常简单的方式得到检测,而这个检测对于发现和解决问题是非常简单的一件事,才有可能摆脱在服务化以后,复杂的系统运维和管控。

阿里经过验证的中间件——EDAS

高性能服务框架

EDAS是一个高性能的服务框架,EDAS是由很多技术体系组成的一个整体包,如果想写一个web应用,使用这个开发套件,所有在业务开发需要的功能都集成在里面,所有和业务中间件相关的应用也集成到里面了,最关键之一就是HSF,HSF在阿里90%以上应用上使用,相对比较成熟,支持分布式事务,经历过七次双十一大促的考验,日均有千亿级的调用量。

同时,我们也支持Dubbo,Dubbo也是阿里开发出来的市面上应用非常广泛的开源软件,已经有4000多个开源分支。

分布式事务

在服务框架之上,还有分布式事务,在分布式应用里应该怎样完成单机应用中常见的一些事务操作呢?此时就需要使用分布式事务组件,它能够将服务和服务之间多个不同库之间的数据集中到一起去,从而提供一个整体的服务能力,看起来像写单机业务系统一样去写分布式事务服务框架。去中心化服务化框架,只是一个简单的开始。

分布式配置管理

可以在网站查询配置哪些机器收到、哪些机器没有收到,毫秒级推送,可以变更历史记录,推送轨迹追踪等。

立体化监控服务

资源+容器+应用 = 立体化监控服务

监控是我们非常关注的事情,对于系统整体的性能指标也非常重要,所以,我们会尝试从不同层面收集信息,具体包括以下三大方面:

系统资源:负载,CPU、内存、磁盘、网络
容器:堆内存、类加载、线程池、连接器
应用:响应时间、吞吐率、关键链路分析

容器监控

容器监控要监控堆内存与非堆内存使用情况,类加载情况(对于排查线上启动问题非常方便),线程运行情况,连接器情况。

应用监控

应用监控主要从服务接口、方法的实时调用情况进行分析,以及调用QPS、响应时间分析,

快速感知系统流量变化,从而让我们知道系统的问题所在。监控和报警在这里得到很好的体现,但这仅仅算是刚刚进阶。

EDAS鹰眼跟踪

鹰眼监控就是解决内部非常复杂的多样链路的时候,怎样进行持续的收集、跟踪、统计,以帮助我们进行链路梳理的工具。比如从前面开始调用链路时有哪些异常,出现故障的地方都可以从这个调用链路上得到展现。

同时,通过海量调用链进行统计分析,得到链路各个依赖的稳定性指标。比如,某个地方的QPS很高,但这个系统不该有这么高的QPS,就可以认为这是一个依赖压力问题。

除了链路分析功能,EDAS还有容量规划的重要功能。通过线上真实引流到系统内进行压测分析,然后根据设定的运行水位计算系统承载的最高容量,从而到最后可以实现机器按需的上线和下线,把这些系统融会贯通在一起,就是整体的容量规划提供的功能。

EDAS限流降级

限流降级是阿里最有特色的功能之一,我们会面对非常强大的挑战就是双十一网购狂欢节,我们需要在成本和体验中选择一个好的平衡点,要利用这个平衡点我们必须要保证系统的可用性,不能因为用户多导致系统无法服务,就像排队买票一样,我们需要对自己的系统进行优化,具体表现在一下两方面:

  • 限流:针对非核心服务调用者限制请求量
  • 降级:针对系统的非核心服务依赖

应用发布和管理系统

以前是集中化的发布方式进行管理的,这对于一、二百台机器是没有问题的。然而,现在需要同时发布五、六百台机器甚至更多,发布就会成为瓶颈。对此,我们内部引入EDAS燎原P2P发布系统,它能够让系统内进行P2P多点式的多host发布,使整个系统的应用发布能力得到快速提升。

EDAS燎原实现超大规模集群闪电发布,图中可以看出发布耗时随着机器数量增加变化趋势。采用EDAS燎原发布系统,随着应用实例的增加,发布的时间几乎保持不变。有利于进行紧急发布时候的业务处理,实现快速回滚。

阿里十年技术精华沉淀

综合来说,EDAS并不是简单的服务化工具,它希望在整个应用的编写周期里都可以进行操作,所以它结合了HSF、鹰眼、燎原等等。现在,它在公有云和专有云里都有输出。

阿里巴巴核心技术架构

  • 自主创新走出技术困境,沉淀一大批成熟中间件技术;
  • 共享服务体系打破应用“烟囱式”建设方式,支撑业务快速创新;
  • 云化基础架构高效支撑业务增长,灵活的弹性伸缩带来巨大的成本节约。

企业级互联网架构Aliware,让您的业务能力云化:https://www.aliyun.com/aliware

时间: 2024-08-02 13:32:26

以应用为中心的微服务PaaS平台---企业级分布式应用服务 EDAS的相关文章

基于阿里企业级分布式应用服务(EDAS)的敏捷服务开发与架构实践

本文主要从高速增长的阿里业务开始谈起,讲述当年面对的业务场景和背景,碰到了什么样的技术挑战,且用什么样的思路去解决它,最后和大家分享了解决后产生的产品Aliware中非常重要的EDAS. PDF下载:点此进入 以下是演讲内容整理: 高速业务增长带来的挑战 大型电子商务平台吸引了大量卖家和买家,图为2014年IPO时候截得的图,可以看到在阿里上有10亿多件商品等,现在仍然以非常高的速度在增长. 图为2003年到2010年淘宝网注册用户数,用户数从非常低的值逐渐涨到近40000万人,这些用户突然来到

微服务架构下的分布式数据管理

1.1 分布式数据管理之痛点 为了确保微服务之间松耦合,每个服务都有自己的数据库, 有的是关系型数据库(SQL),有的是非关系型数据库(NoSQL). 开发企业事务往往牵涉到多个服务,要想做到多个服务数据的一致性并非易事,同样,在多个服务之间进行数据查询也充满挑战. 我们以一个在线B2B商店为例,客户服务 包括了客户的各种信息,例如可用信用等. 管理订单,提供订单服务,则需要验证某个新订单与客户的信用限制没有冲突. 在单体应用中,订单服务只需要使用传统事务交易就可以一次性检查可用信用和创建订单.

初创公司福利:谷歌、IBM和Lyft共同推出微服务管理平台Istio

谷歌,IBM,及Lyft昨日正式推出其开源服务Istio.这项开源项目将给开发者提供一个统一的平台,用以有效管理监测微服务(microservices)的运行情况,并保障.提高其之间的连接性.安全性. 微服务,是一项在云中部署应用和服务的新技术.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API).每个服务都围绕着具体业务进行构建,并且能够

华为架构师8年经验谈:从单体架构到微服务的服务化演进之路

本次分享的大纲如下: 传统应用开发面临的挑战 服务化实践 服务化不是银弹 服务化架构的演进方向   一 .传统应用开发面临的挑战 挑战1-- 研发成本高   主要体现在如下几个方面:   代码重复率高   在实际项目分工时,开发都是各自负责几个功能,即便开发之间存在功能重叠,往往也会选择自己实现,而不是类库共享,主要原因如下:   从技术架构角度看,传统垂直架构的特点是本地API接口调用,不存在业务的拆分和互相调用,使用到什么功能就本地开发,非常方便,不需要过度依赖于其它功能模块: 从考核角度来

中间件和微服务,Docker以及原生云架构的关系

微服务和Docker的发展势头 微服务和容器的主要目标是缩短软件开发时间,以及实现开发.部署以及运维的更大灵活性.为什么它过去几个月的发展势头这么猛?因为几乎所有科技巨头企业如亚马逊,谷歌,Facebook,Netflix都在这里激烈竞争. 微服务就像是一个面向服务的架构(SOA):这是一种架构和供应商技术分别独立的设计理念.因此,目前并没有明确的界定标准或规范.你永远需要在和其他人讨论之前定义你所理解的微服务术语.每个人都有不同的定义.在这篇文章中微服务是被开发,部署和独立缩放的服务.它们可以

微服务的4大设计原则和19个解决方案

作者|郝炎峰 编辑|小智 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 注:本文转载自公众号 EAWorld,已获授权. 写在前面 微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以 SpringCloud 为基础

微服务的4个设计原则和19个解决方案

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringCloud为基础,结合了普元多年来对企业应用的理解和产品的设计经验,逐步孵化的一个微服务应用平台. 一.微

微服务与SOA架构

本文讲的是微服务与SOA架构[编者的话]本文是Mark Richards写的微服务与面向服务架构完整报告. 基于服务架构的世界 微服务和SOA都被认为是基于服务的架构,这意味着这两种架构模式都非常强调将"服务"作为其架构中的首要组件,用于实现各种功能(包括业务层面和非业务层面).微服务和SOA是两种差异很大的架构模式,但是他们仍有一些相同的特征. 所有基于服务的架构的一个共性是他们一般都是分布式架构,也就是服务组件都是通过远程访问协议来实现的,例如REST.SOAP.AMQP.JMS.

秦苍科技是如何管理数百个微服务并避免踩坑的?

[编者的话]过去两年中,微服务架构是一个非常热门的技术名词.秦苍科技也在微服务方面做了大量的投资和实践,我们有开发.测试.准生产.生产四套环境,每套环境有230+个微服务,总共有近1000个微服务. 本文讲的是秦苍科技是如何管理数百个微服务并避免踩坑的?秦苍科技为什么要采用微服务的架构?如何管理这么多微服务?本文将对这些问题进行阐述,希望对正在踩坑路上和即将踩坑的朋友们有所帮助. 为什么要使用微服务 关于微服务架构优点有很多讨论.但是,个人认为许多优点都可以算作一些"伪优点".例如: