淘宝十年历程随笔_七十年历程

淘宝十年历程随笔_七十年历程初创1.淘宝PV页面访问量在十几亿到二十几亿,所以即使访问淘宝首页页面服务器也有成百上千台,这过程用到的负载均衡技术LVS(LinuxVirtualServer由淘宝章文嵩博士开发)2.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

初创

  1. 淘宝PV页面访问量在十几亿到二十几亿,所以即使访问淘宝首页页面服务器也有成百上千台,这过程用到的负载均衡技术LVS(Linux Virtual Server 由淘宝章文嵩博士开发)
  2. 一个页面加载网页资源并发数有限,淘宝通过不同域名绕开这个限制,相当于访问不同的网页。不同地区之间访问也会非常缓慢,这可以通过CDN(Content Delivery Network即内容分发网络的作用)。淘宝在全国各地建立数十个甚至上百个CDN节点,通过一些手段保证你访问的资源站点离你最近的CDN节点。保证了大流量的分散以及各地访问的加速
  3. 这样又会导致一个问题,当上传一张图片如何在各节点都上传上相同的图片,这涉及到内容分发与同步的相关技术。淘宝开发了分布式文件系统TFS(TaoBao File System)
  4. 经过上面三部终于加载完成淘宝首页,首页输入关键字,比如“毛衣”,点击搜索,进入分词库分词,然后由一千多台搜索服务器完成搜索。
  5. 对于已买过的宝贝,可以通过已买到查看当时的快照,这是为了防止商家对商品做出承若的否认。这样的快照肯定非常多,对他的保存和快速调用不是简单的事,其中淘宝用到了Tair(淘宝自行研发的分布式KV存储方案)
  6. 访问行为数据的记录,产生的日志可能非常庞大,达到TB级也正常,这时要解决快速、及时、同步地传输这些日志,淘宝开发了TimeTunnel,用于进行实时的数据传输,然后交由后端系统进行计算报表
  7. mysql第四版,存储引擎MyISAM,这种存储引擎在写数据的时候会把表锁住
  8. 行癫初期数据分库分表做了个数据路由框架DBRoute,统一处理数据的合并、排序、分页等操作。但对容灾的需求没有达到
  9. 之后用spring替换了EJB
  10. 对商品详情这种大数据量字段,从商品表移出到单独的表,后又放入缓存系统,直到现在放入文件系统TFS中
  11. 淘宝网使用GraphicsMagick进行图片处理,采用了面向小对象的缓存文件系统,前端有LVS+Haproxy将原图和其所有的缩略图请求都调度到同一台Image Server(图片服务器)
  12. 淘宝缓存从ESI到基于Berkeley DB的TBstore,又专门为用户系统写了个TDBM,抛弃了Berkeley DB的持久化功能,之后参考memcached改进推出TDBM2.0,再之后将TDBM、TBstore合并推出Tair(TaoBao Pair的意思,Pair即Key-Value数据对)。Tair作为一个分布式系统,由一个中心控制节点和一系列的服务节点组成,我们称中心控制节点为Config Server,服务节点是Data Server。

分布式时代

  1. 系统进行了服务化拆分,集群和分布式又带来很多问题
  2. 为了解决服务间调用,写了HSF同步调用框架和notify异步调用消息中间件
  3. 有了HSF和Notify的支持,在应用级别中,整个淘宝网的系统可以拆分了,还有一个制约系统规模的更重要的因素,就是数据库,也必须拆分
  4. TDDL就是为了解决分库分表分布式情况下导致的各种问题而生
  5. 再要解决集群session问题,考虑用cookie或tair解决
  6. 之后开始做开放平台,需要解决路由、数据规范和授权,当时还没有oauth2,直到2011年才支持
  7. 之后逐渐尝试新兴技术Hadoop和Memcached
  8. 后面主要是一些作者心路历程和一些牛人列传

总结

  1. 看了这本pdf,你会了解淘宝架构的演变,了解系统演进的过程。
  2. 它让我理解了淘宝大多所用的技术为什么不是现在最流行的,在那个年代,他们是技术的先锋,也只有在流量到达了那个级别,迫切需要解决这样的需求,才演变出了现在阿里内部各种架构和中间件体系
  3. 想看具体的pdf内存,下面我留了链接

链接:https://pan.baidu.com/s/1M57ptoxXGuGwiVrLCwhl4w
提取码:m4k0

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168184.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • soapUI工具使用方法、简介、接口测试[通俗易懂]

    soapUI工具使用方法、简介、接口测试[通俗易懂]一、soapUI简介SOAP:   WebService通过Http协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息头的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用WebService。 SOAP协议 =HTTP协议 +XML数

    2022年6月17日
    48
  • 事务隔离级别与锁的对应关系_隔离级别和锁的关系

    事务隔离级别与锁的对应关系_隔离级别和锁的关系隔离级别org.springframework.transaction.annotation.Isolationpublic enum Isolation { DEFAULT(-1), READ_UNCOMMITTED(1), READ_COMMITTED(2), REPEATABLE_READ(4), SERIALIZABLE(8);}DEFAULT :这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是: READ_CO..

    2022年8月8日
    3
  • 【Mybatis】动态SQL 实例

    【Mybatis】动态SQL 实例动态SQL是MyBatis的强大特性之一。如果你使用过JDBC或其它类似的框架,你应该能理解根据不同条件拼接SQL语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态SQL,可以彻底摆脱这种痛苦。使用动态SQL并非一件易事,但借助可用于任何SQL映射语句中的强大的动态SQL语言,MyBatis显著地提升了这一特性的易用性。本篇文章要讲的mybatis元素主要有if choose(when,otherwise)

    2022年6月23日
    27
  • js 浏览器全屏_js判断浏览器是否全屏

    js 浏览器全屏_js判断浏览器是否全屏这篇博文写的比较好,收藏下https://www.cnblogs.com/javaee6/p/3756249.html全屏有兼容性问题,这里针对谷歌浏览器举例Document

    2025年6月18日
    2
  • springboot实现Web系统License授权认证

    springboot实现Web系统License授权认证在我们做系统级框架的时候,我们要一定程度上考虑系统的使用版权,不能随便一个人拿去在任何环境都能用,所以我们需要给我们系统做一个授权认证机制,只有上传了我们下发的lic文件并验证通过,才能正常使用,下面就开始一步一步实现这个功能1.生成机器码我们首先要做的就是对软件部署的环境的唯一性进行限制,这里使用的是macadderss,当然你也可以换成cpu序列编号,并无太大影响,先上代码pri…

    2022年7月26日
    45
  • SpringBoot❤SpringClould常用注解史诗级汇总[通俗易懂]

    SpringBoot❤SpringClould常用注解史诗级汇总[通俗易懂]什么是注解?什什么是注解Java注解是附加在代码中的⼀一些元信息,⽤用于⼀一些⼯工具在编译、运⾏行行时进⾏行行解析和使⽤用,起到说明、配置的功能注解本质上继承Annotation接⼝口,我们可以通过反射获取注解的相关信息,从⽽而做些逻辑操作springboot⾥里里⾯面⼤大量量使⽤用了了注解,@Controller、@RestController、@Service、@Autowire等一、SpringBoot注解1.1.@SpringBootApplication包含@Confi

    2022年7月20日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号