5、阿里巴巴实践分析理解数据架构演进

阿里巴巴的商品页面数据复杂,促使其数据架构经历了多次迭代。从早期的Oracle到Java时代的EJB,再到分布式存储和NoSQL的引入,以及第五代网站架构的挑战,包括数据处理、耦合降低、开源和用户体验的提升。统一数据服务平台和热点缓存平台的建设解决了大量问题,使架构更高效和灵活。
摘要由CSDN通过智能技术生成

5、阿里巴巴实践分析理解数据架构演进

在阿里巴巴的商品页面有很多元素,有图片、价格、能够选择颜色、视频、评论、成交信息、以及一些说明等,这些数据是多种多样的。

如此多样的数据很显然一个MySQL是无法解决的。因为一个数据库中要么放视频,要么放评论,有些是需要经常改的,有些是不需要经常改的,

阿里巴巴中文站架构发展历程

  1. 最早阿里巴巴在1999年的第一代网络架构,此时的架构用的还是Oracle数据库。
  2. 2000年正式进入Java时代,最早的时候阿里是从国外购买的PHP制作的网站,改成Java后就变成了Java+Servlet。
  3. 2001-2004进入了一个比较繁重的时代EJB时代
  4. 2005年-2007年就开始了去EJB,开始了EJB的重构,用到了Spring引入了iBatis,Antx,这个时候MQ是消息队列,数据挖掘,也就是阿里在2007年就开始做大数据了。
  5. 2008-2009是淘宝飞速发展的一年,这一年阿里几乎把底层都换了,此时因为大量的数据,阿里不得不开始做分布式,使用了memcached集群,MySQL+数据切分,一些基本的分布式存储,Hadoop、以及CDN(静态资源加速)
  6. 2010年镜像就开始使用了,开始可以做秒杀,这个时候NoSQL已经开始使用。应用服务器开始升级。

接下来进入到了第五代网站架构

第五代

第五代网络架构几乎变革了阿里的所有的东西

  1. 敏捷开发,极限编程,每天都上线大量的需求,程序一定要保证这些需求都能够实时的被处理。此外,应用程序系统越来越大,耦合恶化,所以一定要降低耦合性,开发成本越来越高,因为一个新的程序员入职后,如果耦合太大了,需要将整个系统都研究一遍,目前来看没有多少程序员能够做的到。
  2. 开放,从Facebook和App Store得到的启示一定要开源,开源才是技术的王道,吸引了很多人参与阿里的开发。
  3. 网站的体验,任何一家互联网公司,都不可能只是简简单单让用户能用就可以了!因为大量的公司都是做的相同的业务,所以就被用户逼着用户体验更好。随着这样的竞争,业务就越来越完善了。对于开发者的要求也是越来越高。

面对以上的这些问题,阿里就开始对第五代网站架构去一一的实现,为了实现以上三种使命有很多的挑战

挑战

数据层:面临如此多种类的数据如何去处理,所以数据层的解决方案就是统一数据服务平台,就像Java中的JDBC一样,JDBC就是实现的这个功能,底层的各种数据库不管是MySQL、Oracle还是SqlServer或者别的数据库都通过JDBC来进行连接访问。使用JDBC来去差异化。数据架构

我们看到阿里的数据架构种类很多有Oracle、MySQL、cobar、搜索引擎等等如果每个前端页面都调取就十分的麻烦,这里在架构设计中有一句话叫做架构师的真理是“没有什么是加一层解决不了的,如果加一层解决不了就加两层”,就像JDBC去差异化一样。

  1. 此外一个基本的商品信息,基本信息就存储在MySQL这种关系型数据库中淘宝早年就已经开始去IOE,也就是IBM、Oracle、EMC存储的过度依赖,这时就是阿里的王坚模式(推荐文章:阿里云的这群疯子)当然淘宝内部使用的MySQL并不是我们常用的MySQL

  2. 商品的基本属性、商品的描述、评论(文字比较多)文字比较多就不能放在关系型数据库中,就可以放在文档型数据库中,文档型数据库对于IO的处理性能比较高一点比如MongoDB,

  3. 图片信息存放在一些第三方的接口、分布式文件系统如FastDFS、淘宝自己的TFS、谷歌的GFS、Hadoop的HDFS、阿里云的oss云存储

  4. 商品的关键字(用来搜索的)这时不可能使用SQL来搜索,这个时候就需要用到一些搜索引擎,比如solr、elasticserach,淘宝用的是ISearch(这里不得不提阿里的“多隆”他是阿里的第一个程序员)

  5. 商品热门的波段信息,比如一些秒杀,这些信息会存放在内存数据库中比如Redis、tair、memcache

  6. 商品的交易、外部的支付接口,这些需要调用一些三方应用,比如支付宝、银行接口

我们可以看到一个简单的商品页面他们来自以上不同类型的数据库,但是还能做得到。

大型互联网应用面对的问题:

  1. 数据类型太多了
  2. 数据源繁多,经常重构
  3. 数据要改造

解决问题

UDSL

也就是在应用和底层之间构建一层代理层,所有的东西都提供统一的APIUDSL

从图中我们知道,之前的数据库连接是所有的应用直接连接数据库,阿里在中间加了一层统一数据服务平台。就像Java去连接JDBC去操作数据库一样。UDSL上线之后阿里的数据架构大幅简化了,开发更加敏捷了,但是性能问题还是很严重,这个时候网站面临的主要问题是网站太大了,缓存太多了,只能缓存热点数据,面对这样的问题阿里的结局方案是开发热点缓存平台,提供给UDSL作为缓存系统

缓存

首先作为UDSL的二级缓存,是处在整个统一数据服务平台和数据库之间,用户连接统一数据服务平台,而统一数据服务平台不直接连接数据库而是连接到热点缓存,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值