【TechTarget中国原创】淘宝网是亚太最大的网络零售商圈,其知名度毋庸置疑,吸引着越来越多的消费者从街头移步这里,成为其忠实粉丝。如此多的用户和交易量,也意味着海量的信息处理,其背后的IT架构的稳定性、可靠性也显得尤为重要。那么,他们是怎么办到的呢?

  曾宪杰(花名花黎)是淘宝Java中间件团队成员,他认为大型网站就是要同时满足高访问量和高数据量的要求,核心是通过分布式系统解决数据的处理、存储及访问问题。

  消息中间件Notify

  早期,淘宝并没有Java中间件,其系统框架比较简单。下面我们就来看看Java中间件在淘宝的诞生和发展。首先要说的是实现系统松耦合和异步处理的消息中间件Notify,这是一个高性能、高可靠、可扩展组件,轻量级支持最终一致性和订阅者集群。所谓订阅者集群,即将订阅消息的客户端分为多个集群,集群之间采用Topic方式,让每个集群都能收到消息,集群之中再按照Queue的方式,仅由一个客户端来处理消息。

  对于淘宝来说,最终一致性至关重要。有过淘宝经验的人都知道,在我们完成付款之后,订单状态会立刻更改为已付款。如果用户付款之后,淘宝不能通知支付宝为该用户的账号充值,商家也不能知道用户已经付款,也就是整个交易的所有参与方不能实现最终状态一致性的话,整个交易也就无法继续下去。曾宪杰笑言:“如果真的发生这样的情况,那么淘宝就不用做了。”

  在实现消息的可靠性上,淘宝采用Oracle+小型机(IBM)+高端存储(EMC)的形式,写双份Mysql,同时基于文件和内存。Notify目前每天消息总量达到4.4亿,每天消息投递条次约15亿次,总共有78个消息主题,786种消息类型,部分消息订阅者超过30个集群。下图是淘宝在应用了Notify之后的系统架构图:

  淘宝服务框架——HSF

  应用了消息中间件之后,淘宝仍旧面临着一系列问题,比如上百人维护一个代码百万行的前台核心应用;多个业务系统中的代码重复编写以及数据库连接数接近瓶颈。那怎么解决呢?服务化成为淘宝的上选。应用服务化解决了业务核心的稳定和一致的问题,重要数据库的连接数也得到了缓解;此外,系统分解后,效率和稳定性也得到了显著提升。

  曾宪杰介绍他们的这个服务框架称之为HSF。目前HSF线上提供的服务数量超过六百个,每日的调用总量达到150亿以上,现在甚至更高。下图是应用了HSF之后的系统架构图:

  淘宝分布式数据层TDDL

  在淘宝的数据库架构演进过程中,为了更好地支持分库分表以及读写分离,进行了一定的封装。对上层应用而言仍旧操作JDBC,实则是在使用淘宝分布式数据层(TDDL),它能实现SQL解析、规则路由、数据合并;既可以用jar的方式在客户端直接连接数据库,也可以让客户端通过DBProxy服务器访问数据库;具备三层的数据源结构,还支持非对称数据复制。

  目前TDDL每日SQL执行量达到30亿以上,每日的数据复制量约为2.8亿多。下图是淘宝加上TDDL之后的系统架构:

  尽管目前淘宝的Java中间件发展顺利,但也并不意味已经解决了一切问题。目前仍旧存在一些问题需要解决,曾宪杰表示在这些问题上,他们希望通过开源的途径得到解决,同时能够根据业务需求提供相应的新功能,另外系统的稳定性仍旧是他们要关注的内容。

转载于:https://www.cnblogs.com/java20130722/archive/2012/08/02/3207009.html

