欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网关的实现以及优化

程序员文章站 2024-02-11 20:43:04
...

网关的作用?

例子:就像公司的保安:检查人员身份,引导新人员找到相关的部门。减少人员直接冲进办公室
实际:提供统一的API,可以屏蔽真实调用的服务信息,隐藏保护,屏蔽内部细节

    反向路由:能够将外部调用转换成内部服务,通过负载均衡分发请求到服务器
	认证安全:拦截无效流量的请求。爬虫,黑客。突发流量的限流熔断,保障服务稳定
	灰度发布:对于版本迭代进行灰度发布控制
    性能监控:可以查看api的调用时间,次数,耗时等
	降级限流:防止突发流量暴增。进行限流。保障系统的稳定
	系统日志:流量都经过网关,可以记录审计日志,通过日志可以查看到性能问题流量都经过网关
	数据缓存:
	如果传输协议不一致,需要对协议进行转换

网关的分类

springcloud的zuul, gateWay, Kong, nginx+lua, 自研网关
自研网关基于:netty,servlte等技术
zuul: java语言开发,方便二次开发。并发能力不强,基于tomcate部署,或通过springboot将项目跑起来。
nginx:是C语言开发实现,需要理解C语言,并发能力强,很难从nginx内核等方面定制

整体简单项目架构

网关的实现以及优化
网关的实现以及优化

网关路由实现架构

改造zuul的网关:

因为每次新增服务,都需要配置网关路由到服务的地址规则,这样就需要重启网关就行生效。但是实际项目中,不能频繁的重启网关服务。所以,需要一套可视化系统进行配置。这样一套实现方案。

解决的问题:  1.api的存储    2.api列表的时时更新
思路:数据落地db存储,修改网关路由加载路由的规则(配置文件读取url,加载到网关列表)。
         为了提高网关的高可用,做副本集群容错。可高网关的并发能力,做网关的量扩容。
        这部分和其他的业务高可用方案一致
        通过定时任务, 重写locateRoute加载网关api数据的接口方法,
         去加载数据库中的api,进行解析,格式化成配置的url,parh格式。封装返回结果Map<String,prperties>。

灰度发布:线上服务仍然旧的代码。部署部分机器为新代码,通过流量比例的通过。将部分流量分发到部署新代码的机器,经过验证没有问题,在全部部署,流量打开。
网关的实现以及优化

相关标签: 技术总结