Spring Cloud之(十六)微服务网关概述

十六、微服务网关概述

16.1 微服务网关引入

在前面的微服务架构中,不同的微服务有不同的网络地址,客户端在访问这些微服务时必须记住这几十个甚至是几百个地址,这对于客户端一方来说太复杂也难以维护:

在这里插入图片描述

如果让客户端直接与各个微服务通讯,可能会有很多问题:

  1. 客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度;
  2. 在某些场景下存在跨域请求的问题;
  3. 加大身份认真的难度,米格微服务需要独立认证。

因此,我们需要一个微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服务网关,客户端只需要与网关交互,只知道一个网关地址即可,这样就不仅简化了开发,还有很多优点:

  1. 易于监控;
  2. 易于认证;
  3. 减少了客户端与各个微服务之间的交互次数。

在这里插入图片描述

16.2 微服务网关的概念

  • 什么是微服务网关?

    API网关是一个服务器,是系统对外的唯一入口。API网关封装了系统内部架构,为每个客户端提供一个定制的API。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和
    管理服务。

  • 微服务网关的作用和应用场景

    网关具有的职责:如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理等。当然,最主要的职责还是与“外界联系”。

16.3 常见的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服务器的负载均衡及高可用问题:自注册的问题和网关本身的扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值