Java中间件:淘宝网系统高性能利器相关推荐

  1. java spark淘宝大数据分析可视化系统(源码+数据+报告)

    下载地址:https://download.csdn.net/download/a13689028602/18298100 项目介绍 java spark淘宝大数据分析可视化系统(源码+数据+报告) ...

  2. 从个人网站到淘宝网 仰观Java时代淘宝的技术发展

    从2003年的一个个人对个人(C2C)的商品交易网站到如今的淘宝网,其实在作为个人网站发展的时间里并不长.那么在这段时间里,淘宝究竟是如何发展的呢?在这篇文章里我们将找到淘宝网的发展历史以及所用到的技 ...

  3. 淘宝可伸缩高性能互联网架构HSF

    http://blog.csdn.net/hpf911/article/details/14165865 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目前的一些 ...

  4. java将淘宝客链接转换为正常商品链接

    参考文章:PHP将淘宝客链接转换提取成普通淘宝链接 最近在做淘宝客网站,有个地方需要把淘宝客链接转换成正常的淘宝链接,找了很多文章都没有java的,只要按照一个php的文章自己改写了一下,文章内容有很 ...

  5. JAVA模拟淘宝、天猫登录

    有时候需要对淘宝.天猫平台进行频繁操作,会触发平台风控,需要我们登陆之后才能进行操作,或者有些功能淘宝开放平台并没有提供api接口,只能通过人工登录进行操作,但是频繁的人工操作比较浪费时间.因此对于模 ...

  6. 基于JAVA解决淘宝爬虫限制

    不仅仅限于java 前言 验证码识别 工具 分析 编码 数据演示 后记 前言 以前做过淘客开发,那时候高佣api很少,高佣的办法就是查询商品模拟转链为高佣,但是后来淘宝慢慢禁止了爬虫一直弹验证码,后来 ...

  7. java模拟淘宝网领取淘宝币--转载

    转载博客地址:http://www.oschina.net/code/snippet_872419_26714 需要httpclient-4.1.3.jar和httpcore-4.1.4.jar以及j ...

  8. java调用淘宝api实例

    淘宝api的简单调用:http://blog.csdn.net/wxwzy738/article/details/17161895 获取sessionkey : http://www.cnblogs. ...

  9. 淘宝客户端高性能高稳定性施用框架的构架

    看到淘宝如此强大的客户端,我不禁想你淘宝客户端的张毅(江湖名号:陶钧)在ADC中对于淘宝框架剖析讲解: 议程包含三大点: 淘宝 Android客户端开发的特点和挑战 HOW TO: TaoBao Cl ...

最新文章

  1. Codeforces 1015F Bracket Substring AC自动机 + dp
  2. leetcode 485,487,1004. Max Consecutive Ones I ,II, III(最大连续1的个数问题合集)
  3. R语言:随机抽样(sample函数)
  4. python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹
  5. UI设计灵感|仪表盘界面如何设计?优质案例给你帮助
  6. get、post请求参数乱码解决方法(qq:1324981084)
  7. 程序员必须掌握的十大经典算法
  8. 自助任务平台WQ5.5.6源码对接微信带分类信息线报赏金赚悬赏猫驴赚网版本
  9. HTML5数据可视化第四弹:交互式地铁线路图
  10. 数位板的主要参数解析
  11. 图像处理YUV的详解
  12. 苹果HomeKit生态深度解析,在智能家居领域后发制人?
  13. 阿伯丁大学计算机科学硕士申请,又双叒有更多硕士专业可以一月入学了 | 阿伯丁大学2021年春季入学专业名单更新(2020年8月更新)...
  14. 什么是Java垃圾回收器
  15. 七牛 java 加水印_七牛云图片加水印
  16. 递归解决不含连续的1的位串个数的问题
  17. ae中计算机打字预设,Typewriter Pro(AE电脑打字动画特效预设)
  18. 【必看】高级网工面试题60例
  19. git修改commit的用户名与邮箱
  20. LeGO-LOAM:Ubuntu20.04下的编译与运行

热门文章

  1. angular安装记录
  2. 洛谷——P1067 多项式输出
  3. 使用默认Model Binding支持集合类
  4. LetCode-MSSQL查找重复的电子邮箱
  5. Android 申请权限结果返回处理
  6. android xml中设置水平虚线及竖直虚线
  7. 微信 网页开发 获取地理位置 高德地图显示
  8. 如何设置Active Directory域控制器
  9. table合并单元格宽度自适应
  10. 苹果ipadwps_ipad可以用wps吗?