Redis基础学习之阿里巴巴实践分析

前言

大家好,今天我们一起来学习阿里巴巴实践分析!希望你在看完本文后会对阿里巴巴的架构演进有一个全面的了解!

1.3.1 阿里网站架构发展历程

1.阿里网站架构发展历程图

在这里插入图片描述

阿里巴巴的架构发展历程中,我们可以发现:

即使是阿里巴巴这么大的互联网企业,它的中文网站也是一步步演进过来的,并不是一开始就设计好的,因为谁也无法预料未来的发展趋势,所以需要适应时代发展的需求,将网站一步步进行升级设计,甚至重构

2.阿里网站架构发展历程分析

我们会发现,阿里作为技术型互联网企业,一直是走在中国互联网的发展前沿的:

  • 早在2008年到2009年,阿里为了适应海量数据的处理,开始使用Memcached(缓存)集群,甚至像如今都十分流行的分布式存储技术,Hadoop数据清洗,阿里也早有涉及

  • 而到了2010年,阿里开始着手网站安全,使用镜像技术,对应用服务器进行升级,着手解决秒杀活动这样的高并发问题,还有当下广泛使用的No SQL非关系型数据库,阿里也早在10年开始使用

3.阿里网站架构发展历程思考
  • 上面提到阿里当时使用的技术,大部分都是如今仍在广泛使用的热门技术,这让我们不得不敬佩阿里技术团队们长远的眼光和过量的胆识,在大数据时代还没有来临前,阿里早已开始未雨绸缪,所以他们的网站能够很好的应对高并发问题时,成为站在行业前列的互联网企业

  • 以至于后来的天猫淘宝”双十一“活动,阿里能够从容应对各种秒杀和抢购活动,即使系统突然宕机也能很快恢复正常,这都得益于阿里对网站的良好设计和架构,从而造就了每年销售额都创新高的电商神话,一次次刷新我们对阿里应对大量数据和高并发问题的解决能力的认知!

总结

阿里巴巴的网站架构是在一步步演进,他们对新技术的追求都是建立在对过去技术了解透彻的前提下,然后才能不断的发展和进步,正如我们对技术的学习也不能急躁,我们需要脚踏实地,一步一脚印,并且学习技术也不能只浮于表面,需要深入思考和研究,这样我们才不会被时代所淘汰!

1.3.2 第五代网站架构核心和实现

1. 第五代网站架构的核心是什么?

在这里插入图片描述

阿里对第五代网站架构的核心使命也有自己很独到的理解,并将其总结成了三点:敏捷开放体验

这里的敏捷其实就是我们在开发中常提到的**“敏捷开发”**

2. 敏捷开发的概念及具体实现
2-1 什么是敏捷开发?

敏捷软件开发 (又称敏捷开发),是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求软件开发能力

例如为了满足业务的快速增长,我们的网站和App每天都需要上线大量的一些小需求

而随着应用系统日益膨胀,耦合恶化,架构越来越复杂,会带来更高的开发成本,因此,如何保持业务开发的敏捷性,也成了我们在当今开发中所需要重点关注的问题

我们要记住一点,唯有时刻保持并不断提高企业业务的敏捷性,灵活调整业务策略,才能在这瞬息万变的环境中更好生存

在当今环境下,业务的敏捷性建设已经刻不容缓,要为企业业务的灵活性和敏捷性提供支持 ,那么什么是业务的灵活性和敏捷性呢?

2-2 如何理解业务的灵活性和敏捷性?

从某种程度上说,“敏捷性”可以看做是“灵活性”的自然演变,“敏捷性”更多的是与速度需求有关的企业战略能力,而“灵活性”则是一种操作能力 (即随时适应新的,不断变化的需求的能力),它可以实现敏捷性

提升业务的敏捷性提升业务灵活性至关重要,培训发展部门可以从以下几个方面着手:

  1. 建立能力库,让每个员工的能力清晰可见
  2. 根据业务变化策展学习内容,帮助员工创新解决方案
  3. 搭建开发、多元的技术生态系统,提供敏捷的数字化支持
3. 为什么需要进行开放?
  • 这里的开放其实就是开源,将网站和应用,甚至是系统的源代码进行开源, 让更多的开发者参与到网站、应用和系统的建设中来

  • 像如今Java开发中常用的Spring框架和Mybatis框架,这些都是优秀的开源框架,再如拥有巨大用户市场的Android系统,乃至刚问世的国产的鸿蒙系统,这些都是开源的手机操作系统

总结

开源才是技术的王道,开源才能吸引更多的第三方开发者参与进来,开源才能让开发者不再重复造轮子!

4. 为什么需要提升用户体验?
  • 在如今的互联网公司中,软件和应用的开发不仅仅只是让用户能够使用就可以了,在网站的并发压力的快速增长下,用户对使用体验又提出了更高的要求;

  • 由于大量的公司都是在做相同的业务,随着这样的竞争增加,只有做出性能优良,访问速度快,界面美观的产品,才能获得用户的长期支持和使用,因此业务要求越来越完善,对开发者的要求也越来越高!

1.3.3 第五代网站架构的实现

1.架构简单介绍
  • 数据层

    挑战:数据层的大量数据如何处理

    解决方案统一数据服务平台 (例如早期的JDBC就是一个统一的数据服务平台,用来管理不同的数据库,如Oracle或者MySQL等关系型数据库或者Redis等非关系型数据库)

  • 业务层

    挑战:如何管理众多复杂的业务

    解决方案服务化中心 + 模型关系路由框架

  • 展现层

    挑战:如何展现众多不同的视图页面

    解决方案CMS (内容管理系统) + Service tag (服务标签) + 页面组件化框架 + 店铺装修平台 + 组件服务平台

