淘宝服务端架构!

前言

以淘宝网为例,简单了解一下大型电商的服务端架构是怎样的。如图所示  

最上面的就是安全体系系统,中间的就是业务运营系统,包含各个不同的业务服务,下面是一些共享服务,然后还有一些中间件,其中 ECS 就是云服务器,MQS 是队列服务,OCS 是缓存等等,右侧是一些支撑体系服务。

除图中所示之外还包含一些我们看不到的,比如高可用的体现。淘宝目前已经实现多机房容灾和异地机房单元化部署,为淘宝的业务也提供了稳定、高效和易于维护的基础架构支撑。

这是一个含金量非常高的架构,也是一个非常复杂而庞大的架构,当然这个架构不是一天两天演进成这样的,也不是一开始就设计并开发成这样的,对于初创公司而言,很难在初期就预估到未来流量千倍、万倍的网站架构会是怎样的状况,同时如果初期就设计成千万级并发的流量架构,也很难去支撑这个成本。

因此一个大型服务系统,都是从小一步一步走过来的,在每个阶段找到对应该阶段网站架构所面临的问题,然后不断解决这些问题,在这个过程中,整个架构会一直演进,同时内含的代码也就会演进,大到架构、小到代码都是在不断演进和优化的。所以说高大上的项目技术架构和开发设计实现不是一蹴而就的,这是所谓的万丈高楼平地起。

单机架构

从一个小网站说起,一般来说初始一台服务器就够了,文件服务器、数据库以及应用都部署在一台机器上。也就是俗称的 allinone 架构。这篇推荐看下: 厉害了,淘宝千万并发,14 次架构演进…

多机部署

随着网站用户逐渐增多,访问量越来越大,硬盘、cpu、内存等开始吃紧,一台服务器难以支撑。看一下演进过程,我们将数据服务和应用服务进行分离,给应用服务器配置更好的 cpu、内存等等,而给数据服务器配置更好、更快的大的硬盘,如图所示用了三台服务器进行部署,能提高一定的性能和可用性。

分布式缓存

随着访问的并发越来越高,为了降低接口的访问时间提高服务性能,继续对架构进行演进。推荐看下:面试常问,缓存三大问题及解决方案!关注微信公众号:Java技术栈互联网架构师,获取更多干货。

我们发现有很多业务数据不需要每次都从数据库中获取,于是我们使用了缓存,因为 80% 的业务访问都集中在 20% 的数据上 (二八原则),如果能将这部分数据缓存下来,性能就能提高很多,缓存又分两种,一种是 Application 中的本地缓存,还有远程缓存,远程缓存又分为远程的单机式缓存和分布式缓存 (图所示的是分布式缓存集群)。

我们需要思考几点,具有哪种业务特点的数据使用缓存,具有哪种业务特点的数据使用本地缓存,具有哪种业务特点的数据使用远程缓存。分布式缓存在扩容时会遇上什么问题,如何解决,分布式缓存的算法都有哪几种,都有什么优缺点。这些问题都是我们在使用这个架构时需要思考并解决的问题。

服务器集群

这个时候随着访问的 qps 不断提高,假设我们使用的 Application Server 是 tomcat,那么 tomcat 服务器的处理能力就会成为一个瓶颈,虽然我们也可以通过购买更强大的硬件但总会有上限,并且这个成本到后期是呈指数级的增长。

这时候就可以对服务器做一个集群 (cluster),然后添加负载均衡调度器 (LoadBalancer),服务器集群后我们就可以横向扩展我们的服务器了,解决了服务器处理能力的瓶颈。

此时我们又需要思考几个问题, 负载均衡的调度策略都有哪些,各有什么优缺点,各适合什么场景,比如轮询、权重、地址散列,地址散列又分为原 IP 地址散列、目标 IP 地址散列、最小连接、加权最小连接等等。

服务器集群后,假设我们登陆了 A 服务器,session 信息存放在 A 服务器上了,如果我们的负载均衡策略是轮询或者最小连接等,下次是有可能访问到 B 服务器,这时候存储在 A 服务器上的 session 信息我们在 B 服务器是读取不到的,所以我们需要解决 session 管理的问题。

Session 共享解决方案

session sticky

我们使用 session sticky这种方式来解决这个问题,它的处理规则是对于同一个连接中的数据包,负载均衡会将其进行 NAT 转换后,转发至后端固定的服务器进行处理,这种方案解决了 session 共享的问题。

