微信搜索 【微观技术】,关注这个不喜欢内卷的程序员。
精彩文章汇总 GitHub https://github.com/aalansehaiyang/technology-talk ,Star 12K ,汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识
大家好,我是Tom哥~
今天跟大家聊下关于网关的话题
互联网公司,不论体量大小如何,其内部的技术架构基本都是相似的,体现在以下几个方面:
-
数据量过大,如何定制化存储
-
访问量高了,如何集群化部署,流量负载均衡
-
响应速度慢了,如何提高处理速度,引入多级缓存
-
如果机器多了,如何保证某台服务器突然抽风,不影响业务集群的服务稳定性
麻雀虽小五脏俱全,今天要讲的网关,就是其中的关键一环,不论公司规模大小如何,基本都要有这个系统。
那么网关是干什么用的?
什么是网关
网关是连接客户端与服务端的中间桥梁,将很多通用地
、非业务逻辑
抽离,前置到网关系统,减少了很多重复性开发工作,是整个网站的唯一流量入口。
为了提高系统的扩展性,网关通常采用组件式架构,高内聚低耦合。
常用的组件功能:
-
黑名单拦截
-
日志
-
参数校验
-
鉴权
-
限流
-
负载均衡
-
路由转发
-
监控
-
灰度分流
-
多协议支持
-
熔断、降级、重试、数据聚合等
系统设计上一般采用责任链
设计模式,定义好抽象接口,每个组件实现自己的专属功能,职责单一。并且根据不同的业务请求API,添加、删除一些节点,动态构建新的节点链,从而满足多样化的业务需求。
网关选型
1、Tomcat/Jetty+NIO+Servlet3
2、Nginx
3、Spring WebFlux
4、Soul
5、Spring cloud Gateway
6、Zuul
7、OpenResty
8、Kong
9、Netty 自建
各个框架的资料网上基本都有,考虑到篇幅限制,这里就不展开分析每个框架的优缺点(如果感兴趣,可以给我留言,人多的话我后面就单启一篇文章来讲一讲&