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

读“淘宝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中间件的发展历程、现状以及未来的发展趋势。 在淘宝没有使用Java中间件之前,其业务架构主要依赖于传统的负载均衡...

    淘宝Java中间件之路.zip

    《淘宝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中间件技术及其应用开发

    《JAVA中间件技术及其应用开发》课件

    《JAVA中间件技术及其应用开发》是一门深入探讨Java中间件技术及其实现方法的课程。这门课程的课件涵盖了从基础理论到实践应用的多个方面,旨在帮助学习者全面理解并掌握Java在企业级服务中的核心角色。以下是根据...

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

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

    java中间件之activemq

    Java中间件领域的ActiveMQ是一款由Apache开发的开源消息中间件,它为企业级应用提供高效、可扩展、稳定且安全的消息通信服务。ActiveMQ的核心目标是实现标准的、面向消息的集成,支持多语言环境,确保不同平台之间的...

    JAVA中间件配置标准

    Java中间件是构建大型分布式应用程序的关键组成部分,它们提供服务、管理资源、处理并发以及实现其他高级功能。在Java开发环境中,正确配置中间件是确保系统性能、稳定性和可扩展性的基础。以下是一些关于"JAVA...

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

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

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

    《大型网站系统与Java中间件实践》是一本深入探讨如何构建和优化大型互联网系统的书籍,主要聚焦于Java技术栈和中间件的实践应用。通过阅读这本书,我们可以了解到一系列关键的技术概念和最佳实践,这些对于任何想要...

Global site tag (gtag.js) - Google Analytics