加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • Part 01●  什么是rsyslog ●
    • Part 02●  网关类型 ●
    • Part 03●  常见网关 ●
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

微服务网关浅析

2023/11/06
2336
阅读需 14 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

作者:周世芬,单位:中国移动智慧家庭运营中心

什么是网关?网关是一个服务器,是系统的唯一入口。网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡等。网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。

Part 01●  什么是rsyslog 

作网关可以提供请求路由、鉴权认证(身份/权限认证)、熔断限流、负载均衡、灰度发布、日志管理、流量监控、协议转换等功能,其中请求路由和过滤功能是网关的核心能力。

请求路由

网关作为系统的统一入口,是需要有请求路由功能的,因为调用端不需要知道自己要用到的其它服务的地址,全部交给网关来处理,通过路由功能就可以将请求转发到目标微服务。

负载均衡

网关结合负载均衡技术,根据各个微服务实例的负载情况,对请求实现和下游服务实现负载均衡。

鉴权认证

一般而言,无论对内网还是外网的接口,SSL 加密及证书管理、Session 验证、授权、数据校验,以及对请求源进行恶意攻击的防范。错误处理越靠前的位置就是越好,而网关是统一管理安全性的绝佳场所,可以将鉴权认证的部分抽取到网关层,下游服务系统无须关注认证的逻辑,只关注自身业务即可。

日志记录

网关可以作为统一的日志记录和收集器,对服务日志的请求信息和响应信息进行记录。

监控告警

网关可以对机器指标、JVM指标等方面进行监控,同时还可以监控流量健康状态,并提供配套的告警机制。

熔断限流

根据客户端的请求次数信息,在网关上可以配置一个阈值,当请求数超过阈值时就直接返回错误而不继续访问后台服务,从而对系统实现限流控制。同时当出现流量洪峰达到配置的失败阈值或者后端服务出现延迟或故障时,网关能够主动进行熔断,保护后端服务。

灰度发布

网关可以根据请求中的特殊标记和后端服务列表元数据标识动态做到对相同服务不同版本的实例进行导流,实现无感知的灰度发布。

API文档

如需要将服务的API暴露给外部的开发人员,那么必须考虑使用API文档,将后端的微服务暴露给网关,这样就不需要知道每一个后端微服务的API文档地址,起到了对后端API聚合的效果。

协议转换

API网关的一大作用在于构建异构系统,API网关作为单一入口,通过协议转换整合后台基于REST、AMQP、Dubbo等不同风格和实现技术的微服务,面向Web Mobile、开放平台等特定客户端提供统一服务。

Part 02●  网关类型 

网关类型大致可分为两类,一类是流量网关,与具体的后端业务应用和服务完全无关,且可拦截许多非法或无效请求,控制流量进入集群;一类是业务网关,具备与业务非强相关的功能,如权限控制、协议适配、熔断限流、安全防护等。

- 流量网关

流量网关通常只专注于全局的API管理策略,比如全局流量监控、日志记录、全局限流、黑白名单控制、接入请求到业务系统的负载均衡等,有点类似防火墙。

- 业务网关

当单体应用被拆分成多个不同的微服务应用后,也带来了一些问题。一些与业务非强相关的功能,比如权限控制、日志输出、熔断限流等,每个微服务应用都需要,导致存在着大量重复实现。业务网关的出现就是为了解决上述问题,将通用功能整合到一起,避免重复开发,这样很多应用层需要考虑的事情可以依托业务网关。

业务网关一般部署在流量网关之后、业务系统之前,比流量网关更靠近业务系统。通常API网指的是业务网关。有时候也会模糊流量网关和业务网关的界线,让一个网关承担所有的工作,所以这两者之间并没有严格的界线。

Part 03●  常见网关 

目前常见的开源网关大致上按照语言分类有如下几类:

Nginx+lua: OpenResty、Kong、Orange、Abtesting gateway等;

Java: Zuul/Zuul2、Spring Cloud Gateway、Kaazing KWG等;

Go: Traefik、Janus、fagongzi、Grpc-gateway;

NodeJS:Express Gateway、Micro Gateway。

1️⃣KONG网关

Kong是流量层网关,是一个高性能、云原生、可扩展的网关系统。首先最底层是基于Nginx,然后在此基础上增加Lua脚本库,形成了OpenResty,拦截请求,响应生命周期,可以通过Lua编写脚本,所以插件比较丰富,同时继承了OpenResty的高性能、易扩展性等特点。主要由3个组件组成:

Kong Server:基于Nginx的服务器,用来接收 API请求。

Apache Cassandra/PostgreSQL:用来存储操作数据。

Kong Dashboard:官方推荐UI管理工具,也可以使用RESTful方式管理 Admin api。

Kong 提供了插件机制来扩展其功能,插件在 API 请求响应循环的生命周期中被执行,且在任何基础架构上都可以运行具有以下的特性:

提供了多样化的认证层来保护API。

可对出入流量进行管制。

提供了可视化的流量检查、监视分析API。

能够及时的转换请求和相应。

提供log解决方案。

可通过api调用Serverless 函数。

图1

2️⃣OpenResty

