网关(Gateway)也称为网间连接器、协议转换器或网关主机,它是一种网络设备或软件,能够将不同协议或不同体系结构的网络连接起来,使它们能够相互通信和共享资源。网关可以用于广域网(WAN)和局域网(LAN)之间的连接,也可以用于局域网之间的连接。
网关的主要功能是转换和传输数据。当两个不同的网络或协议需要相互通信时,网关可以将数据从一种格式转换为另一种格式,以便它们可以相互理解和通信。例如,如果一个网络使用TCP/IP协议,而另一个网络使用UDP协议,那么这两个网络之间就需要一个能够将TCP/IP数据包转换为UDP数据包的网关。
根据不同的分类方式,可以将网关分为多种类型。以下是几种常见的网关类型:
网关的工作原理主要包括以下几个步骤:
请求转发:将请求转发到目标微服务。
负载均衡:根据各个微服务实例的负载情况或者具体的负载均衡策略配置对请求实现动态的负载均衡。
参数校验:支持参数映射与校验逻辑。
日志记录:记录所有请求的行为日志供后续使用。
监控告警:从业务指标、机器指标、JVM指标等方面进行监控并提供配套的告警机制。
流量控制:对请求的流量进行控制,也就是限制某一时刻内的请求数。
熔断降级:实时监控请求的统计信息,达到配置的失败阈值后,自动熔断,返回默认值。
响应聚合:某些情况下用户请求要获取的响应内容可能会来自于多个业务服务。网关作为业务服务的调用方,可以把多个服务的响应整合起来,再一并返回给用户。
灰度发布:将请求动态分流到不同的服务版本(最基本的一种灰度发布)。
异常处理:对于业务服务返回的异常响应,可以在网关层在返回给用户之前做转换处理。这样可以把一些业务侧返回的异常细节隐藏,转换成用户友好的错误提示返回。
API文档:如果计划将API暴露给组织以外的开发人员,那么必须考虑使用API文档,例如Swagger或OpenAPI。
协议转换:通过协议转换整合后台基于REST、AMQP、Dubbo等不同风格和实现技术的微服务,面向WebMobile、开放平台等特定客户端提供统一服务。
证书管理:将SSL证书部署到API网关,由一个统一的入口管理接口,降低了证书更换时的复杂度。
常见的网关系统有:
除此之外,还有许多其他的网关系统可供选择,如CiscoASA、JuniperSRX等。在选择网关系统时,需要根据具体的需求和场景进行评估和选择。