网关-理解与实现

微服务架构-网关-理解与实现

Posted by Nova on 2023-03-01

首先,微服务架构中为什么需要网关呢?

从整个微服务架构角度,需要有一个统一的地址 对外提供服务,比如 安全风控系统、搜索系统、推荐系统、APP后端、WEB后端,需要有一个统一的入口. 另外从灵活性(扩展性)角度考虑,后端的每一种能力都可以注册到网关(比如搜索a,搜索b,增加搜索c\d\e\f等),而不是硬编码扩展(针对能力的新增). 总结下来就是为提供:

  • 统一入口,系统门面
  • 扩展性、灵活性(针对后端能力)

那网关除了以上两个目的,还应该提供什么作用呢.

  • 路由器(基础职能)
  • 过滤器(可选)

因为 网关需要将外部访问这个地址的流量,根据适当的规则路由到内部集群中正确的服务节点之上. 所以路由是它的基础职能. 针对过滤,因为与外部交互、流量的管控,所以涉及到 安全、认证、授权、限流、熔断、监控、缓存 等作用. 另外还可能支持的:

  • 流量拆分
  • 代理请求重写(支持重写请求上游的host等)

网关选择

针对一些基础的通用的服务架构,可以采用开源的方案,比如:

  • 云原生网关:Apache APISIX、istio
  • 微服务中:springcloud gateway、zuul

网关类型:流量网关、业务网关
百亿流量微服务网关的设计与实现
dubbo网关演进之路

为什么要有一个dubbo网关呢? 更多的是业务网关,针对业务的支持(比如搜索、风控业务后端统一的入口, 解决扩展性、灵活性、统一管理、实验分流等问题).

协议与负载均衡

怎么保证原有的负载均衡策略

性能与可用性

网关的可用性

实现

定义统一的搜索API.