OpenResty是基于Nginx与Lua的集成开发的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。通过集成众多设计良好的Nginx模块,OpenResty有效地把Nginx服务器转变为一个强大的Web应用服务器,基于此开发人员可以使用Lua编程语言对Nginx核心以及现有的各种Nginx C模块进行脚本编程,构建出可以处理一万以上并发请求的极端高性能的Web应用。

3️⃣Zuul

Zuul是Netflix开源的的一款提供动态路由、监控、弹性、安全的API网关组件,基于Java技术栈开发,可以和Eureka、Ribbon、Hystrix等组件配合使用。

Zuul本质是通过一系列过滤器实现网关的各种功能,主要实现以下功能:

统一鉴权:识别每个资源的身份验证需求并拒绝不满足它们的请求;

监控:与边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图;

动态路由:动态路由请求到不同的后端集群;

压力测试:逐渐增加集群的流量,以评估性能;

限流:为每种请求类型分配容量,并丢弃超过限制的请求;

多区域弹性:跨越AWS Region进行请求路由,旨在实现 ELB(Elastic Load Balancing:弹性负载均衡)使用的多样化,以及让系统的边缘更贴近系统的使用者;

静态响应处理:直接在边缘构建一些响应,而不是将它们转发到内部集群。

图2

4️⃣Traefik

Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台 (Docker、Swarm、 Kubernetes、Marathon、Mesos、Consul、Etcd、Zookeeper等)自动化、动态的对其配置文件设置。它是一个边缘路由器,它会拦截外部的请求并根据逻辑规则选择不同的操作方式,这些规则决定着这些请求到底该如何处理。Traefik提供自动发现能力,会实时检测服务,并自动更新路由规则。

Traefix具有以下几点特性:

无需安装其他依赖,通过Go语言编写的单一可执行文件;

多种后台支持:Docker、Swarm、Kubernetes、Marathon、Mesos、 Consul、Etcd;

支持支持Rest API、Websocket、HTTP/2、Docker镜像;

监听后台变化进而自动化应用新的配置文件设置;

配置文件热更新,无需重启进程;

后端断路器、负载均衡、容错机制;

具有前端web页面监控服务指标

图3

5️⃣Spring Cloud Gateway

SpringCloud Gateway属于Spring Cloud生态系统中的网关,它基于Spring5.0+SpringBoot2.0+WebFlux(基于高性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理方式。特征如下:

集成Hystrix断路器;

集成Spring Cloud服务发现功能;

易于编写的Predicates(断言)和 Filters(过滤器);

可对特定路由进行Predicates和Filters;

具备一些网关的高级功能:路由转发、负载均衡、熔断限流、鉴权、路径重写、日志监控等。

SpringCloud Gateway的三大核心概念,包括Route(路由)、Predicate(断言)、Filter(过滤)。

➢ Route:路由是构建网关的基本模块,由ID,目标URI,一系列的断言和过滤器组成,如果断言为true,则匹配该路由。

➢ Predicate:参考java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容(例如请求头、请求参数),如果请求与断言相匹配则进行路由。

➢ Filter:指的是由Spring框架中GatewayFilter实例使用过滤器,可以在请求被路由之前或者之后对请求进行修改。

web请求通过匹配条件(predicate),定位到真正的服务节点,并在这个转发过程的前和后,通过Filter进行一些精细化控制和管理,有了这两个元素,再加上目标地址,就可以实现一个具体的路由了。

图4

从图5的流程图可知:客户端向Spring Cloud Gateway发出请求,然后在Gateway Handler Mapping中找到与请求相匹配的路由,将其发送到GatewayWeb Handler。

Handler再通过指定的过滤器链来将请求发这到我们实际的服务执行业务逻辑,然后返回。

过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前 (“pre”) 或之后(“post”) 执行业务逻辑。Filter在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,对日志的输出、流量监控等有着非常重要的作用。

图5

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
TJA1055T/3/2Z 1 NXP Semiconductors Interface Circuit

ECAD模型

下载ECAD模型
$19.42 查看
KSZ8721BL-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48
$4.17 查看
KSZ9031MNXIC-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC64

ECAD模型

下载ECAD模型
$4.17 查看
中国移动

中国移动

中国移动有限公司(「本公司」,包括子公司合称为「本集团」)于1997年9月3日在香港成立,本集团在中国内地所有三十一个省、自治区、直辖市以及香港特别行政区提供通信和信息服务,业务主要涵盖个人、家庭、政企和新兴市场的语音、数据、宽带、专线、IDC、云计算、物联网等,是中国内地最大的通信和信息服务供应商,亦是全球网络和客户规模最大、盈利能力领先、市值排名位居前列的世界级通信和信息运营商。

中国移动有限公司(「本公司」,包括子公司合称为「本集团」)于1997年9月3日在香港成立,本集团在中国内地所有三十一个省、自治区、直辖市以及香港特别行政区提供通信和信息服务,业务主要涵盖个人、家庭、政企和新兴市场的语音、数据、宽带、专线、IDC、云计算、物联网等,是中国内地最大的通信和信息服务供应商,亦是全球网络和客户规模最大、盈利能力领先、市值排名位居前列的世界级通信和信息运营商。收起

查看更多

相关推荐

电子产业图谱

移动Labs是中国移动的社交化新媒体平台,是面向外部行业及产业链合作伙伴的信息发布、业务发展和产业推进门户。