3 企业级互联网架构专场(下午场)
3.1 企业级互联网架构实践
---------------------虚缇 阿里巴巴中间件架构师
早期,阿里巴巴早期的架构设计是标准界面式War包形式:全部的界面和后台功能都集中于一个War包里面,故这个War包很大,一般多500M~600M左右,但是这样开发却存在较大的问题。比如,每个星期发两次包,礼拜二和礼拜四,总有一部分人会赶不上进度发布不了包,这样会拖累整个项目的正常发包;而且,阿里巴巴,淘宝,天猫之间又存在很多相似的地方,如果重新开发,就完全是Copy to Paste模式,导致人力、精力的严重浪费,基于以上存在的问题,阿里巴巴就把复杂的架构进行各种拆分:把共享的服务拆分开来,例如每个业务模块都会使用的用户中心,把用户中心从各种业务中拆分出来,大家在使用时只需调用接口就可以了,不需要重复开发。数据拆分包括:应用与应用的解耦,应用与数据库解构,应用与数据库的彻底解构,如上图所示。
随后,阿里形成了共享业务事业部,可以分为共享业务和技术平台,技术平台是企业级互联网架构组成部分,其核心落地是使用中间件技术来实现。根据不同的业务可以快速形成淘宝,聚划算,天猫,淘宝,阿里巴巴等不同应用。
在此过程中,阿里平台形成一批优秀产品,例如EDAS,DRDS,MQ等,EDAS可以一种调用服务的中间件,DRDS是分布式数据库,MQ是消息中间件。
对于互联网上成熟组件和技术,如海量数据,docker,LAMP,开源,分布式等,网上有很多人鄙视阿里:“只是拿着开源东西用,没有任何贡献”。而阿里的观点是可以参考和使用成熟的技术,但是一定要先验证组件的成熟,然后弄懂其原理和设计,如果有业务需要,可以在此之上拓展。一个成熟的组件会让事情事半功倍,但是仅仅只是使用而不知其所以然,就会给自己挖坑而已。
阿里的架构设计中采用一系列原则:
- 尽可能拆分
- 去中心化
- 使用成熟组件
- 尽可能的自动化
- 数据化运营
- 异步化
3.2 企业级分布式应用服务——“构”无边界
--------------------------------------------------------------------------------倪超(银时) 阿里巴巴中间件技术专家
阿里早期技术现状:技术团队规模500人左右,开发使用War包应用,基于传统应用开发架构(Spring),业务量每年翻倍增长。但是存在很多问题,其主要三个问题:
- 问题I:业务支持缓慢,牵一发而动全身
- 问题II:数据库连接数:由于业务量迅猛发展,太多应用机器需要连接数据库
- 问题III:数据孤岛
天猫,淘宝,聚划算等APP应用,有很多相似的功能,如果各个APP单独存在,那么会造成数据孤岛。例如:用户注册这功能,每个APP都会用到这一功能,如果重复开发,完全代码重复,和数据重复,最重要的对用户友好性有造成负面影响。
由于以上存在的问题,阿里从07年至今,基于EDAS进行服务化改造。
- I 自主创新走出技术困难,沉淀一大批成熟中间件技术;
- II 共享服务体系打破应用“烟囱式”建设方式,支持业务快速创新;
- III 云化基础架构高效支持业务增长,灵活的弹性伸缩带来巨大的成本节约
去中心化服务框架,只是一个简单的开始。
立体化监控服务=资源+容器+应用
并且,在定位问题的过程中,快速定位难度较大,例如:看到A模块错误日志,找A的模块主管,A主管看后台日志,发现是调用B模块的问题,让维护人员找B模块主管;B模块发现不是自己的错误,是C模块的问题;如此循环,一两个小时过去了,才找到问题根源。花费大量的时间和精力去定位问题,所以阿里使用EDAS研发出“EDAS鹰眼跟踪”,来定位问题。而EDAS链路分析作用是统计代码稳定性、方法负载均衡,如上图所示。
注:以上有些只代表个人观点和理解,如若与作者本人观点有出入,请予以包涵!