你管这破玩意儿叫负载均衡?( 三 )
综上所述 , 我们在Nginx上再加了一层LVS , 以让它来承接我们的所有流量 , 当然为了保证LVS的可用性 , 我们也采用主备的方式部署LVS , 另外采用这种架构如果Nginx容量不够我们可以很方便地进行水平扩容 , 于是我们的架构改进如下:
当然只有一台LVS的话在流量很大的情况下也是扛不住的 , 怎么办 , 多加几台啊 , 使用DNS负载均衡 , 在DNS服务器解析域名的时候随机打到其中一台LVS不就行了
通过这样的方式终于可以让流量稳定流转了 , 有个点可能一些朋友会有疑问 , 下面我们一起来看看
既然LVS可以采用部署多台的形式来避免单点故障 , 那Nginx也可以啊 , 而且Nginx在1.9之后也开始支持四层负载均衡了 , 所以貌似LVS不是很有必要?
如果不用LVS则架构图是这样的
通过部署多台Nginx的方式在流量不是那么大的时候确实是可行 , 但LVS是Linux的内核模块 , 工作在内核态 , 而Nginx工作在用户态 , 也相对比较重 , 所以在性能和稳定性上Nginx是不如LVS的 , 这就是为什么我们要采用LVS+Nginx的部署方式 。
另外相信大家也注意到了 , 如果流量很大时 , 静态资源应该部署在CDN上 , CDN会自动选择离用户最近的节点返回给用户 , 所以我们最终的架构改进如下
总结
架构一定要结合业务的实际情况来设计 , 脱离业务谈架构其实是耍流氓 , 可以看到上文每一个架构的衍化都与我们的业务发展息息相关 。
对于中小型流量没有那么大的公司 , 其实用Nginx作为负载均衡足够 , 在流量迅猛增长后则考虑使用lvs+nginx , 当然像美团这样的巨量流量(数十Gbps的流量、上千万的并发连接) , lvs也不管用了(实测虽然使用了lvs但依然出现了不少丢包的现象)所以它们开发出了自己的一套四层负载均衡器MGW
另外看了本文相信大家对分层的概念应该有更透彻的理解 , 没有什么是分层解决不了的事 , 如果有 , 那就再多加一层 。
分层使每个模块各司其职 , 功能解藕 , 而且方便扩展 , 大家很熟悉的TCP/IP就是个很好的例子 , 每层只管负责自己的事 , 至于下层是什么实现的上层是不care的 。
作者:坤哥 , 前独角兽技术专家 , 现创业者 , 持续分享个人的成长收获
编辑:陶家龙
出处:转载自公众号码海(ID:seaofcode)
- 京东|裁员不忘膈应人,这家互联网大厂送的离职礼物恶心到我了!
- 炸锅|酷暑之下,莫让这些谣言再增“热”度
- 有人觉得中暑就是热出来的,吃一些退烧药就好了,这种做法 蚂蚁庄园今日答案6月28日
- 为什么科学家表示人类“灭绝”的可能性极低?这些理由你赞同吗?
- 显卡|这就是RTX 4090 Ti显卡?又厚又重,超过三槽要1200W电源
- 土耳其发现四肢爬行人群,这是咋回事?科学家警告:人类要留心了
- 图像传感器|到手1849元重量189g这才是高性价比的骁龙870直屏手机
- ios16|一步到位能用5年,目前这3款手机能闭眼入,买手机不要太小气
- 微信阅读口袋电子书599元
- 在南极3500米的深海,科学家发现新物种,这是个透明的肉球?
