`
hehaibo
  • 浏览: 416258 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

曾宪杰:解密Java在淘宝中的应用[转载]

 
阅读更多

 

 
2011年07月15日11:41 来源:InfoQ 作者:丁雪丰 编辑:胡铭娅 评论:0
本文Tag: Java Java框架

  【IT168 评论】 在近期举行的淘宝技术嘉年华之淘宝技术专场上,来自淘宝产品技术部中间件团队的曾宪杰为大家介绍了近几年Java在淘宝的应用情况。

  演讲之初,曾宪杰先分四个阶段介绍了淘宝的建构变迁:

  1、 2003年5月至2004年5月,小而快的简单架构,基于LAMP,符合当时的需求。

  2、 2004年2月至2008年3月,一个懵懂的阶段,开始分为多个层次。这个阶段需要一个能够支撑百万到千万用户级的架构,必须容易扩展;系统从WebLogic迁移至了JBoss;开发了大量软件,例如TFS、iSearch、TDBM和CDN。

  3、 2007 年10月至2009年11月,开始有前瞻性,走向产品化及服务化。能够支持大型团队的并行开发,系统逐步模组化、中心化,可快速扩容,可用性大大提升,基 础软件也开始走产品化道路。非核心的数据由Oracle迁移到了MySQL上,构建起了消息系统和服务框架,淘宝开放平台(TOP)正式上线。

  4、 2009年8月至今的淘宝则更系统化、智能化及专业化,这是发展的必然方向。知识经验慢慢融入工具之中,降低了门槛,减少误操作几率;操作从人工处理逐步转为系统自主决策;在稳定性和性能方面有长足发展(在2010年以前eBay的稳定性要好于淘宝)。

  曾宪杰指出所谓大型网站就是要同时满足高访问量和搞数据量的要求,核心是通过分布式系统解决数据的处理、存储及访问问题。随后,他根据淘宝网站的结构示意图,分别介绍了其中涉及到的Java基础技术产品。

   首先是在阿里集团内被广泛使用的Turbine风格的MVC框架――WebX,其核心代码由阿里巴巴18创始人之一的周悦虹(宝宝)编写,具有很好的层 次化、模块化特点,高度可扩展,WebX还对Velocity模板做了编译优化,在一般情况下能有20%至50%的性能提升。

  其次是中间件中的服务框架,负责服务的发布、查询、调用和治理。该服务框架使用上简单透明,支持软负载(没有中间层,服务使用方直接连接到服务提供方,使用服务注册查找中心进行管理),灵活可控,方便扩展,为保证稳定性提供了有力支持。

   接下来是实现系统松耦合的消息中间件Notify,这是一个高性能、高可靠、可扩展组件,支持最终一致性和订阅者集群。所谓订阅者集群,即将订阅消息的 客户端分为多个集群,集群之间采用Topic方式,让每个集群都能收到消息,集群之中再按照Queue的方式,仅由一个客户端来处理消息。

   在数据层上,为了更好地支持分库分表以及读写分离,也做了一定的封装,对上层应用而言还是在操作JDBC,实际则是在使用淘宝分布式数据层 (TDDL),它能实现SQL解析、规则路由、数据合并;既可以用jar的方式在客户端直接连接数据库,也可以让客户端通过DBProxy服务器 访 问数据库;还支持非对称数据复制。如果将众多数据源看成一个矩阵,横向是同一数据库的主库与从库,纵向是不同的数据库,TDDL将数据源分为三个层次 ――TAtomDataSource,封装单个数据源,将配置进行集中管理;TGroupDataSource,封装横向的多个数据源,支持权重和节点的 增减;TDataSouce,管理整个数据源矩阵。在具体的场景中,系统可以选择配置的粒度。

  在分布式存储方面,淘宝基于HBase 0.90.2做了一些扩展,主要是提供了一个运维页面,修正了Master节点恢复时间过长以及备用Master无法自动接管的问题,并做了一些优化。林 昊在下午的iDataForum上就HBase做了更详细的分享。截止两周前的使用情况:

  1、一淘拥有100台服务器 ,已使用60T。

  2、数据魔方拥有10台服务器,已使用500G。

  3、交易日志拥有12台服务器,已使用360G。

  4、UDC拥有8台服务器,使用600G。

  5、此外还有众多应用,例如历史库搜索等。

   搜索方面,基于Lucene和Solr开发了终搜,可进行中心化的配置管理,容易接入,支持多种Dump机制。淘宝还拥有国内最大的Hadoop集群 (云梯I系统),总容量超过1400台服务器,约30PB,利用率55.2%。主要做了JobTracker的异步化,NameNode优化,存储优化以 及小作业优化。为了提升稳定性,除了哈勃(使用Cassandra存储数据,由云梯处理数据)对全网服务器基础数据进行采集分析以外,淘宝还有CSP监 控,它主要监控核心应用,协助进行容量规划,以及服务的依赖于降级。目前CSP一共有15台服务器,15个库,对200多个系统进行监控,每日采集数据超 过5000万行。淘宝如此大规模的系统的运维也是由系统完成,目前在系统的部署、发布、监控方面已经做了很多工作,在运维管理方面稍有欠缺。演讲最后,曾 宪杰列举了众多各有特色的业务系统,分析了它们的架构,说明了各基础技术产品在这些系统中的应用。

  如果您没有参加淘宝技术嘉年华,或者错过了心仪的主题,官方网站上已经陆续放出了演讲的幻灯片,可以访问日程安排页面进行下载。

 

原文转载-http://tech.it168.com/a2011/0715/1218/000001218584.shtml

分享到:
评论

相关推荐

    java解密 java解密

    java解密 java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java解密java...

    Java实现的RSA加密解密算法示例

    知识点2:Java中RSA加密解密算法的实现 在Java中,可以使用Java Cryptography Architecture(JCA)来实现RSA加密解密算法。JCA提供了一个完整的加密解决方案,包括密钥对生成、加密和解密等功能。 知识点3:密钥对...

    des加密解密java实现版本

    在Java中实现DES加密和解密是一项常见的任务,通常涉及到`javax.crypto`包中的类和接口。本篇文章将详细阐述DES加密解密的Java实现过程。 首先,我们需要了解DES算法的基本原理。DES是一种块密码,它将明文数据分成...

    android工具类:基于javaBase64的加密解密工具类

    在Java中,`java.util.Base64`类提供了Base64编码和解码的功能。 二、公钥加密与私钥解密 公钥加密是一种非对称加密算法,包括一对密钥:公钥和私钥。公钥可以公开,用于加密数据;而私钥必须保密,用于解密数据。...

    java实现文件加密解密

    在 Java 中,文件操作的流程一般为:打开-->读取-->对内容进行变换-->写入-->关闭。常规性文件操作会用到的类有五个:File、InputStream、OutputStream、FileInputStream、FileOutputStream,均包含在 java.io 下面...

    3DES加密解密java版+js版

    4. **数据编码**:在Java中,原始数据通常以字节数组形式处理,加密后可能需要转换成Base64编码以便在网络上传输。JavaScript中,加密结果是`ArrayBuffer`对象,通常会转换成Base64或Hex字符串。 5. **密钥管理与...

    DES加密解密一套JAVA&IOS

    在JAVA中,加密过程是可逆的,因此解密是加密的逆过程。 对于iOS平台,苹果的CommonCrypto库提供了DES加密的功能。这个库包含在`Security`框架中,提供了`CCCrypt`函数来进行加密和解密操作。与JAVA类似,你需要...

    javascript加密java解密

    JavaScript加密和Java解密是两种在软件开发中用于保护数据安全的技术。JavaScript通常用于前端,为用户提供了交互式体验,但因为代码可被浏览器直接查看,所以可能存在安全风险。为了保护敏感信息,开发者可能选择对...

    JS加解密 JAVA加解密

    前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密

    RSA分段加解密java和

    - 附件中的证书可能是PEM格式,包含公钥信息,可以使用`java.security.cert.CertificateFactory`在Java中解析,或在PHP中使用`openssl_x509_read()`函数。 - 证书通常用于验证发送者身份,防止中间人攻击。Java中...

    Java解密微信小程序手机号的方法

    Java解密微信小程序手机号的方法 本文主要介绍了Java解密微信小程序手机号的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 AES解密工具类 Java解密微信小程序手机号的方法主要通过创建AES解密工具类...

    JS前台加密,java后台解密实现

    2. **Java安全策略**:在Java中,需要注意JCE的默认密钥长度限制,对于更强大的加密,可能需要安装不受限制的政策文件。 3. **解密后的安全处理**:解密后的用户信息应存储在安全的地方,并遵循最小权限原则,确保...

    CryptoJS+Java前后台加解密

    4. **Java加密**:在Java环境中,可以使用JCE(Java Cryptography Extension)来实现加密和解密功能。JCE提供了一系列接口和类,使得开发者能够集成各种加密算法。在本案例中,Java部分可能使用了`javax.crypto....

    java和javascript之间的DES加密解密

    在Java中,可以使用`javax.crypto`包来实现DES加密解密。首先,创建一个KeyGenerator对象,设置为DES算法,然后生成密钥。接着,创建Cipher对象,初始化为加密或解密模式,并使用密钥。最后,调用`doFinal()`方法...

    RSA加解密的JAVA实现

    在Java中实现RSA加解密,主要涉及到Java的`java.security`和`javax.crypto`这两个包。首先,我们需要生成一对公钥和私钥,这通常通过`KeyPairGenerator`类来完成。以下是一段创建RSA密钥对的示例代码: ```java ...

    JAVA实现DES加解密系统

    **JAVA实现DES加解密系统** DES(Data Encryption Standard)是一种经典的对称加密算法,它在信息...通过这个系统,我们可以理解如何在Java中实现加密和解密流程,同时也能掌握如何结合GUI创建用户友好的应用程序。

    JAVA数据加密解密的实例

    总的来说,这个实例为我们展示了如何在Java中使用DES加密算法进行数据加密和解密。在实际开发中,为了增强安全性,开发者通常会转向更强大的加密算法(如AES),并结合安全的密钥管理和存储机制。同时,非对称加密和...

    java后台及前端js使用AES互相加解密及前端md5加密

    2. **Java后台AES加解密**:在Java中,首先需要创建一个`SecretKeySpec`对象,它包含了加密密钥,然后使用`Cipher`类的`init()`方法初始化加密或解密模式,最后调用`doFinal()`方法进行实际的加密或解密操作。...

    C#RSA加密与JAVA解密,实现相互通信

    在C#中,可以使用`Convert.ToBase64String()`方法,而在Java中,使用`new String(Base64.getEncoder().encode())`进行Base64编码和解码。 在实际应用中,还需要考虑一些细节,例如错误处理、密钥管理、数据完整性...

    C#和Java实现互通的RSA&DES加解密算法

    在C#中,通常使用Base64编码存储密钥,而在Java中也应做同样的处理。DES则需要确保填充模式、初始向量(IV)以及密钥的生成方式一致。 在实际项目中,你可能需要编写C#和Java的示例代码来演示如何使用这些加密算法...

Global site tag (gtag.js) - Google Analytics