基本概念

(1)分布式:系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。

(2)高可用:系统中部分结点失效时,其他结点能够接替它继续提供服务,则可认为系统具有高可用性。

(3)集群:一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。
如Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。
在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点能够自动的接替它继续提供服务,这时候说明集群具有高可用性。

(4)负载均衡:请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中的每个结点能够均匀的处理请求负载,则可认为系统是负载均衡的。

(5)正向代理与反向代理:系统内部要访问外部网络时,统一通过一个代理服务器把请求转发过去,在外部网络看来就是代理服务器发起的访问,此时外部服务器实现的就是正向代理

**反向代理:**当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的反向代理。

纯真年代:单机架构

后端分离技术架构 后端分布式架构_反向代理


以淘宝作为例子:在网站最初时,应用数量与用户数都比价少,可以把Tomcat和数据库都部署在同一台服务器上。浏览器往www.taobao.com发起DNS请求,经过DNS服务器把域名地址转换为实际IP地址,浏览器转而访问该IP地址对应的Tomcat。

架构瓶颈:随着用户的增长,Tomcat和数据集之间竞争资源,单机性不足以支撑业务。

第一次演进:Tomcat与数据库分离部署

后端分离技术架构 后端分布式架构_分布式_02


Tomcat和数据库分别独占服务器资源,显著提高两者各自性能。

架构瓶颈:随着用户数的增长,并发读写数据库成为瓶颈。

第二次演进:引入本地缓存和分布式缓存

后端分离技术架构 后端分布式架构_服务器_03


在Tomcat同服务器上或同jvm中增加本地缓存,并在外部增加分布式缓存,缓存热门商品信息或热门商品的HTML页面。通过缓存能把绝大数请求在读写数据库前拦截掉,大大降低数据库压力。

其中涉及到的技术包括:使用memcached作为本地缓存,使用Redis作为分布式缓存,还会涉及缓存一致性、缓存穿透、击穿、缓存雪崩、热点数据集中失效等问题。

架构瓶颈:缓存抗住了大部分的访问请求,随着用户数的增长,并发压力主要落在单机的Tomcat上,响应逐渐缓慢。

第三次演进:引入反向代理实现负载均衡

后端分离技术架构 后端分布式架构_后端分离技术架构_04


在多台服务器上分别部署Tomcat,使用反向代理软件Nginx把请求均分发送到每个Tomcat中。其中涉及到的技术包括:Nginx、HAProxy,两者都是工作在网络七层的反向代理软件,主要支持http协议,还会涉及session共享、文件上传下载等。

架构瓶颈:反向代理使应用服务器可支持的并发量大大增加,但并发量的增长也意味着更多请求穿透到数据库,单机数据库最终成为瓶颈。

第四次演进:读写分离

时间原因,后续再补充!