
阿里技术架构演进及过程中遇到的问题
2003 年,淘宝最初的架构建设是采用 PHP,实践发现系统抗压能力相对薄弱。因为淘宝是一个企业级系统,所以选择了当时非常重要的企业级技术 JavaBean。之后把整个 Web 的容器、EJB 等整套体系引入淘宝,雇用有经验的工程师一起做架构。淘宝在技术方面也走过很长的路,在架构建设过程中,大家讨论最多的事情是如何划分模块。
随着技术的不断发展,到 2006 年,淘宝技术又从 EJB 过渡到 Spring,如下图:
目前,这个产品已经开源,最上层采用的是 JBoss、中间采用 Webx,之后是 Spring、OR-Mapping,底层用到是 Oracle 。用 Search 做搜索引擎,是因为当时收购雅虎,把雅虎的搜索引擎挂接到淘宝。像这样采用分布式的存储方式在现在看来很常见。
当时,业务不断高速发展,一些问题随之逐渐暴露出来。这里主要分享工程维护、人员变动、数据孤岛、数据集能力不足等问题。
工程维护与人员变动
随着业务不断壮大,技术团队的工程也会越来越多,源代码加速膨胀。多个工程之间,源代码冲突严重同时因为工作没有边界导致相互协同的成本不可估量。
假设出现项目完成,核心人员离职的情况,项目维护也会成为问题,当新人入职之后,学习老代码的难度也可想而知。
数据孤岛
数据孤岛是各个公司很普遍的问题,在那个时期,天猫还叫淘宝商城,不是基于淘宝,而是完全独立的一个组。
后期因为一些原因,想要把两个体系合并,却因为各自独立的业务体系、用户 ID、数据存储式等等差异导致操作困难。且数据本身质量不高,做统一分析也有难度。
能力达到上限
当时用的是小型机Oracle,CPU90% 以上,每年宕机最少一次。这主要是因为有大量新业务写入,两周一次的频度,不断地有新 SQL 产出。
在新的 SQL 中,如出现一个慢 SQL,就会出现宕机。当时我们用的小型机重启一次需要 20 分钟,
当时后端 Oracle 的连接池有限,约 8000 个左右,一旦超过就会出现问题。因为超过数量,链接占的内存会非常大,且连接数单点风险系统很高。
阿里面对 DBA 相关问题的应对方法
综上所述,当时阿里 DBA 面临维护人员很多,团队职责不清、数据无法共享,团队各自为战、小型机压力过大,连接数单点风险系统很高等问题。
好在阿里那时正处于增长期,所以这时通过招聘一些技术大牛来解决问题。
基于 EDAS 进行服务化改造

针对阿里 DBA 遇到的问题,从硅谷请来的技术人用服务化的方式试着解决。当时在中国只有用友做过服务化,且效果不是很好,没有借鉴,只能谨慎小心的自己往前走。
如下图,是阿里以服务化方式将系统分工的三个关键战役。
用户中心服务化
选择用户中心的第一个是做服务化,因为用户中心是最小集合,最简单清楚,还因为确实有业务需求,也是想要验证这条服务化的理念是不是正确。
服务化之前的用户中心,有六个不一样的查询方法,看起来遍历的方式差不多,但可能某个参数不同,因为数据来自不同的团队。
服务化的原则是能不改不改,能简化简化,采用的传输方式是 HTTP。然而,这样做行不通,是因为除了服务化 HTTP,其他内容没有改变,就需要布设 Load Balance。
为了保证 Load Balance 尽可能稳定,所以选择硬件 F5 来配置。php连接oracle把前端进入的用户流量打到 F5,额外在增加新 VIP 接口,请求通过 F5 转出去。
这里发现一个很严重的问题,就是每当用户登陆一次,出现一个节点,跳转一次流量就要增加一倍。但 F5 是很贵的设备,未来如果所有都变成服务化,用 F5 就不可行。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-65950-1.html
联想不思进取
想出名也不能介样吧