浅析服务网关对企业核心应用架构的重要性

网络 通信技术
无论您是企业内部、云厂商或服务商架构师,在梳理业务场景,规划、部署应用架构之时,服务网关设计与实现的成败,是直接决定您系统交付价值的最直接体现。

[[421049]]

本文转载自微信公众号「新钛云服」,作者杨良春。转载本文请联系新钛云服公众号。

无论您是企业内部、云厂商或服务商架构师,在梳理业务场景,规划、部署应用架构之时,服务网关设计与实现的成败,是直接决定您系统交付价值的最直接体现。

服务网关作用何在?

简言之,路由转发和过滤器。

· 路由转发:接收一切外界请求,转发至后端;

· 过滤器:完成权限校验、限流以及监控等一系列横切功能。

服务网关功能体现在哪?

近些年,随着微服务轻量级应用不断盛行,API网关正扮演着举足轻重的角色。因为它既需要承担企业应用服务对外的唯一门户,更重要的是它提取了许多应用的共性功能。

目前API网关实现的功能包括请求分发、条件路由、API管理、限流隔离、熔断降级、安全策略、监控报警以及调用链追踪等。

一、请求分发

API进行服务发现时给不同url前缀以及微服务应用构建不同的namespace对象,在进行请求匹配时候只需根据url前缀选取到对应的namespace即可匹配到对应微服务应用,后续就是现有微服务框架sdk的功能:路由、负载均衡直至完成整个调用。

二、条件路由&灰度发布

条件路由依然是复用现有的微服务框架,避免重复造轮,网关进行服务发现初始化时会给每个应用创建Invoker代理对象,Invoker内会根据不同的分组创建不同的Space空间,请求调用时会对这些Space空间进行规则匹配,从而决定是否路由到特定分组上。

三、API管理

当大部分应用还是裸连网关而非经过BFF聚合时,有必要对每个接口都进行管理,以区分哪些是微服务间调用,哪些是暴露给前端/客户端调用。

四、限流隔离/熔断降级

API网关作为南北流量的唯一入口,整体治理必要性非常大。

限流隔离主要是作用在流入方向服务端测的流量控制,其中限流主要是控制qps,隔离主要是控制并发数。通过相关SDK(基于Prometheus)暴露metrics数据给监控平台,以便我们随时观察到流量控制水平。

五、安全策略

针对恶意爬虫类异常流量,用户可以在网关管控平台手动进行规则配置,经由配置中心下发到网关的Security Control进行热更新。在请求来临时由它判断是否符合规则,被封禁的流量同样暴露metrics数据给监控平台供我们随时查看。

同时还会将网关日志实时采集至大数据分析平台,经分析如果判断某个ip或者用户存在异常情况,会自动配置安全策略规则至网关管控平台,同时触发一个报警提醒业务owner。目前支持包括根据客户端IP、用户ID、其余http header/attribute等。

六、监控报警

API网关有完善的监控报警、调用链追踪、日志查询等功能。这里监控主要指查询metrics、调用链主要指查询tracing,日志即logging,三者是监控领域典型指标:

此外还支持主机层面的报警,通过内嵌了的metrics sdk暴露metrics指标到endpoint供监控中心拉取,tracing sdk负责埋点打印tracing日志,tracing日志和业务日志均会通过日志采集器输入监控中心处理。在监控平台上,用户可以查询调用链、监控、日志信息,API网关发生的主机异常或者业务异常也会报警给owner。

技术选型

若读者有兴趣自建一个轻量级的服务网关,技术选型推荐如下:

· 开发语言:java + groovy,groovy的好处是网关服务无需重启动态添加filter实现

· 微服务基础框架:Springboot;

· 网关基础组件:Netflix Zuul;

· 服务注册中心:Consul;

· 权限校验:JWT;

· API监控:Prometheus + Grafana;

· API统一日志收集:Logback + ELK; 

· 压力测试:Jmeter。

 

责任编辑:武晓燕 来源: 新钛云服
相关推荐

2022-05-11 08:22:21

服务网关架构

2024-03-20 14:51:03

2023-03-30 10:09:57

数字化转型互联网

2022-12-05 14:49:08

2021-08-18 15:11:02

数字化转型IT技术

2022-05-13 08:00:00

EiPaaS容器

2020-10-11 08:15:03

敏感数据数据安全网络安全

2019-09-24 08:52:49

工业网关工业物联网IIOT

2022-05-16 08:22:11

网关过滤器路由

2019-09-27 09:56:31

软件技术硬件

2016-08-29 20:31:17

2018-04-04 15:10:19

云原生VNFNFV

2013-06-28 11:12:01

定性研究

2015-06-02 13:10:55

2020-04-21 10:51:30

大数据客户服务数据

2021-12-28 00:29:00

网络安全Java编程语言

2010-03-02 15:59:41

WinCE

2023-06-15 14:53:59

大数据

2023-07-14 11:38:36

物联网航空业

2023-06-14 15:46:10

综合布线医疗保健
点赞
收藏

51CTO技术栈公众号