eaby技术架构变迁
假设你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,增加这个PM、架构师的大家庭
近期在infoq上面看到 ebay介绍其系统架构变迁以及系统设计分享方面的讲座,当中陈述了ebay从1995年到2006年之间系统架构的变化过程。从这里,我们能够学习到很多宝贵的经验来设计一个大容量,高并发,分布式的系统。
ebay的系统架构的变迁主要经历了4个阶段。以下一幅图展现了ebay系统架构变迁的时间表
在ebay的V1版本号,ebay採用的是FREEBSD + APACHE + PERL +DGBM。这是一个比較原始的模型,并且相对照较简单。操作系统,应用server,webserver 以及 数据库server都是在同一台机器中,网络结构在物理上仅仅有一层。
整个站点有四个域名。每一个域名相应不同的应用。每组应用相应一台server。
图表 1 ebayV1系统架构
随着业务量以及訪问量的不断上升。ebay在1999年開始对架构进行升级,技术架构发生了较大的变化,这期间主要是从1999-2004年。而架构的版本则从V2.0到V2.5 。以下我们来看看Ebay V2.0技术架构
V2.0
² 開始採用ORACLEserver。数据库server和webserver分开。数据库独立部署到一台新的机器上面
² 程序逻辑上面已经開始分层。也就是我们常说的mvc3层结构:显示层、业务逻辑层、数据訪问层,而在物理上面还是两层结构 webserver 以及 数据库server
² 编程语言採用C++。那个时候java刚兴起,预计也没有其它好的语言选择了。
V2.1
² 每组应用相应多台server,而多台server组成一个 servler pool(服务池),通过一个负载均衡server来分别转发请求到不同的server
² 数据库部署到性能更加好的server上面
V2.2
² 添加了一台数据库server作为 备份server。防止失败
V2.3
这个版本号仅仅是对每一个应用添加了很多其它的服务器,不断的进行server pool
V2.4
这个版本号最大且最重要的改变就是对数据库进行垂直拆分,即把数据库依照不同的功能模块进行划分,比如交易库,会员库,帐务库
V2.5
这个版本号在2.4的版本号上面,对部分数据库进行读写分离,同一时候对Item(物品条目)数据库进行水平拆分。把Items依照不同的Categoty分配到不同的Categoty商品库里面,。这样大大的扩展了对Items数据库的訪问性能。
图表 2 ebayV2系统架构
从上能够看出ebay V2的架构变迁,主要是通过server的加入。数据库的垂直拆分以及水平拆分,数据库的读写分离操作 来提高整个站点的性能。在web层,通过加入server来进行水平扩展,同一时候相应用服务功能进行垂直拆分,依照不同的业务功能划分到不同的系统。
在数据库层面。进行了读写分离尝试,对数据库进行垂直拆分,同一时候把Items库依照Category进行水平拆分,这样做。分散了对产品库items的集中訪问,只是须要在DAL层提供透明的訪问机制,ebays这里貌似还并没有这个成熟的框架,同一时候不知道 分布式事务ebay在这个阶段是怎样实现的。
V3
整个应用程序开发平台所有替换为j2ee平台。用java改写了整个站点。看来是一次比較大的工作。目的是为模块解耦 以及模块复用。从这里。我们能够看出java在开发复杂企业应用的优势。
V3版本号在数据库层面上面做了更加优化的设计。ebay继续在数据库上面进行优化
垂直拆分数据库,依照 功能模块 拆分为很多其它的子库
水平拆分数据库,对同一类数据。依照key值的不同数据分配到不同的数据库中(详细水平分库的方式有多种。这里就不再介绍了。)在进行水平拆分数据库的时候,ebay也必须建立一套透明的DAL訪问方式,必须提供透明的数据库訪问机制以及透明的数据库路由功能,数据库的物理结构变更不会影响到代码的逻辑变动。
在这里,ebay也在数据库层给出了最佳实践:
² 尽量降低数据库CPU的消耗,比如不使用存储过程,仅仅使用少量的触发器
² 降低数据库层面的逻辑功能。比如数据转化。组合,这些都放在逻辑层
² 降低动态SQL。主要是SQL中參数的动态生成功能,这一点,公司的DBA也在强调
² 尽可能的缩短数据库的事务时间,尽可能早的结束事物
² 尽可能的採用异步更新数据库方式,分散数据库的压力,比如消耗数据库时间的操作要放在夜间处理。
² 不使用分布式事务,看来分布式事务的确不使用高并发性的系统
在应用逻辑层面。ebay把系统依照功能划分成很多不同的模块。每一个模块作为一个子系统,同一时候通过水平扩展子系统server数量来提高整个系统的伸缩性。
以下看看ebay在应用层面给出的最佳实践
² 保持应用层子系统全然是无状态的,能够水平进行无限扩展以提高伸缩性,通过负载均衡server均等分配到各个子系统的实例池里面。
² 尽可能的使用缓存,缓存可以降低数据库的压力,使用空间来换时间
² 严格划分系统的各个层面。表现层,业务逻辑层,服务集成层。DAO层,基础设施层。
在应用层的设计上面,ebay通过不同的功能划分了非常多domain,每一个domain仅仅负责自己的功能的业务逻辑,domain与domain之间是不会依赖的,同一时候还会提供common domain 提供各个 domain之间的交互以及依赖,见下图:
因为ebay的数据库依照逻辑划分了非常多不同的字库。那么ebay必须提供透明的訪问数据库的能力,举个样例:ebay把Items依照categoray分成了非常多sub items库。假如须要查询出来某一个用户所购买的全部Items。那么必须要查询全部的sub items库,把数据库组合出来,那么DAL层必须屏蔽数据库的物理结构。一次性的把全部的sub items库中相应的数据查询出来。而这个訪问。相应用来说是透明的。应用不须要关注究竟items有多少个子库。
总结:在大规模,高并发系统的设计中,最经常使用的技术就是分层和缓存,把一个业务流程垂直分解成几个系统,每一个系统提供不同类型的服务,一个业务流程通过不同的服务组装起来,这就是SOA设计的思路吧。每一个系统能够进行水平集群,提供无状态的服务,能够水平无线扩展,数据库层面,主要就是用到垂直分库。水平分库。读写分离,热备份等技术,提高数据库的读写能力。在应用层能够考虑使用集中式缓存或者分布式缓存来降低数据库的訪问压力。
假设你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,增加这个PM、架构师的大家庭
转载于:https://www.cnblogs.com/mfmdaoyou/p/6999338.html
eaby技术架构变迁相关推荐
- 龙珠直播CTO谭振林:从0到500万用户背后的技术架构变迁
"互联网+"为创业团队实现业务的快速增长带来了机遇,同时也对技术团队带来了更多的挑战.国内游戏直播平台龙珠直播,2015年2月正式上线,到现在只是短短的10个月,其技术架构就经历了 ...
- [转]CTO谈豆瓣网和校内网技术架构变迁
<!--done--> 罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中.洪强宁,2002年毕业于清华大学,现任北京豆瓣互动科技有限公司首席架构师.洪强宁和他带领的 ...
- CTO谈豆瓣网和校内网技术架构变迁
豆瓣网CTO洪强宁讲述网站架构变迁 罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中.洪强宁,2002年毕业于清华大学,现任北京豆瓣互动科技有限公司首席架构师.洪强宁和他带领的 ...
- 淘宝技术架构从1.0到4.0的架构变迁
淘宝技术架构变迁 自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长.创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux ...
- 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料
淘宝技术架构变迁 自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长.创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux ...
- 专访吕毅:链家网技术架构的演进之路
链家网虽然成立于2010年,但是其技术团队却于2014年正式创立.此前技术开发采用的是传统模式,每个业务都会单独地重新开发,不仅造成各个模块孤立,并且开发人力投入成本巨大.鉴于互联网时代企业业务发展迅 ...
- 云计算技术 — 数据中心基础架构变迁史
目录 文章目录 目录 数据中心基础架构变迁史 1997-2007,第一波浪潮:裸机服务器基础架构 2005-至今,第二波浪潮:虚拟化基础架构 / 云计算 2010-至今,第三波浪潮:超融合基础架构 ( ...
- 【SDCC 2016】蘑菇街、华为、阿里巴巴、58到家、同程旅游、链家网、京东的架构变迁与技术演进...
[CSDN现场报道]2016年11月18日-20日,由CSDN重磅打造的年终技术盛会 -- "2016中国软件开发者大会"(Software Developer Conferenc ...
- 从零到百亿互联网金融架构发展史---架构变迁
回想起从公司成立敲出的第一行代码算起到现在也快三年了,平台的技术架构,技术体系也算是经历了四次比较重大的升级转化(目前第四代架构体系正在进行中),临近年底也想抽出时间来回顾一下,一个小公司从最开始的零 ...
最新文章
- 【tf.keras】TensorFlow 1.x 到 2.0 的 API 变化
- python3 网络编程 主机字节序 网络字节序 相互转换
- jQuery 仿淘宝 鼠标悬停显示大图效果
- kafka解决了什么问题?
- 1.0jpa 2.0_JPA 2.1:不同步的持久性上下文
- 应用数学软件测试题,高等数学第六章定积分应用综合测试题
- Android 布局 优先显示右侧的控件
- 样式化加载失败的图片
- 放苹果(整数划分变形题 水)poj1664
- L298电机驱动原理图+PCB
- vue 显示led数码字体
- **IEEE论文的检索下载及引用格式**
- MindManager2022安装使用教程
- 将ppt转换成html文件格式,如何将幻灯片.pptx格式转换成.ppt格式
- 纪中游记(7.11~7.22)
- 弘辽科技:刘强东下“重手”
- 数据分析师,岗位真相最全解析!
- try catch和finally搭配return执行常见面试题讲解
- 求自然数e的近似值,要求误差小于10 -6
- 笨方法扩容C盘(C盘内存不足)不用重装系统软件配置路径