2021-07-07《淘宝技术这十年》2003-2013读书笔记

《淘宝技术这十年》2003-2013

NAS(Network Attached Storage,网络附属存储)

NetAPP(Network Appliance,美国网络存储技术有限公司)

RAC(Real Application Clusters,实时应用集群)

NFS(Network File System,网络文件系统)


好的架构是进化来的,不是设计来的。

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

好的架构图充满美感,一个架构好不好,从审美的角度就能看出来。【判断一个架构好不好之前,需要积累发现不好的经验。外行看热闹,内行看门道。经历了不好才能知道“好”是什么样。】



淘宝收款方式

阶段一:最早,买家打给卖家都是通过银行转账汇款,有些骗子收了钱却不发货,干脆逃之夭夭。一个人这么干之后,很多人都学会了。

阶段二:淘宝网这伙人开始研究防骗子的解决方案,他们看了Paypal的支付方式,发现不能解决问题。研究了类似QQ币的东西,想弄个“淘宝币”,发现也不行。后来有人把这些想法糅合起来,想到了“担保交易”这种第三方托管资金的方法。

于是在2003年10月,淘宝网上线了一个功能,叫做“安全交易”卖家如果选择支持这种功能,买家就会把钱交给淘宝网,等他收到货之后,淘宝网再把钱给卖家。这就是现在的“支付宝”。这个功能最早是让卖家可选的,因为这会延迟他收款的周期

但一旦卖家用了这个之后,就发现交易量猛增,一年之后,几乎所有的卖家都选择担保交易,到后来干脆所有的交易必须走担保交易。在2012年支付宝的年会上,支付宝公布2011年的交易笔数已是Paypal的两倍。

这个划时代的创新,其实就是在不断思索过程中的一个灵光乍现。

当时多数银行的网站已经实现在线支付,但他们的网关五花八门,用什么技术的都有,必须一家一家地去接。而且银行网关不保证用户付钱后就一定扣款成功,不保证扣款成功后就一定通知淘宝,也不保证同志淘宝后就一定到账,一级不保证通知到了就不重复通知。

苗人凤必须每天手工核对账单,少一分钱就睡不着觉,因为账对不齐就一定是有人的钱找不到地方了,这可是天大的问题。

另外他为了测试这些功能,去杭州所有的银行都办理了一张银行卡。一大堆银行卡摆在桌子上,不知道的人还以为他一定很有钱,其实里面都只是十元八元的。


淘宝和易趣(eBay中国)过招

和易趣过招第一招:免费。让用户无需成本就能进来。

和易趣过招第二招:安全支付。让用户放心付款,不必担心被骗。

和易趣过招第三招:旺旺。淘宝旺旺不是自己生出来的,是从阿里巴巴的“贸易通”复制过来的。【不要重新发明轮子】

eBay不允许买卖双方在线聊天,收购了Skype之后也没有用到电子商务中去。

旺旺推出没多久,做雪饼的旺旺找上门来说淘宝侵权了,然后改名为淘宝旺旺。



淘宝网2004年从PHP语言转换成了Java语言

遇到的问题:2004年初,SQL Relay的问题解决不了,数据库必须要用Oracle,那么从哪里开始动刀呢?只有换开发语言了。

为什么换Java:1.Java是当时成熟的网站开发语言,它有比较良好的企业开发框架,被世界上主流的大规模网站普遍采用。2.有Java开发经验的人比较多,后续维护成本比较低。

请谁来换?请sun公司的人。原因一,他们是创造Java语言的那家公司,没有人比他们更懂Java。原因二,eBay的系统刚刚从C++改到Java,而且就是请sun的工程师改造成Java架构的。他们不仅更懂Java,而且更懂eBay。

需求:要求在迁移过程中,不停止服务,原来系统的bugfix和功能改进不受影响。

淘宝网的做法:他们的大致方案是给业务分模块,一个模块一个模块地渐进式替换。

如用户模块,老的member.taobao.com继续维护,不断添加新功能。新功能在新的模块上开发,跟老的模块共用一个数据库,开发完毕之后放到不同的应用集群上,

另开一个域名member1.taobao,com,同时再替换老的功能,替换一个,就把老的模块上的功能关闭一个,逐渐把用户引导到member1.taobao.com,等所有的功能都替换完之后,关闭member.taobao.com。

从设计上来看,这个member1的二级域名应该是一个过渡状态,但我们把member域名的代码下线后,发现很难把member1切换回member,因为有些地方把链接写死了。

于是后来很长时间里,我们都是在用member1.taobao.com这样奇怪的域名。

Java MVC框架:当时的struts1.x是用得比较多的框架,但是用过webwork和struts2的人可能知道, struts1.x在多人协作方面有很多致命的弱点,由于没有一个轻量框架作为基础,因此,很难扩展,这样架构师对于基础功能和全局功能的控制就很难做到。

