本文主要是介绍《淘宝技术这十年》麻麻问我为什么跪着看书No.43,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这几天看完了《淘宝技术这十年》这本书。
我不知道你们看完感觉怎么样,给我的感觉就是,哇,麻麻问我为什么跪着看书。
小蕉一步一步,带你们浏览一下,这技术是怎么演进的。
这本书呢一步一步,一层一层为我们剥开了淘宝发展过程中遇到的瓶颈,以及很多位真·大拿为了解决这些问题付出的努力,或购买或改进或创造的技术。
淘宝一开始也没那么高端大气上档次嘛,一开始还是很 Low 的。
那时候是2003年4月。
买买买,直接大笔一挥,从美帝采购一个 PHPAuction(拍卖网站),顺便把源码买了。
淘宝的技术是简单的PHP+MySQL,也就是我们最熟悉的Lamp架构,Linux + Apache + MySQL + PHP。
可爱的工程师们改一改数据库层读写分离,改一改数据访问层为peer DB,改改UI,一个月时间,仅仅一个月时间就直接上线了。不得不说,这套架构开发和发布起来真是快,再前置一个 LVS + HAproxy 做负载均衡,完美。
虽然说起来很轻松,想必当年也是,付出了非常大非常大的努力。
好了,淘宝的各种牛皮癣广告在各大小网站满天飞了,给它带来非常多非常多的客户。客户量上来了,问题也随着接踵而至,真的是一发不可收拾。
2003年年底,数据量已经大到 MySQL 撑不住了,主要原因是连接池。我们都知道,PHP 访问数据库的时候,都是很粗暴地每次新建连接然后断开连接。其实呢,当时还是有一个很好的连接池中间件,是 BEA 做的,但是好贵。。
而这个时期,阿里内部早就有很强的 DBA 团队,其中好几个带着Oracle的ACE头衔。所以呢,换换换,就换成 Oracle 了,数据库连接池使用 SQL Relay 了,使用 Oracle 爸爸的 RAC 实现负载均衡,存储换成了 NAS 存储。
然后,然后就把 DBA 们推进了大坑里。
SQL Relay有bug。。非常坑爹的bug。
经常死锁需要手动重启。。这个时候啊,苦逼的 DBA 们的工作就是,轮流值班,重启 SQL Relay 进程。
还有数据库拆得多了,太极生两仪,两仪生四象,四象生八卦,八八一零二四,这么多普通机器,终究还是扛不住了,最终还是买了 IBM 的小型机。(又特么支出了一大笔钱)
同一时期,安全支付分离成支付宝,IM分离成阿里旺旺。
完蛋了完蛋了,量又上来了,他妈的架构又扛不住了,不稳定。怎么办怎么办?
Oracle 该用还得用,SQL Relay 该用还得用,那还有啥好改的?改改改,改语言,改成Java。
看那边,远方来了一群 Sun 的工程师,像一个个老师傅,把淘宝的 PHP 腿一条一条卸下来,换成新的高性能的 Java 腿。就这样一个一个换一个一个换,新业务都用高性能腿接,几个月就把淘宝的所有代码都改成 Java 的。
这下好了,看起来稳定得不要不要得了。淘宝的架构变成了,MVC 使用的是阿里巴巴的 WebX 框架(周悦虹大神根据Jakarta Turbine的基础拓展的),持久层使用 iBaties,容器用的 EJB 。给数据库加了一个大兄弟->搜索引擎 iSearch ,分担一下数据库的压力,很多搜索都迁移到搜索引擎上。存储上,用三级存储,从 EMC 低端 CX 存储,再到 Sun Oem hds 高端存储,再到 EMC dmx 高端存储。后来比 EJB 也卸了,换 Spring 了。
这套架构好是好,一个字,贵,但贵也得用啊,没办法啊。
但慢慢的,就连最好的软件最好的配置也撑不住了。
就开始了传说中浩气汤汤的去 IOE 了,并不是想强行去,只是真的,最好的配置也扛不住业务。
TFS海量存储
借鉴 GFS (Google File System)创造了 TFS (Taobao File System),不负众望,把图片服务扛下来了,在图片服务器前面又前置了两层缓存服务器集群。
存储的问题算是解决了。
OceanBase
后来又开发了 OceanBase 海量数据库,几乎对标 HBase。
AliSQL
好了,既然连接池跟存储都解决了,Oracle 也没啥用了,又贵,换换换换MySQL ,顺便改良成了 AliSQL ,顺便开源了(T_T为毛这么牛逼)。
Tair
为了商品详情,这么死鬼大的页面,创造了一个名为 Tair 的KeyValue缓存系统。
HFS
内部系统一多,为了统一内部交互,创造了HFS(High-Speed Service Framework),作为统一的发布/调用层中间件。
Notify框架
因为消息延迟问题需要解决,创造了Notify消息中间件。
Tbsession框架
因为集群一大,用户的会话session非常容易丢失,创造了Tbsession框架进行分布式Session存储。
TDDL
分库分表,带来的问题是巨大的,这又催生了TDDL分布式数据层这样的框架。
CommonDAO时代,非常粗暴的强行分段查询。
TDDL1.0,学习开源的Amoeba Proxy,去掉了Proxy,重写了SQL解析器。
TDDL2.0,拆分核心应用数据层代码,剥离出去。
TDDL3.0,将单机主备切换和数据源管理独立了出来。
TDDL4.0,平台工具时代。开发了Rtools/JADE作为DBA运维平台。开发了"愚公"数据迁移平台,开发了“精卫”数据增量复制平台。
一切看起来好像顺理成章,但也只有他们自己,才知道其中的乐趣和苦楚吧。
而这一切一切 。仅仅是2013年前的淘宝。。灰常口怕。
咋说呢,这本书,又一次扩展了我的视野,原来还有这么多东西可以选,可以去关注,可以去学习,进化的路也可以是这样。
开源技术是个好东西,要爱上它。没事多逛逛,跟逛淘宝一样逛逛。
即使上面说的这一堆我们实际工作中可能完全用不到,但那又怎样呢?我一直认为有一个东西我们是必须去克服的,也就是 Unknow Unkow。我们都不知道自己不知道什么东西。可怕。
去参加各种各样的讲座,交流,不也是为了解决,不知道自己不知道这个问题吗?
如果有东西想去做,一定能找到方式,找到时间去参与它,贡献它。
持续关注大数据技术,AI技术,可以自己玩一些小玩意,编程写代码不就为了开开心心吗?打造自己的硬实力,专注于改变较少的东西,而且当有一个问题需要这些工具的时候,能想起它们,就很不错了。
但一切技术,起始于业务,落地于业务,都是工具。共勉。
(本文完)
好啦,投票投票在这,超过50人就开系列,就酱。
热爱分享,是中华民族的传统美德,kkk。如果觉得还行,就转发点赞评论一下啦,我会很开心的~哇咔咔。
啦啦啦~
这篇关于《淘宝技术这十年》麻麻问我为什么跪着看书No.43的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!