相关名词解释

CMS:全称是Content Management System,即内容管理系统,是一种位于Web前端 (Web服务器) 和后端办公系统或流程 (内容创作、编辑) 之间的系统软件

2.数据层架构图解

在这里插入图片描述

如果你未来想当一个架构师,记住一点:没有什么是加一层解决不了的!

3.数据层架构的具体实现
3-1 处理商品基本信息

例如淘宝网的商品基本信息,包括名称价格商家信息等,使用关系型数据库 (例如MySQL或者Oracle) 就可以解决了!

早在2008年,阿里的王坚就提出了去IOE,经过多年运营阿里云服务器,研发自己的MySQL数据库,如今阿里已经彻底完成了去IOE工作!

这里推荐一篇有关阿里云发展历程文章—《阿里云的这些疯子》,看完之后你就会对王坚这个人心生敬佩!

《阿里云的这些疯子》文章链接:https://blog.csdn.net/ooooooobh/article/details/83142230

知识扩展

什么是“去IOE”

它是阿里巴巴造出的概念。其本意是,在阿里巴巴的IT架构中,去掉IBM的小型机Oracle数据库EMC存储设备,代之以自己在开源软件基础上开发的系统

3-2 处理商品描述和评论

对于商品的描述和评论这样的包含文字比较多的,可以使用文档型数据库 (例如使用BSON格式的MongoDB数据库,如今也是工作应聘的必备技能之一)

3-3 存储图片和视频

而对于存储图片,可以使用分布式文件存储系统来处理,例如阿里云的FastDFS淘宝的TFS谷歌的GFS以及Hadoop的HDFS

知识扩展

什么是FastDFS

FastDFS是一个开源的轻量级分布式文件,它对文件进行管理,功能包括:文件存储文件同步文件访问(文件上传、文件下载)等,解决了大容量存储负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站视频网站等等。

什么是TFS

TFS(全称是Taobao File System)是一个高可扩展高可用高性能面向互联网服务分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问

TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。

它采用了HA (全称Highly Available,双机集群系统简称) 架构和平滑扩容,保证了整个文件系统的可用性和扩展性。

同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能

什么是GFS

Google File System (简称GFS) 是适用于大规模且可扩展的分布式文件系统,可以部署在廉价的商务服务器上,在保证系统可靠性可用性的同时,大大降低了系统的成本

什么是HDFS

Hadoop分布式文件系统 (简称HDFS),是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System);

HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。

3-4 商品关键字搜索

对于商品的关键字搜索,可以使用全文搜索引擎 (例如ElasticSearch,solr,或者ISearch (是由阿里的技术大牛多隆一个人开发出来的))

知识扩展

什么是Elasticsearch?

Elasticsearch是一个基于Lucene搜索服务器 。它提供了一个分布式多用户能力的全文搜索引擎基于RESTful web接口

Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。

Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便;Elasticsearch不仅适用于Java语言,在.NET(C#)、PHP、Python等其他编程语言中也都是可用的,同时Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

什么是Lucene

Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎索引引擎部分文本分析引擎(英文与德文两种西方语言)

什么是solr

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件生成索引;也可以通过==Http Get操作提出查找请求==,并得到==XML格式的返回结果==。

3-5 存储商品热门波段信息

要存储商品热门的波段信息,可以使用内存数据库RedisTairMemcached (缓存)等

知识拓展

什么是Tair

Tair是由淘宝网自主开发的==Key/Value结构数据存储系统==,在淘宝网有着大规模的应用;

Tair是一个==Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式==,分别与==缓存持久化存储对应==。

TAIR除了普通Key/Value系统提供的功能,比如getputdelete以及批量接口,还有一些附加的实用功能,使得其有更广的适用场景,包括:

  • Version支持
  • 原子计数器
  • Item支持
3-6 商品交易和外部支付接口

对于淘宝网的商品交易,需要引入外部的支付接口,如支付宝银行卡支付等,还包括一些第三方的应用!

1.3.4 数据架构日益复杂问题

  • 数据类型太多了!
  • 数据源繁多,经常架构!
  • 数据要改造,大面积改造?
1. 面临哪些问题?

随着数据架构日益复杂,大型的互联网应用必然会遇到大量的问题,让我们来看看包含哪些?

在这里插入图片描述

2.解决方案是什么?
2-1 使用统一数据服务层UDSL解决
  • 使用统一数据服务层步骤

在这里插入图片描述

  • 使用统一数据服务平台图解

在这里插入图片描述

2-2 模型字段的数据路由Mapping DSL

在这里插入图片描述

2-3 热点缓存问题
  • 背景分析

在这里插入图片描述

  • 设计图解

到这里,我们对阿里巴巴架构演进有了一个大致的了解,我们会发现,一个看似简单的网页,其背后的技术却并不简单!

最后送大家一句话 (当然这句话不是我说的,也不是鲁迅说的,而是由B站著名UP主狂神所说):

所有牛逼的人都有一段苦逼的岁月,但是你只要向SB一样的去坚持,终将牛逼!— 遇见狂神说

今天的阿里巴巴实践分析学习就到这里结束了,但这里只是讲了一部分,后面还有一多半的内容,感兴趣的可以自己去了解一下!

参考视频链接:https://www.bilibili.com/video/BV1S54y1R7SB (B站UP主遇见狂神说的Redis基础学习)

参考文档链接:https://www.docin.com/p-286051171.html(阿里巴巴第五代网站架构实践)

参考博客链接:http://www.chinahrd.net/blog/415/1212504/414947.html (学习发展如何帮助企业提高业务敏捷性)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔の蜗牛rz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值