技术晋升读书笔记—淘宝技术这十年

98 阅读6分钟

一、书中代号

“战时指挥部”“淘宝店小二”“淘宝币”“亲,9.9 包邮不?”“毕玄”“淘宝技术大学团队”“Notify”“TDDL”“湖畔花园”“千岛湖项目”“五彩石项目”

二、读书笔记

1、 早期起步阶段(2003年 - 2004年初)

  • 架构选型
    • 最初采用LAMP(Linux + Apache + MySQL + PHP)架构,购买了一个基于该架构的网站系统PHPAuction,并进行本地化修改。例如,将数据库从一个改为一个主库、两个从库,实现读写分离。
    • 搭建了论坛系统PHPBB,打通交易系统和论坛系统的用户信息,开发后台管理功能,增加了多种交易类型。
  • 面临的问题及解决措施
    • 随着业务发展,MySQL出现性能问题,尤其是在写数据时会锁表,导致Slave同步数据出现问题。
    • 2003年年底,将MySQL替换为Oracle,原因包括Oracle容量大、稳定、安全、性能高,且阿里巴巴有强大的DBA团队。同时,为解决PHP语言对数据库访问方式与Oracle的不匹配问题,采用开源的连接池代理服务SQL Relay进行优化。

2、Java转型阶段(2004年初 - 2005年)

  • 转型原因
    • SQL Relay存在问题,数据库确定使用Oracle后,为了更好地满足业务需求和提升系统性能,决定更换开发语言。
    • Java是当时成熟的网站开发语言,有良好的企业开发框架,被主流大规模网站采用,且相关人才较多,后续维护成本低。
  • 转型过程
    • 邀请Sun公司的工程师进行迁移,采用给业务分模块、渐进式替换的方式。例如,对用户模块,先维护老的member.taobao.com,同时在新模块上开发新功能,共用数据库,开发完毕后放到不同应用集群,再逐步替换老功能,引导用户到新域名member1.taobao.com。
    • 选用阿里巴巴自己的MVC框架WebX,控制层使用EJB(后因Spring的出现,在2005 - 2006年逐渐用Spring替换EJB),持久层支持ibatis等。同时,为缓解数据库压力,将商品查询和店铺查询放在搜索引擎中。

3、 分布式时代(2006年 - 2012年)

  • 服务化改造
    • 商品类目属性改造:2006年对商品类目属性进行创新,引入属性概念,将类目和属性分离,建立结构化的数据对象,开发出Catserver和Hesper两个服务,分别用于类目属性管理和商品搜索,提高了运营效率和搜索准确性。
    • 用户信息模块拆分:将用户信息模块独立出来形成UIC(User Information Center),解决系统耦合问题,提高系统扩展性。随着业务发展,如淘宝旅行、彩票业务的推出,对会员和交易等功能模块也进行了相应的拆分和服务化改造。
    • 交易模块拆分:把交易业务拆分为底层的交易中心(Trade Center,TC)和上层的交易管理(Trade Manager,TM),TC负责原子型操作如创建订单、减库存等,TM负责更复杂的交易业务逻辑。
  • 中间件的开发与应用
    • HSF高性能服务框架:为解决服务调用问题,开发了HSF。它基于OSGI方式定义服务,采用TCP/IP协议通讯。服务提供者通过HSF框架向ConfigServer注册服务信息,服务调用者向ConfigServer注册感兴趣的服务,调用时根据列表直接访问服务提供者,实现了“软负载均衡”,提高了系统的扩展性和统一性。
    • Notify消息中间件:为解决系统之间异步消息通知问题,开发了Notify。它是分布式消息中间件系统,支持消息的订阅、发送和消费。NotifyServer在ConfigServer上注册消息服务,消息客户端通过ConfigServer订阅消息服务,保证消息的可靠传递和顺序性。
    • TDDL数据访问中间件:随着数据量增长,对数据库分库分表的要求提高,开发了TDDL。它实现了数据访问路由、数据的多向非对称复制和数据存储的自由扩展等特性,对上层系统提供统一的数据库访问接口,像查询一个数据库一样操作多个分库分表后的数据库。
  • Session框架的优化
    • 开发Tbsession框架解决集群环境下的Session管理问题。它支持Session的客户端存储(将信息存储到客户端浏览器Cookie中)和服务端存储(使用集中缓存区Tair),实现了Session配置的统一管理和动态更新,提高了系统性能和用户体验。

三、摘抄

2003年4月7日,马云在杭州成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴集团,去做一个神秘的项目。

1998年,马化腾等一伙人凑了50万元创办了腾讯,没买房;1998年,史玉柱借了50万元搞脑白金,没买房;1999年,丁磊用50万元创办了163.com,没买房;1999年,陈天桥炒股赚了50万元,创办盛大,没买房;1999年,马云等18人凑了50万元注册了阿里巴巴,没买房。

一旦收到“SQL Relay进程挂起”的短信,就从春梦中醒来,打开电脑,连上机房的网络,重启服务,后来干脆每天睡觉之前先重启一下。做这事最多的据说是三丰,他现在是淘宝网的总裁。

好的架构是进化来的,不是设计来的,好的功能也是进化来的

“好的架构图充满美感”

淘宝网在2006年就推出了“团购”的功能。

我们对数据分库、放弃EJB、引入Spring、加入缓存、加入CDN等工作,看起来没有章法可循,其实都是围绕着提高容量、提高性能、节约成本来做的

支付宝一开始生存在淘宝系统上,但到2004年年底的时候,老马的慧眼看到了支付宝的未来。当时请了Sun公司的人把淘宝的第一个PHP版本变成了Java版

我是栈江湖,如果你喜欢此文章,不要忘记点赞+关注