在学习完前面的知识后,微服务架构已经初具雏形。但还有一些问题:不同的微服务一般会有不同的网 络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以 维护。如下图:如果让客户端直接与各个微服务通讯,可能会有很多问题:客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度在某些场景下存在跨域请求的问题加大身份认证的难度,每个微服务需要独立认证因此,我们需要一个微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服 务网关。客户端只需要与网关交互,只知道一个网关地址即可,这样简化了开发还有以下优点:1、易于监控2、易于认证3、减少了客户端与各个微服务之间的交互次数服务网关的概念什么是微服务网关API网关是一个服务器,是系统对外的唯一入口。API网关封装了系统内部架构,为每个客户端提供 一个定制的API。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在 网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和 管理服务。作用和应用场景网关具有的职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。当然,最主 要的职责还是与“外界联系”。常见的API网关实现方式Kong 基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。 问题:只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方 式。Zuul Netflix开源,功能丰富,使用JAVA开发,易于二次开发;需要运行在web容器中,如Tomcat。 问题:缺乏管控,无法动态配置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如 Nginx;Traefik Go语言开发;轻量易用;提供大多数的功能:服务路由,负载均衡等等;提供WebUI 问题:二进制文件部署,二次开发难度大;UI更多的是监控,缺乏配置、管理能力;Spring Cloud Gateway SpringCloud提供的网关服务 Nginx+lua实现 使用Nginx的反向代理和负载均衡可实现对api服务器的负载均衡及高可用 问题:自注册的问题和网关本身的扩展性
本文出自快速备案,转载时请注明出处及相应链接。