网关常见问题
侯门一入深似海,从此萧郎是路人
1、什么是网关
总而言之,网关就是统一入口、鉴权校验、动态路由和过滤封装。
2、为什么需要网关
- 微服务架构下,单体应用被切割成多个微服务,如果将所有的微服务直接对外暴露,会出现安全方面的各种问题,且内外耦合严重。
- Gateway 网关架构可以细到为每一个服务的实例单独配置一个 Gateway,也可以粗到为整个架构配置一个 Gateway。这样,原本复杂的系统架构就会变得更简单可控。
3、网关设计
我认为没有很大的必要去重复造车,现在市面上较为成熟的网关方案还是挺有借鉴价值的,不过我们仍可以了解下网关的设计思路。
不管是何种网关都需要满足以下的功能和特性: 请求路由、服务注册、负载均衡、弹力服务、安全、高性能和高可用。
请求路由
当客户端请求过来,调用端无需知道自己实际调用的其它服务地址,统一交给 Gateway 来处理,避免了内部多个微服务直接对外暴露。
服务注册
网关的服务注册功能,就是为后端的服务实例提供服务的地址注册、取消注册,也就是注册一些 API 接口。这样 Gateway 就可以根据接收到的请求中的信息来决定路由到正确的后端服务上。
负载均衡
一个网关用于接收多个服务实例,所以网关还需要在各个对等的服务实例上做负载均衡策略。常见的策略就是 Round-Robin 轮询、权重和最少使用。
弹力服务
网关应该让应用服务只关心自己的业务逻辑,要引入异步、重试、幂等、流控、熔断和监视等弹力服务手段。
安全
外界访问的第一步就是网关,其安全要求毋庸置疑。打头阵的网关作为全系统第一道防线对后端的服务进行保护,基本要满足SSL 加密及证书管理、Session 验证、授权、数据校验,以及对请求源进行恶意攻击的防范。
4、网关落地
了解了大概的网关设计思路,可以根据公司项目业务需求进行技术选型,现主要分为流量网关和业务网关两大类。
流量网关
流量网关,大致就是控制流量进入集群的一类网关,比如一个服务集群有很多非法或无效的请求,需要将请求拒之门外,降低集群的流量压力。
业务网关
业务网关更注重与服务器应用层交互,如各个微服务的权限控制、日志输出、数据加密和熔断限流等。
5、常见的开源网关
OpenResty
- OpenResty是一个流量网关。
- OpenResty是基于 Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的Web 服务和动态网关。
Kong
- Kong 是基于OpenResty开发的一个流量层网关,是一个云原生、快速、可扩展、分布式的Api 网关。
- Kong继承了OpenResty的高性能、易扩展性等特点,且支持通过简单的增加机器节点,可以很容易的水平扩展。
- Kong优化了网关的访问限制、安全、流量控制、分析监控、日志、请求转发和合成功能相关功能。
- Kong更加专注于全局的Api管理策略,如全局流量监控、日志记录、全局限流、黑白名单控制、接入请求到业务系统的负载均衡等。
Zuul1.0
- Zuul是Netflix开发的一套通用API网关,Zuul1.0采用同步阻塞架构,优化后的Zuul2,用Netty Server代替Servlet,升级为异步非阻塞架构。
- Zuul使用了一系列不同类型的过滤器,够快速灵活地将动态路由、监视、弹性和安全性等功能应用到服务中。
- Zuul提供了一个动态读取、编译和运行这些过滤器的框架。过滤器之间不直接通信,而是通过每个请求特有的RequestContext共享状态。
Spring Cloud Gateway
- SpringCloud Gateway 是Spring Cloud 生态系统中的网关,底层使用了高性能的通信框架Netty,其目的就是为微服务架构提供一种简单有效的统一的 API 路由管理方式,替代 Zuul 实现微服务全家桶技术栈。
- Spring Cloud Gateway 不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/指标、集成熔断和限流。
侯门一入深似海 从此萧郎是路人
标签:网关,常见问题,服务,请求,流量,Gateway,路由 From: https://www.cnblogs.com/taojietaoge/p/17028384.html