《淘宝技术这十年》麻麻问我为什么跪着看书No.43

2023-10-24 21:40

本文主要是介绍《淘宝技术这十年》麻麻问我为什么跪着看书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。如果觉得还行,就转发点赞评论一下啦,我会很开心的~哇咔咔。

啦啦啦~

0?wx_fmt=jpeg

这篇关于《淘宝技术这十年》麻麻问我为什么跪着看书No.43的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/277939

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

java线程深度解析(六)——线程池技术

http://blog.csdn.net/Daybreak1209/article/details/51382604 一种最为简单的线程创建和回收的方法: [html]  view plain copy new Thread(new Runnable(){                @Override               public voi

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途