`
taojingrui
  • 浏览: 66761 次
  • 来自: ...
社区版块
存档分类
最新评论

读“淘宝Java中间件之路”后感

 
阅读更多

读了"华黎"的“淘宝Java中间件之路”,记录一下自己的体会。

 

文章主要讲了淘宝在3个方面的改进:消息中间件(JMS的引入),服务框架(业务模块分离)和分布式数据层(如何处理海量数据的数据库操作)

 

1. 消息中间件

和EBAY的“Asynchrony Everywhere”想法类似【见Reference中的“Architectural Lessons (round 1)”】,将原本同步的操作,转成异步操作。此外,淘宝采用JMS的发布者/订阅者模式,因此实现了Publisher和Subscriber两端的代码解耦。

 

2. 服务框架

将业务模块分离,与EBAY的“Partition Everything”想法类似【见Reference中的“Architectural Lessons (round 1)”】。

 

3. 分布式数据层**

文章中,关于数据库架构的演进很典型:数据垂直拆分->数据分库分表->读写分离。

数据垂直拆分:将不同类型的数据,存储在不同的数据库中。(例:将User和Trade分别存储在两个不同的数据库)

数据分库分表:将同一个数据库表中的海量数据存储在多个隔离的数据库中。(例:将User数据拆分成8份,分别存储在8个不同的数据库(User1-User8)中。

读写分离:采用DB复制,数据写在Oracle中进行,然后将Oracle中的数据复制到MySql,用MySql提供数据读功能。

淘宝的分布式数据层(TDDL)实现了由“Client->DB方式走向了Client->Server->DB”。原本Client直接通过JDBC访问数据库。而在Client->Server->DB方式下,TDDL包括了DB-proxy Client和DB-proxy Server。

 

Client无论是用iBatiS,hibernate还是直接写JDBC SQL,实际上都是通过DB-proxy Client来访问DB-proxy Server, DB-proxy Server才会真正实现JDBC的调用。TDDL实现了SQL 解析,路由规则和数据合并,在Client端看不到数据的垂直拆分、分库分表存储和读写分离。

 

此外,TDDL的DB-proxy Client和DB-proxy Server之间通信采用的是NIO方式,这样大大减少了大量数据库连接的压力。

 

 

 

Reference:

eBay’s Challenges and Lessons

1、 Partition Everything 2、 Asynchrony Everywhere 3、 Automate Everything 4、 Remember Everything Fails 5、 Embrace Inconsistency 6、 Expect (R)evolution 7、 Dependencies Matter 8、 Be Authoritative 9、 Never Enough Data 10、Custom Infrastructure

http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http%3A%2F%2Fwww.hpts.ws%2Fsession9%2Fshoup.pdf&ei=ItN6ToabAun14QS9vojgDw&usg=AFQjCNFdLi16gJ5iSKsCViWpGBQ7dae4Ug
 
分享到:
评论
1 楼 bingwong 2011-11-08  
恩, 有道理! 就是不知道TDDL实现的细节,TDDL如何做实现SQL解析的呢? 现在taobao的读写(除了交易库之外)都应该在MySQL库中。

相关推荐

    淘宝Java中间件之路.pdf

    淘宝Java中间件之路

    淘宝Java中间件之路.zip

    淘宝Java中间件之路.zip

    大型网站系统与Java中间件实践(书签版)

    围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的...

    大型网站系统与Java中间件实践

    本书围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件...

    《精通Java中间件编程》源代码.doc

    《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,...

    大型网站系统与JAVA中间件实践

    希望读者通过本书可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的Java并了解构建支撑大型网站的 Java 中间件的实践经验。 对于有一定网站开发、设计经验,并想了解大型网站架构和...

    大型网站系统与JAVA中间件实践(超清版)

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与java中间件实践

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    JAVA中间件配置标准

    JAVA中间件配置标准

    Java中间件技术及其应用开发

    Java中间件技术及其应用开发

    java中间件之tomcat

    TomcatTomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,...

    大型网站系统与JAVA中间件实践-高清-带目录

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与JAVA中间件实践 .pdf

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    《大型网站系统与JAVA中间件实践》 PDF

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    《大型网站系统与java中间件实践》读书笔记ppt分享

    《大型网站系统与java中间件实践》读书笔记ppt分享,纯自己用心编写,同时也给同事做了分享,不过当时很多自己讲的内容没有备注进去

Global site tag (gtag.js) - Google Analytics