• 《淘宝技术这十年》笔记与感悟


    《淘宝技术这十年》从工程师的角度讲述淘宝这个超大规模互联网系统的成长历程,及其所有主动和被动的技术变革的前因后果。书中有幕后故事、产品经验、架构演进、技术启蒙,也有大牛成长、业内八卦、失败案例、励志故事。
    这本书是电子商务老师推荐阅读的,对程序员来说是很棒的一本书,我也推荐大家阅读。

    1.双11巨大访问量背后的技术

    《你刚才在淘宝上买了一件东西》

    (1)访问入口的负载均衡
      通过DNS解析域名,将访问分配到不同的入口,尽可能保证较快的一个。
    (2)首页负载均衡生成
      LVS(Linux Virtual Server)负载均衡系统生成HTML;
    (3)CDN(Content Delivery Network)
      访问 JS、CSS、图片等站点是离你最近的CDN节点;
      (浏览器在同一个域名下并发加载的资源数量是有限的,例如IE 6和IE 7是两个,IE 8是6个,chrome各版本不 大一样,一般是4~6个。)
    (4)分布式文件系统
      TFS(TaoBao File System), 针对总容量达到PB级别的静态文件;
    (5)搜索意图分类PV(Page View)

    • 浏览型:没有明确的购物对象和意图;
      “2010年10大香水排行”
    • 查询型:有一定的购物意图;
      “适合老人用的手机”
    • 对比型:已经缩小了购物意图;
      “诺基亚E71 E63”
    • 确定型:已经做了基本决定;
      “诺基亚N97”

    (6)商品详情分布式存储
      Tair, 针对每年上百亿笔交易的商品详情快照的调用;
    (7)交易记录分布式存储
      TimeTunnel:淘宝实时数据传输平台, 用于日志数据实时的数据传输,后端系统进行后续的业务 逻辑和数据分析;
    (8)超大规模云梯数据系统
      具有数据压缩比1:120极限存储技术的数据仓库, 通过云梯和ODPS数据分析系统进行分析和挖掘。

    2.淘宝网是如何诞生的?

    2003年4月7日,成立了10人的创业团队,成员包括:三个开发工程师(虚竹、三丰、多隆)、一个UED工程师 (二当家)、三个运营工程师(小宝、阿珂、破天)、一个经 理(财神),以及马云和他的秘书。

    时机:当时eBay和易趣在资本方面打得不可开交,要保密,趁机快速上线,抢占市场。
    2003年5月10日上线,一个月的开发时间。买了一个网站系统PHPAuction,在此之上修改、本地化。

    购买网站是怎么选择的---维护成本低、方便扩展和二次开发。
              ---轻量一点的,简单一点的。

    网站架构:
    初期:LAMP(Linux+Apache+MySQL+PHP)
    优点:无须编译,发布快速,PHP(Hypertext Preprocessor)语言功能强大,能做从页面渲染到数据访问所有的事情,技术都是开源、免费的。
    (将程序嵌入到HTML中执行效率高,编译后的代码可加密)
    修改:数据类型; 增加后台管理的功能; 页面模板改得漂亮一点; 页眉和页脚加上自己的站点简介; 拆分数据库:原来是从一个数据库进行所有的读写操作,现在把它拆分成一个主库、两个从库,并且读写分离。
    存储容量增加了,有了备份,使得安全性增加了,读写分离使得读写效率得以提升。

    3.为什么要将mysql换成oracle

    mysql默 认的存储引擎MyISAM,这种存储引擎在写数据的时候会把表锁住。
    当Master同步数据到Slave的时候,会引起Slave写,这样在Slave 的读操作都要等待。
    还有一点是会发生Slave上的主键冲突,经常会 导致同步停止。
    当年的MySQL不比如今的MySQL,在数据的容 量和安全性方面也有很多先天的不足(和Oracle相比)。

    4.更换为Oracle数据库出现了什么问题?如何解决的?

    oracle的强大的性能和并发访问能力源于连接池的设计,连接池中放的是进程级的长连接 。
    连接创建和断开的开销很大,而php语言访问数据库时,每一个请求都是一个连接。
    如果是长连接,应用服务器增多时,连接数就多了,就会把数据库拖挂,如 果是短连接,频繁地连接后再断开,性能会非常差。
    在网上找到一个开源的连接池代理服务SQL Relay,这个东西能够提供连接池的功能。

    5.支付宝产生的背景是什么?

    买家打钱给卖家都是通过银行转账汇款,有些骗子收 了钱却不发货,干脆逃之夭夭。为了保证支付的安全,想到了“担保交易”这种第三方托管资金的办法。

    6.淘宝打败易趣的三招

    免费、安全支付、淘宝旺旺。支持同城线下交易,用户操作简单,用户需求反馈快。

    7.为什么要换JAVA?

    第二个架构不是一个稳定的版本,SQL Relay的问题解决不了,数据库必须要用Oracle,php和oracle不搭,只能换开发语言。

    Java是当时 最成熟的网站开发语言,它有比较良好的企业开发框架,被世界 上主流的大规模网站普遍采用。另外,有Java开发经验的人才也比 较多,后续维护成本会比较低。
    请Sun公司的人,他们的大致方案是 给业务分模块,一个模块一个模块地渐进式替换。

    8.提升系统性能的方法?

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

    个人感悟-未完待续

    最近要准备课程考试和实验,这本书还没有读完。目前有几点感悟:

    • 好的架构是进化来的,而不是设计来的。固然可以借鉴其他优秀网站架构,但网站自身的情况不同,是需要结合实际、与时渐进的。
    • 看清市场、看清竞争环境、看清用户需求,在机遇到来之前累积资本,眼界、人才、机遇总是一个团队成功的基本要素。
    • 大牛成功后的风光也是天赋、勤奋、执着的累积,不经一番彻骨寒,怎得梅花扑鼻香,诸君共勉。
  • 相关阅读:
    【整数划分系列】
    【51nod-1183】编辑距离
    【河南第十届省赛-D】年终奖金
    【河南第十届省赛-B】情报传递
    【河南省第十届ACM 省赛 A-谍报分析】
    Node.js函数介绍(参数为一个函数)
    Webstorm设置Node.js智能提示
    TortoiseSVN服务器ip地址修改后如何使用
    vue项目组件的全局注册
    ES6 类(Class)基本用法和静态属性+方法详解
  • 原文地址:https://www.cnblogs.com/mthz/p/taobao.html
Copyright © 2020-2023  润新知