小白网-奉贤部落-奉贤免费信息发布平台

查看: 16|回复: 0
打印 上一主题 下一主题

网关和服务器的连接方式(主机的网关)

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一般稍微复杂一点的微服务集群服务,对认证和鉴权都有统一的要求,子系统的实现可能会因为团队或部门的不同,或者基于现实的客观因素,在技术栈上有所不同。比如子系统A是基于SpringBoot技术栈的java实现的,子系统B是Python技术栈实现的,子系统C也是Java开发的但是提供Dubbo服务。系统也有可能与外部服务集成。这些都是系统的认证、认证、服务间调用、负载均衡带来的挑战。业界普遍的做法是为微服务集群设置一套网关服务。网关的实现方式有很多种,比如Nginx,还有一些开源的网关项目如Kong,Zuul,Spring Cloud Gateway等。在这里,我们不会对每个项目进行比较。我叫Spring Cloud Gateway,比较适合更复杂场景下的网关服务实现。有兴趣的朋友可以自行调用,与其他门户项目进行对比。下面我们通过Spring Cloud Gateway来说一下设计一个网关服务。
系统架构点击放大。
网关接收客户端http(s)请求或后端服务之间的调用请求,并在网关内部使用链处理。每个环节负责某个功能,如认证环节、黑白名单控制、访问日志环节、请求转发环节,其中请求转发需要根据不同的协议实现转发功能。然后统一结果处理和异常处理。
单击放大应用程序架构。
网关服务架构中的功能模块如下
  • 动态路由管理
  • 统一认证
  • 协议转发
  • 负载均衡
  • 服务发现
  • 用户日志基于上述功能模块需求的总体架构设计如下
    点击逻辑架构放大。
    采用网关分层设计,将需要自顶向下实现的功能块分布在视图层、服务层和持久层。
    层:网关配置管理的用户交互视图,包括路由配置和多协议服务配置。路由是指路由转发规则的配置。基于配置的路由转发主要服务于http(s)和websocket协议服务的转发。服务配置是指非Restful服务的服务接口的配置,比如dubbo服务的producer类和producer类方法,或者gRPC服务接口的protobuf配置。基于rpc协议的dubbo服务的转发通过自定义过滤器实现,SDK依赖通过泛化调用与服务提供者解耦。
    服务层:服务层提供了两个功能模块。配置管理接口实现和动态路由转发实现。
  • 路由管理:提供rest接口来管理网关路由规则的配置。此接口只能由网关管理员访问,身份验证服务用于验证和验证路由配置接口。
  • 动态路由:动态路由需要同时支持http(s)、websocket和rpc接口的路由转发,其中http(s)和websocket服务转发是通过动态路由配置实现的。Rpc接口服务调用是通过自定义转发实现的,所有服务转发都必须经过以下公共过滤器
  • Blacker Lister Filter:验证客户端是否在黑白名单中,黑名单客户端将被拒绝访问,白名单客户端将跳过认证和验证,直接进入转发。
  • Auth Filter:身份验证过滤器通过调用身份验证服务的接口来验证客户端的身份。
  • 权限过滤器:权限过滤器验证客户端是否有调用接口的权限,通过调用认证服务的接口来验证客户端的权限。
  • 日志过滤器:日志过滤器记录客户端访问记录。
  • 错误过滤器:当一个异常被发出时,它将被错误过滤器返回。除了每条路由都要经过的过滤器这一例外,不同的协议还可以自定义自己的过滤器来实现转发。比如rpc协议服务的转发通过一个自定义过滤器实现dubbo接口的泛化调用,http(s)和websocket协议的转发地址由一个自定义负载均衡过滤器决定。
    持久层:网关使用MySql持久化网关的配置数据,路由管理服务接口通过Mybatis框架集成数据库操作。同时,网关使用redis作为分布式缓存。当应用程序启动时,从Redis加载所有路由配置,并加载RouterLocator。当通过路由管理服务接口改变路由规则时,通知网关的其他服务节点通过redis更新RouterLocator对象。
    单击放大配置管理逻辑。
    路由配置的变化要及时更新到所有的网关服务节点,使得匹配路由配置的请求可以在任何一个网关服务节点通过代理转发,从而提高网关的可用性。我们可以通过API主动通知网关服务节点刷新配置,并监控刷新配置的结果,任何节点刷新失败都会被记录下来,以便问题跟踪。
    点击放大。
    在将请求转发给代理服务之前,服务发现网关需要通过负载均衡获得代理服务节点信息,负载均衡需要根据服务发现结果查询节点信息。因此,网关需要启动守护线程,每秒主动检测代理服务的健康状态,保存最新的代理服务节点信息。
    点击放大。
    抽象模型Spring Cloud Gateway实现了基于路由定义的定制请求处理。RouteLocator有一个id、一个目标url、一组断言和一组过滤器定义。我们可以为不同类型的路由转发定义不同的路由定位器。这些路由定位器将共享一些通用过滤器,如身份验证、黑白名单和身份验证。此外,不同的RouteLocator需要定义不同的断言和过滤器。下面是路由、过滤器、断言的抽象。
    途径
    路由是指网关对请求转发策略的一般定义。当网关启动时,所有定义的路由都将被初始化。网关数据模型必须包含以下数据
  • 工艺路线标识:工艺路线定义的唯一标识。
  • 路由uri:路由规则转发的目的地址,其中不同协议的转发地址根据不同的协议定义如下协议类型
    前缀
    占位符1
    占位符2
    占位符3
    占位符4
    http(s)
    Http://或https://
    服务域名
    目标服务端口
    服务名称
    目标服务接口的地址
    websocket
    ws://
    服务域名
    目标服务端口
    服务名称
    服务websocket地址
    (同radarplanningchart)雷达规划表
    dubbo://
    服务域名
    杜博港服务
    目标服务类别名称

  • 路由断言:断言决定了执行路由规则的条件,每个路由规则必须至少包含一个断言。
  • 过滤器:过滤器是指路由转发所经过的横截面的行为。除了公共过滤器之外,每个路由还可以定义自己的过滤器。肯定
    断言是指在执行路由规则时必须满足的条件。断言规则必须包含以下信息
  • 断言名:断言名是指路由执行的断言。断言名使用Spring Cloud Gateway内置的断言名,包括以下几类。多个断言可以叠加在同一个路由上。断言名称
    解释
    小路
    通过请求地址匹配转发路径
    以前
    在指定的时间点之前允许访问。
    在...之后
    可以在指定的时间点后访问。
    在...之间
    指定允许访问的时间段。
    饼干
    通过验证cookie匹配进行转发
    页眉
    验证标头值是否与转发匹配。
    主持
    通过匹配主机地址值来匹配转发
    方法
    通过匹配请求方法匹配转发
    询问
    通过请求参数匹配进行转发
    断言内容:断言内容通过键值key执行保存的断言的内容。过滤器
    过滤器是指路由执行的截止行为。Ops-Gateway必须对每条路由执行以下过滤。
  • BwListFilter:检查黑白名单,释放白名单,返回黑名单,拒绝访问。
  • AuthFilter:对于请求的身份验证,如果验证通过,则执行下一个过滤器,否则返回一个身份验证错误。
  • PermissionFilter:检查请求身份对目标接口的权限。如果通过检查,则继续执行下一个过滤器;否则,将返回身份验证检查错误。
  • 日志过滤器:日志过滤器记录用户访问界面的记录和结果。
  • 异常处理错误过滤器:当请求异常处理时,统一处理异常返回。根据上述路由抽象,网关在执行不同协议的请求转发时的流程如下:
    Dubbo服务请求
    目标是dubbo服务的请求,网关层需要集成zookeeper实现服务发现和负载均衡。请求dubbo服务的rest请求路径断言,当请求包含服务名和方法时,它需要被路由到相应的Dubbo服务。网关只需要添加相应的路由配置,实现对广义调用dubbo服务的过滤,不需要依赖dubbo服务sdk。dubbu业务转发使用的是断言类型,所以dubbu业务转发需要实现广义的调用过滤器。
    点击放大。
    Http(s)和websocket服务转发
    目标http(s)web服务或websocket服务,请求通过请求路径谓词,当断言为真时,继续执行filer链,其中负载均衡过滤器决定将请求路由到指定的服务地址,负载均衡断言需要定制,采用加权轮询方式实现负载均衡。
    点击放大。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-8-21 12:51 , Processed in 0.058119 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表