而阿里巴巴的18个创始人之中,有个架构师周悦虹,他在Jakarta Turbine的基础上做了很多扩展,打造了一个阿里巴巴自己用的MVC框架WebX(http∶//www.openwebx. org/docs/Webx3_Guide_Book.html),这个框架易于扩展,方便组件化开发,它的页面模板支持JSP和Velocity等,持久层支持ibatis和hibernate等,控制层可以用EJB和Spring(Spring是后来才有的)。项目组选择了这个强大的框架。另外,当时Sun在全世界大力推广他们的EJB,虽然淘宝的架构师认为这个东西用不到,但他们还是极力坚持。在经历了很多次的技术讨论、争论甚至争吵之后,这个系统的架构就变成了下图的形式。

MVC框架是阿里的WebX,控制层用了EJB,持久层是ibatis。

另外,为了缓解数据库的压力,商品查询和店铺查询放在搜索引擎中。

支付宝

Sun的这帮工程师开发完淘宝的网站之后,用同样的架构又做了一个很牛的网站,叫“支付宝”。(上一篇说过支付宝最初是淘宝上的“安全交易”功能,这个功能后来独立出来,成立了一个网站,也成立了一个公司,就是现在的支付宝。把支付宝从淘宝分出去的人,就是Sun公司的这几个人。)

上面的架构中,引入了搜索引擎iSearch(前文说过,iSearch其实是在LAMP系统运行一段时间之后被多隆引进的,换为Oracle之后只是替换一下数据源)。

iSearch搜索引擎的原理:很简单,就是把数据库里的数据dump(倾倒)成结构化的文本文件后,放在硬盘上,提供Web应用以约定的参数和语法来查询这些数据。

需要做到快速更新数以亿计的信息,以及保证非常高的容量和并发量。

场景:你在淘宝上发布一件商品,过了1个小时还搜不到,肯定要郁闷了。



其实在任何时候,开发语言本身都不是系统的瓶颈,业务带来的压力更多的存在于数据和存储方面。

前面也说到,MySQL撑不住之后换为Oracle,Oracle的存储一开始在本机上,后来在NAS上,NAS撑不住了用EMC的SAN存储,再后来,Oracle的RAC撑不住了,数据的存储方面就不得不考虑使用小型机。、

在2004年夏天,DBA七公、测试工程师郭芙和架构师行癫,踏上了去北京测试小型机的道路。他们带着小型机回来的时候,我们像欢迎领袖一样欢迎他们,因为那是我们最值钱的设备,价格表上的数字吓死人。小型机买回来之后,我们争相合影,然后Oracle就运行在了小型机上,存储方面,从EMC低端CX存储到Sun oem hds高端存储,再到EMC dmx高端存储,一级一级地往上跳。

到2004年底,淘宝网已经有4百多万种商品了,日均4千多万个PV,注册会员达400万个,全网成交额达10亿元。

到现在为止,我们已经用上了IBM的小型机、Oracle的数据库、EMC的存储,这些东西都是很贵的,那些年可以说是花钱如流水。有人说过“钱能解决的问题,就不是问题”,但随着淘宝网的发展,在不久以后,钱已经解决不了我们的问题了。

花钱买豪华的配置,也许能支持1亿个PV的网站,但淘宝网的发展实在是太快了,到了10亿个PV怎么办?到了百亿怎么办?在几年以后,我们不得不创造技术,解决这些只有世界顶尖的网站才会遇到的问题。后来我们在开源软件的基础上进行自主研发,一步一步地把IOE(IBM小型机、Oracle、EMC存储)这几个“神器”都去掉了。

这些神器就如同《西游记》中那些神仙的兵器,他们身边的妖怪们拿到这些兵器能把猴子打得落荒而逃。但最牛的神仙是不依赖这些神器的,他们挥一挥衣袖、翻一下手掌就威力无比了。



一个企业级的Java系统应该采用什么样的架构?

归纳网站遇到的问题,主要是对性能、容量和成本的控制,这有哪些通用的解决方案?

在技术实力得到提升之后,淘宝网的哪些业务有了突飞猛进的发展?哪些业务又会遇到技术的障碍?


(1)【IM工具是什么:IM工具是一种即时通讯方式。im工具可允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频进行交流。一个好的im工具可以帮助节约企业成本,降低沟通门槛,提高工作效率。

在常见im工具使用情况中,我们总会遇到通讯列表联系人繁杂,找人麻烦;传统客服系统中历史消息,信息太多记不住;信息回溯难,聊天记录不完整等等问题。】

(2)BUG-FIX:漏洞修补。

This is a bug-fix release:这是一个漏洞修补的版本。

意思是这个版本没有增加新的功能,只是对上一版本的漏洞(BUG:虫子)做了修补。

(3)去IOE

“去 IOE”指的是摆脱掉IT部署中原有的IBM小型机、Oracle数据库以及EMC存储的过度依赖。告别最后一台小机,意味着整个阿里集团尽管还有一些Oracle数据库和EMC存储,但是IBM小型机已全部被替换。2013年7月10日,淘宝重中之重的广告系统使用的Oracle数据库下线,也是整个淘宝最后一个 Oracle数据库。这两件事合在一起是阿里巴巴技术发展过程中的一个重要里程碑。

————————————————

版权声明:本文为CSDN博主「弱弱的羊羔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/hsghggt/article/details/83720571

你可能感兴趣的:(2021-07-07《淘宝技术这十年》2003-2013读书笔记)