惠农网的现状:
惠农网是一家农业B2B电商平台,用户规模在国内农业垂直电商平台中领先,对比2C的平台,用户规模不算大,但电商业务功能还是比较复杂的。惠农网目前采用的是Sprin Cloud的微服务架构。目前承载大概80个左右的服务(每个服务大概1.5w行代码左右)
虽然网上对于Spring Cloud Gateway相关的资料还是比较多,但是大多都是简单的介绍,或者源码的解析,很少有在生产环境中介绍Spring Cloud Gateway的使用方式。
针对上面的问题,惠农网这一系列文章,会从网关设计,代码编写,运维层面和未来考虑,详细描述,如何使用开源组件Spring Cloud Gateway来完成惠农网整体基础网关的整体设计的。
一: Spring Cloud Gateway是什么?
Spring Cloud Gateway是Spring Cloud 的一个全新项目,Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能
二: Spring Cloud Gateway定位是什么?
Spring Cloud Gateway的定位是作为所有请求到后端的必经之路,主要做了一些统一逻辑的处理。比如鉴权、监控、限流等,之后会逐个详细说明使用了什么功能。
三:Spring Cloud Gateway的整体设计图
(1) 其中蓝色标注的模块就是使用Spring Cloud Gateway来进行构建的进程,整个应用被根据入口的流量类型被设计成了4个不同的入口。
(2) appapi模块定位为主业务流量入口(包括app客户端、小程序、m站等前端流量)
(3) hswwapi模块定位运营后台业务流量入口(主要是统一的运营管理后台流量)
(4) openapi模块定位第三方回调或者第三方调用流量入口(主要是业务使用的第三方的流量入口)
(5) pcapi模块定位pc站的业务流量(主要用于应对有可能会有爬虫进行访问页面的流量入口)
(6) 其他的模块为基础模块,用于协助Spring Cloud Gateway和业务基础服务来发挥功效的组件
四:前端如何定义流量的划分
由于定义了四个流量入口,所以也定义了四个域名分别来区分流量的入口,分别是appapi.cnhnb.com, hswwapi.cnhnb.com, openapi.cnhnb.com, pcapi.cnhnb.com
针对不同的域名,虽然都是一套代码, 也需要根据每种流量的特性,来制定不同的过滤器策略,保证满足基础业务的需求。
并且配合不同的域名,也要通过一些限制条件来限制访问的具体路径,所以在业务定义的时候,根据第一层业务路径来进行限制,比如appapi.cnhnb.com域名的网关,只能访问uri为/api 开头定义的接口,hsww.cnhnb.com域名的网关,只能访问uri为 /hsww开头定义的接口。 通过这样的方法,就可以通过最终的监控,清晰的看到外部流量的整体情况,以及对应服务的压力情况。
例子,appapi域名的请求流量的监控
五: 到底每个模块包括了什么功能
Spring Cloud Gateway里面有两个概念,一个是全局过滤器 Global Filter,一个是普通过滤器 Gateway Filter
其中Global Filter 是所有网关模块一起使用,然后每个独立的网关模块有对应的Gateway Filter
公共模块功能包括
(1) eureka服务路由模块
(2) apollo动态配置模块
(3) AccessLogFilter 访问日志的记录模块
(4) BlackIpFilter 黑名单限制模块
(5) GuardFilter 屏蔽服务模块
(6) Metrics监控
(7) Trace监控
(8) Sentry报警
appapi模块功能包括
(1) api前缀路径校验
(2) 参数校验和签名校验
(3) 认证逻辑校验
(4) 选择认证逻辑校验
(5) 文件上传大小限制配置
(6) 限流
(7) 熔断
(8) 第一层path路径移除
(9) 跨域支持
hswwapi模块功能包括
(1) hsww前缀路径校验
(2) 内网用户账户校验功能
(3) 文件上传大小限制配置
(4) 限流
(5) 第一层path路径移除
(6) 跨域支持
openapi 模块功能包括
(1) openapi前缀路径校验
(2) 白名单ip限制
(3) 熔断
(4) 第一层path路径移除
(5) 跨域支持
pcapi 模块功能和appapi保持一致
接下来,会详细介绍每个项目模块具体处理的业务逻辑和具体实现。
转载请注明作者和出处,并添加本页链接。
原文链接: //tech.cnhnb.com/post/2