网关到网络有问题如何解决(网关常见问题)
网关常见问题
侯门一入深似海 ,从此萧郎是路人
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 链的方式提供了网关基本的功能 ,例如:安全 、监控/指标 、集成熔断和限流 。创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!