后端接入层技术的一些思考
后端接入层技术的一些思考
前言
网上技术文章已经泛滥了,部分写得非常好,看着看着,就觉得自己太菜,感觉也没有下
笔的必要了。但是,写文章也是一个梳理自身思路的一个过程,用输出倒逼输入,一直都是
挺不错的学习方法,不然网上文章看完就不记得是马什么梅了,因此,还是决定写写自己对
于这块技术的一些思考。
接入层,没找到具体的定义,按我的理解,就是位于防火墙之后,承接前端用户请求(通
过浏览器或者 app 等)的最前沿的服务器集群,一般会和用户正向代理软件(浏览器、app
之类)直接建立网络连接,负责接收用户请求,转发到逻辑层服务处理,再将逻辑层响应返
回给用户。当然,这只是最初级的场景,因为接入层实际是流量入口,所以它可以做很多流
量调度的事情,举个例子,大家如果去过都江堰,就会看到江的中间,有一段沙洲,这片沙
洲就能将奔流的岷江水分流,分流后,水流就不至于在暴雨时节对下游造成洪涝灾害。
“鱼嘴”是都江堰的分水工程,因其形如鱼嘴而得名,位于岷江江心,把岷江分成内外二江。
西边叫外江,俗称“金马河”,是岷江正流,主要用于排洪;东边沿山脚的叫内江,是人工引
水渠道,主要用于灌溉。
而且这也才是第一道分水工程,我查了下都江堰的排沙工程,又被秀到了,竟然暗合了软
件架构中的限流熔断思想,当初去都江堰还是应该找个导游,现在觉得真是看了个寂寞。
飞沙堰的作用主要是当内江的水量超过宝瓶口流量上限时,多余的水便从飞沙堰自行溢出;
如遇特大洪水的非常情况,它还会自行溃堤,让大量江水回归岷江正流。
什么叫“水旱从人,不知饥馑”,这就是。
说回正题,接入层就是个流量口子,我们可以根据我们的想法,自由地分发流量给后端的
服务集群(负载均衡),当流量过大时,可以限流熔断,同时,可以进行认证鉴权,打击灰
产,日志记录,监控上报,灰度发布等各类功能。
接下来,会说一下典型的架构。
单 idc 架构(无长连接)
大部分中小型公司,如果就是提供一个网站对外访问,也不需要接收后端通知的话(如实
时 IM 通信),可能都会是这类架构,我任职过的公司里,也有这类架构。下图就以我熟悉
的 nginx 来作为接入层组件了,lvs 也可以,个人研究不多,就先算了。