如图所示客户端 1 通过负载均衡会固定转发到服务器 1 中。缺点是第一假设有一台服务器重启了,那么该服务器的 session 将全部消失,第二是我们的负载均衡服务器成了一种有状态的服务器,要实现容灾会有麻烦。

session 复制

session 复制,即当 browser1 经过负载均衡服务器把 session 存到 application1 中,会同时把 session 复制到 application2 中,所以多台服务器都保存着相同的 session 信息。

缺点是应用服务器的带宽问题,服务器之间要不断同步 session 信息,当大量用户在线时,服务器占用内存会过多,不适合大规则集群,适合机器不多情况。

基于 cookie

基于 cookie,也就是说我们每次都用携带 session 信息的 cookie 去访问应用服务器。缺点是 cookie 的长度是有限制的,cookie 保存在浏览器上安全性也是一个问题。

session 服务器

把 session 做成了一个 session 服务器,比如可以使用 redis 实现。这样每个用户访问到应用服务器,其 session 信息最终都存到 session server 中,应用服务器也是从 session server 中去获取 session。

要考虑以下几个问题,在当前架构中 session server 是一个单点的,如何解决单点,保证它的可用性,当然也可以将 session server 做成一个集群,这种方式适用于 session 数量及 web 服务器数量大的情况,同时改成这种架构后,在写应用时,也要调整存储 session 的业务逻辑。

数据库读写分离

在解决了服务器横向扩展之后,继续看数据库,数据库的读与写操作都需要经过数据库,当用户量达到一定量时,数据库性能又成为了一个瓶颈,我们继续演进。

我们可以使用数据库的读写分离,同时应用要接入多数据源。通过统一的数据访问模型进行访问。数据库的读写分离是将所有的写操作引入到主库中 (master),将读操作引入到从库中 (slave),此时应用程序也要做出相应的变化,我们实现了一个数据访问模块 (data accessmodule),使上层写代码的人不知道读写分离的存在,这样多数据源的读写对业务代码就没有侵入,这就是代码层面的演变。

如何支持多数据源,如何封装对业务没有侵入,如何使用目前业务使用的 ORM 框架完成主从的读写分离,是否需要更换 ORM,各有什么优缺点,如何取舍都是当前这个架构需要考虑的问题。 当访问量过大时候,也就是说数据库的 IO 非常大,我们的数据库读写分离又会遇到以下问题?

例如主库和从库复制有没有延迟,如果我们将主库和从库分机房部署的话,跨机房传输同步数据更是一个问题。另外应用对数据源的路由问题,这些也是需要思考和解决的点。

CDN 加速与反向代理

我们继续增加了 CDN和反向代理服务器 (Reverseproxy server),使用 CDN可以很好的解决不同地区访问速度问题,反向代理则在服务器机房中可以缓存用户的资源。

分布式文件服务器

这个时候我们的文件服务器又出现了瓶颈,我们将文件服务器改成了分布式文件服务器集群,在使用分布式文件系统时,需要考虑几个问题,如何不影响部署在线上的应用访问,是否需要业务部门帮忙清洗数据,是否需要备份服务器,是否需要重新做域名解析等等。

数据库分库分表

这个时候我们的数据库又出现了瓶颈,我们选择专库专用的形式,进行数据的垂直拆分,相关的业务独用自己的一个库,我们解决了写数据并发量大的问题。推荐阅读:不用找了,大厂在用的分库分表方案,都在这了!

当我们把这些表分成不同的库,又会带来一些新的问题。例如跨业务和跨库的事务,可以使用分布式事务,或者去掉事务,或者不追求强事务。关注微信公众号:互联网架构师,在后台回复:2T,可以获取架构干货。

随着访问量过大,数据量过大,某个业务的数据库数据量和更新量已经达到了单个数据库的瓶颈了,这个时候就需要进行数据库的水平拆分,例如把 user 拆分成了 user1 和 user2,就是将同一个表的数据拆分到两个数据库当中,这个时候我们解决了单数据库的瓶颈。

水平拆分时候又要注意哪些点,都有哪几种水平拆分的方式。进行了水平拆分后,又会遇到几个问题,第一 sql 路由的问题,假设有一个用户,我们如何知道这个用户信息是存在了 user1 还是 user2 数据库中,由于分库了,我们的主键策略也会有所不同,同时会面临分页的问题,假设我们要查询某月份已经下单的用户明细,而这些用户又分布在 user1 和 user2 库中,我们后台运营管理系统对它进行展示的时候还要进行分页。这些都是我们在使用这个架构时需要解决的问题。

