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

Java中间件:淘宝网系统高性能利器的更多相关文章

  1. Java中间件:淘宝网系统高性能利器(转)

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

  2. 淘宝可伸缩高性能互联网架构HSF(转)

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

  3. 利用Selenium+java实现淘宝自动结算购物车商品(附源代码)

    转载请声明原文地址! 本次的主题是利用selenium+java实现结算购买购物车中的商品. 话不多说,本次首先要注意的是谷歌浏览器的版本,浏览器使用的驱动版本,selenium的jar包版本.   ...

  4. Java 实现 淘宝秒杀 聚划算 自己主动提醒 源代码

    说明 本实例可以监控聚划算的抢购button,在聚划算整点聚的时间到达时自己主动弹开页面(URL自定义). 能够自己定义监控持续分钟数,同一时候还能够通过多线程加快刷新速度. 源代码 package ...

  5. 淘宝网-接口测试白皮书V0.1

    <软件自动化测试开发> 出版了 淘宝(中国)软件有限公司 接口测试白皮书   V0.1 淘宝网平台测试组(qa.taobao.com) 淘宝网-接口测试白皮书 2 目录 1  接口测试的背 ...

  6. 淘宝HSF 框架使用 总结

    @(JAVA开发) 淘宝HSF 框架使用 总结 随着网站访问量增加,仅仅靠增加机器已不能满足系统的要求,于是需要对应用系统进行垂直拆分和水平拆分.在拆分之后,各个被拆分的模块如何通信?如何保证性能?如 ...

  7. 淘宝JAVA中间件Diamond详解(2)-原理介绍

    淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...

  8. 淘宝JAVA中间件Diamond详解之简介&快速使用 管理持久配置的系统

    http://my.oschina.net/u/435621/blog/270483?p=1 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 大家好,今天开始为大家带来我们通用 ...

  9. 淘宝JAVA中间件Diamond

    以下是转载自网上资料,但是根据步骤可以搭建出diamond配置中心服务器. 项目中需要用到diamond的理由是, 项目中使用了很多定时任务和异步任务.而且这些定时任务和异步任务都是分布式的安排在多个 ...

随机推荐

  1. JavaScript 三个常用对话框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. oracle数据库11g(11.2.0.1)安装报错:提示ins_ctx.mk编译错误。

    https://blog.csdn.net/weixin_42967330/article/details/81668404

  3. CCF CSP 201412-4 最优灌溉

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201412-4 最优灌溉 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖 ...

  4. 【51nod】1164 最高的奖励 V2

    题解 一道比较神奇的二分图匹配 既然有n个元素,那么能匹配n个位置,我们把这n个位置找出来,是每个区间从左端点开始找到一个没有被匹配到的位置作为该点(我们忽略右端点) 然后我们从价值大到小,然后从左端 ...

  5. Deepin Linux安装MySQL方法

    sudo apt-get install mysql-server apt-get install mysql-client sudo apt-get install libmysqlclient-d ...

  6. Python下opencv使用笔记(图像的平滑与滤波)

    对于图形的平滑与滤波,但从滤波角度来讲,一般主要的目的都是为了实现对图像噪声的消除,增强图像的效果. 对于2D图像可以进行低通或者高通滤波操作 低通滤波(LPF):有利于去噪,模糊图像 高通滤波(HP ...

  7. 使用apache的ab命令进行压测

    1. 背景:互联网发达的今天,大大小小的网站如雨后春笋,不断出现,但是想要做出一个网站很简单,但是想要做好一个网站,非常非常难,首先:网站做好之后的功能怎么样这都是次要的,主要的是你的网站能承受怎么样 ...

  8. kafka和springboot整合应用

    加载依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>s ...

  9. BZOJ3996 TJOI2015线性代数

    先把矩阵式子化简 原式=∑i=1n∑j=1nA[i]∗B[i][j]∗A[j]−∑i=1nA[i]∗C[i] 因此我们发现问题转化为选取一个点所获收益是B[i][j],代价是C[i][j] 这是一个最 ...

  10. bzoj 2406 二分+有源有汇上下界网络流可行流判定

    弱爆了,典型的行列建模方式,居然想不到,题做少了,总结少了...... 二分答案mid s----------------------->i行-----------------------> ...