来源:https://www.zhihu.com/question/61783920/answer/2023377962
先上图:
lvs nginx tomcat cdn,
随业务的部署服务器由一台到多台,传输由一层到多层,架构逐渐复杂,性能逐渐提高,用原文的话:在架构设计中没有什么是加一层解决不了的,如果有那就再加一层,分层使每个模块各司其职,功能解藕,而且方便扩展。
1、开始只有一台tomcat的业务服务器,为了避免单机性能瓶颈与解决单点故障的隐患,增加业务服务器tomcat。为了均衡的将客户端的请求分配到各个业务服务器,需增加一台分配请求的服务器nginx 作为LB(Load Balance,负载均衡)
2、为提升安全 在nginx 与 tomcat间增加一层路由鉴权层gateway,这样的话所有的流量在打到 server 前都要经过网关这一层,鉴权通过后才把流量转发到 server 中,否则就向 client 返回报错信息,除了鉴权外,网关还起到风控(防止羊毛党),协议转换(比如将 HTTP 转换成 Dubbo),流量控制等功能,以最大程度地保证转发给 server 的流量是安全的,可控的。
3、将静态请求单独分离出去,动静分离。
4、为了避免单点故障 Nginx 也需要部署多台,于是我们的架构变成了下面这样,Nginx 部署两台,以主备的形式存在,备 Nginx 会通过 keepalived 机制(发送心跳包) 来及时感知到主 Nginx 的存活,发现宕机自己就顶上充当主 Nginx 的角色
5、Nginx 是七层(即应用 层)负载均衡,转发的时需要建立tcp连接,耗费资源和性能于是可在nginx之前加一层LVS(四层负载均衡器)我们在 Nginx 上再加了一层 LVS,以让它来承接我们的所有流量,当然为了保证 LVS 的可用性,我们也采用主备的方式部署 LVS,另外采用这种架构如果 Nginx 容量不够我们可以很方便地进行水平扩容。
当然只有一台 LVS 的话在流量很大的情况下也是找不住的,怎么办,多加几台啊,使用 DNS 负载均衡在解析域名的时候随机打到其中一台不就行了
合理添加服务器与架构层级,关键在“合理”两个字上,以上内容部分来源如下:
作者:码海
链接:https://www.zhihu.com/question/61783920/answer/2023377962
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。