搜索引擎与 NoSQL

在网站发布并进行了大规模的推广后,导致我们应用服务器的搜索量又飙升,我们把应用服务器的搜索功能单独抽取出来做了一个搜索引擎,同时部分场景可以使用 NoSQL来提高性能。同时我们开发一个数据统一的访问模块,同时连着数据库集群、搜索引擎和 NoSQL,解决上层应用开发的数据源问题。

后序

这里只是简单举例,并没有依据什么实际的业务场景。事实上各个服务的架构是要根据实际的业务特点进行优化和演进的,所以这个过程也不是完全相同的。当然这个架构也不是最终形态,还存在很多要提升的地方。

例如负载均衡服务器目前是一个单点的,如果负载均衡服务器访问不了,那么后续的包括服务器集群等也就无法访问了。所以可以将负载均衡服务器做成集群,然后做一些主从的双机热备,同时做一个自动切换的解决方案。

在整个架构的演进过程中,其实还包含更多需要关注的内容,比如安全性、数据分析、监控、反作弊……

针对一些特定的场景例如交易、充值、流计算等使用消息队列、任务调度……  
整个架构继续发展下去,做成 SOA 架构、服务化 (微服务)、多机房……

最后,我想说高大上的项目技术架构和开发设计实现绝不是一僦而就的。

作者:若汐缘
https://www.jianshu.com/p/796f488fd134

2T架构师学习资料干货分享

互联网架构
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
淘宝技术架构-基于Java构建的淘宝
03-16
NULL 博文链接:https://coolzhi.iteye.com/blog/436396
淘宝为例,解析大型电商服务端架构
Java技术栈,分享最主流的Java技术
03-25 985
Java技术栈www.javastack.cn优秀的Java技术公众号前言以淘宝网为例,简单了解一下大型电商的服务端架构是怎样的。如图所示 最上面的就...
淘宝客户端安全生产体系建设,5214页PDF的进阶架构师学习笔记
最新发布
2401_83974117的博客
04-14 651
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!
Java 8 函数式接口
积少成多
05-30 7455
服务端高并发分布式架构演进之路
淘宝网为例,解析大型Java项目架构演进
MarkerHub的博客
02-16 291
小Hub领读:有点高级,需要细细品读!若汐缘https://www.jianshu.com/p/796f488fd134前言以淘宝网为例,简单了解一下大型电商的服务端架构是怎样的。如图所...
淘宝技术发展(引言)
weixin_34004576的博客
04-05 128
2019独角兽企业重金招聘Python工程师标准>>> ...
淘宝服务端技术架构详解.docx
10-24
淘宝服务端技术架构详解.docx
服务端高并发分布式架构的演变过程
01-27
本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 在介绍架构...
服务端并发分布式架构演进之路.ppt
05-29
服务端从单机到分布式的点点滴滴,一步步随着问题不断演化到如今的微服务、云计算再到淘宝阿里巴巴的亿万级高可用集群架构。从前端到后台知道数据库让你充分了解分布式架构
阿里P8架构师谈:高并发架构解决方案总结
01-27
高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11、双12,就会产生高并发。又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击。服务端:导致站点服务器/DB服务器资源被占满崩溃,数据的...
java 架构 淘宝
sunaf的专栏
03-23 148
J2EE 架构,进去看看吧,java 还是非常牛的! 2011 年 很看好的编程语言!  
淘宝技术架构(内部)
05-24
淘宝技术架构详细介绍,绝密淘宝技术架构详细介绍,绝密淘宝技术架构详细介绍,绝密淘宝技术架构详细介绍,绝密
Java分析淘宝搜索页数据
11-15
利用Java语言来分析淘宝搜索页数据,并生成xls文件,以便跟踪
Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式.txt
08-23
Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式,下载绝对值得,里边干活多多
淘宝商城Java web项目
07-13
这个是一个用Java写的网站 就是一个淘宝购物系统 实现商品显示 购买 下订单 结账 等等功能的一个系统
java+jsp SSH框架仿淘宝网络商城网站源码
04-17
java + jsp 整合SSH框架仿淘宝网络商城源码,直接发布可以使用。
淘宝网Java千亿级并发系统架构设计笔记
m0_64354070的博客
12-09 350
淘宝网经历这么多年双11的“风吹雨打”,早已经能够抗住千亿级的并发量,那么淘宝网的系统架构是如何设计的呢?今天我们就会来系统地学习一下淘宝网Java千亿级并发系统架构设计! 但是在开始之前,我想告诉大家的是,我们要学习他们的思路,但是又不能走他们的老路,为什么呢? 因为淘宝的系统虽然能够同时解决百万、千万人同时在线的需求,但其内部的复杂程度也远非我们能够想象的。盲目地追求只能让我们的架构复杂不堪,最终难以维护。就拿从单体架构往服务化演进来说,淘宝也是在经历了多年的发展后,发现系统整体的扩展能力出
Java系的大网站架构-LinkedIn和淘宝
weixin_33989780的博客
07-27 68
用Java的大网站很多(LinkedIn,淘宝),当然用LAMP(PHP+MySQL)的更多(Facebook是把PHP转成C++编译的,也算),用ASP.NET也有一些(如Stackoverflow,CSDN,京东)。其实高并发的大网站架构和具体的语言没有啥大关系。针对高可用、可扩展的、高可伸缩性的、异步、解耦、面向服务的、分而治之的架构设计才是关键。操作层面来说,分布式文件系统、异步消息系统、...
node.js是什么服务端架构
04-30
Node.js可以作为一个服务端架构,用于构建可扩展、高性能的Web应用程序、API、实时通信应用程序等。它的特点是能够处理大量并发连接,适用于I/O密集型应用,同时也可以通过适当的技术栈支持CPU密集型应用。Node.js的...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 珍藏很久的9个网站,再舍不得也得分享出来 153876
  • 阿里职位层级(附P级详细要求) 74754
  • 知名网站SWAG,因色情内容被警方封杀! 29046
  • 分享6个国内优秀Java后台管理框架的开源项目,建议shou藏 20584
  • 我是如何把SpringBoot项目的并发提升十倍量级的 17126

最新评论

  • 搞Java要成为架构师!需要有什么认证?

    兰叶春葳蕤: 表情包这都是些啥呀

  • JWT 实现登录认证 + Token 自动续期方案,这才是正确的使用姿势!

    islandlxl: 不能解决用户只能在单个设备登录场景

  • JWT 实现登录认证 + Token 自动续期方案,这才是正确的使用姿势!

    islandlxl: jwt-token永远不过期?

  • 孤独后厂村,IT人百态:30万互联网人跳不出的中国硅谷

    piglu__666: 我们的优良传统:肯吃苦

  • SpringBoot+虚拟线程,接口吞吐量成倍增加,太爽了!

    ᥬᥬ ᭄᭄: 关于jmeter 的设置可否详细一下呢表情包

大家在看

  • 小猴编程周赛C++ | 消除因子 179
  • 【第6章】SpringBoot整合Mybatis 555
  • java web爬虫
  • 水果编曲软件 fl studio 21.2.3.4004中文破解版让你的音乐梦想成为现实的软件 566
  • AI编程新手快速体验SpringCloud Alibaba 集成AI功能 525

最新文章

  • 谷歌裁员重创 Flutter,Ubuntu 桌面应用面临重大挑战
  • 线上慎用 BigDecimal ,坑的差点被开了.....
  • 别再自己瞎写工具类了,SpringBoot内置工具类应有尽有 !!
2024
05月 48篇
04月 46篇
03月 45篇
02月 29篇
01月 47篇
2023年561篇
2022年579篇
2021年892篇
2020年965篇
2019年502篇
2018年268篇
2017年306篇
2016年210篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司金昌百度竞价包年推广报价遂宁网站排名优化公司拉萨如何制作网站霍邱设计公司网站多少钱铜陵模板推广多少钱玉树网站改版报价龙华网站推广方案公司永州网页设计南联网站设计模板报价飞来峡网站关键词优化哪家好孝感网页制作报价衡阳网页设计多少钱榆林SEO按效果付费价格阳江建网站天门seo排名多少钱六安网站建设推荐龙华网页制作推荐淮北网站推广系统推荐衢州关键词排名包年推广公司连云港高端网站设计枣庄网站设计哪家好西安网站优化按天计费报价沧州阿里店铺运营多少钱济南外贸网站建设报价延边优秀网站设计价格抚州关键词按天收费公司西宁百度网站优化排名哪家好河池营销型网站建设推荐巢湖网站优化按天收费价格长沙百姓网标王推广价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化