一种基于动态路由的服务反向代理方法及系统技术方案

技术编号:38218595 阅读:16 留言:0更新日期:2023-07-25 11:30
本发明专利技术公开一种基于动态路由的服务反向代理方法,属于计算机技术领域;该方法包括:在反向代理服务器中创建若干容器;根据容器生成唯一识别码;接收用户请求;所述用户请求包括当前唯一识别码;将当前唯一识别码与反向代理服务器中每个容器的唯一识别码进行匹配;根据匹配成功的唯一识别码,确定对应的目标容器;将用户请求发送至目标容器。本发明专利技术还提供一种基于动态路由的服务反向代理系统。本发明专利技术在反向代理服务和数据缓存中间件服务的设计上保证了服务的高可用,适用于高并发应用场景。适用于高并发应用场景。适用于高并发应用场景。

【技术实现步骤摘要】
一种基于动态路由的服务反向代理方法及系统


[0001]本专利技术涉及计算机网络
,具体涉及一种基于动态路由的服务反向代理方法及系统。

技术介绍

[0002]目前在容器技术实际使用中会遇到这样一个应用场景:用户可以主动基于Kubernetes创建一个pod服务,并且可以在服务启动成功后访问该服务页面和操作服务API。在这中应用场景下,我们的应用需要完成两个操作:第一是基于Kubernetes API完成用户服务创建,第二是配置统一的服务网关让用户可以正常访问到创建完成的服务。
[0003]如图1所示,动态路由主要包含3块:反向代理服务器、代理配置存储、代理配置管理,其中代理配置管理在用户创建APP应用时查询并更新配置内容,用户在请求反向代理服务器时,会读取变更后的代理配置数据,转发到对应的APP应用服务从而达到动态代理的目的。
[0004]目前常见的代理方案大多是基于Nginx或者Apache采用类似的策略进行代理转发,在这里拿Nginx举例说明:需要通过程序远程SSH(或者其它远程操作方式)新增、更新、删除对应容器服务的代理转发配置,修改完成后保持并记录配置文件内容,最后重启代理转发服务器reload变更完成的路由配置。
[0005]这种方法存在以下问题:
[0006]1)、维护成本高
[0007]这种传统方式程序在操作代理转发配置时,存在远程操作请求异常的情况,需要专门维护确保稳定性;还有就是在重启nginx代理转发服务器时将导致老的代理服务在nginx重启期间暂时不可用。
[0008]2)、性能瓶颈较大
[0009]当用户创建的容器应用较多时,nginx代理配置文件将越来越大,代理配置文件变更后重启代理服务时时间会越来越久;同样配置文件过大也会影响到用户访问容器服务的速度。
[0010]3)、高可用性不足
[0011]当代理转发服务器进行集群化部署时,每次对配置文件的更新,都需要更新所有代理转发服务器,并进行重启,这将增大维护的风险。

技术实现思路

[0012]本专利技术的目的在于提供一种基于动态路由的服务反向代理方法及系统,用于在反向代理服务和数据缓存中间件服务的设计上保证了服务的高可用,适用于高并发应用场景。
[0013]为解决上述技术问题,本专利技术提供一种基于动态路由的服务反向代理方法,包括以下步骤:
[0014]在反向代理服务器中创建若干容器;
[0015]根据容器生成唯一识别码;
[0016]接收用户请求;所述用户请求包括当前唯一识别码;
[0017]将当前唯一识别码与反向代理服务器中每个容器的唯一识别码进行匹配;
[0018]根据匹配成功的唯一识别码,确定对应的目标容器;
[0019]将用户请求发送至目标容器。
[0020]优选地,在反向代理服务器中创建若干容器,具体包括以下步骤:
[0021]使用Kubernetes在反向代理服务器中创建若干容器。
[0022]优选地,根据匹配成功的唯一识别码,确定对应的目标容器,将用户请求发送至目标容器,具体包括以下步骤:
[0023]根据匹配成功的唯一识别码,获取对应的容器的地址作为目标容器的地址;
[0024]将用户请求发送至目标容器的地址。
[0025]优选地,根据容器生成唯一识别码,具体包括以下步骤:
[0026]基于Snowflake算法,根据容器的类型生成唯一识别码。
[0027]优选地,所述唯一识别码为唯一动态代理路由ID。
[0028]优选地,所述容器的唯一识别码储存到redis缓存中;
[0029]当前唯一识别码与redis缓存中储存的每个容器的唯一识别码进行匹配。
[0030]优选地,所述唯一识别码为redis键;
[0031]所述容器的地址为value值。
[0032]本专利技术还提供一种基于动态路由的服务反向代理系统,包括:
[0033]容器创建模块,用于在反向代理服务器中创建若干容器;
[0034]唯一识别码生成模块,用于根据容器生成唯一识别码;
[0035]接收模块,用于接收用户请求;所述用户请求包括当前唯一识别码;
[0036]匹配模块,用于将当前唯一识别码与反向代理服务器中每个容器的唯一识别码进行匹配;
[0037]目标容器确定模块,用于根据匹配成功的唯一识别码,确定对应的目标容器;
[0038]发送模块,用于将用户请求发送至目标容器。
[0039]与现有技术相比,本专利技术的有益效果为:
[0040]1、在用户完成创建若干容器服务时,解决了传统人工手动更新动态代理或者程序刷新动态代理配置时的维护成本。
[0041]2、在大量容器服务被创建时动态代理配置文件过大,会导致用户发送容器服务访问请求到动态代理location匹配性能问题,本专利技术基于不同的容器类型设置了通用的配置文件无需新增、修改、删除代理配置文件。
[0042]3、相较于传统的技术方案,本专利技术优化了传统方案设计,在反向代理服务(nginx)和数据缓存中间件服务的设计上保证了服务的高可用,适用于高并发应用场景。
附图说明
[0043]下面结合附图对本专利技术的具体实施方式作进一步详细说明。
[0044]图1是现有动态路由代理的方法示意图;
[0045]图2是本专利技术服务反向代理的方法示意图;
[0046]图3是获取唯一识别码及更新容器状态的流程示意图;
[0047]图4是反向代理的流程示意图;
[0048]图5是本专利技术一种基于动态路由的服务反向代理方法的流程示意图。
具体实施方式
[0049]在下面的描述中阐述了很多具体细节以便于充分理解本专利技术。但是本专利技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本专利技术内涵的情况下做类似推广,因此本专利技术不受下面公开的具体实施的限制。
[0050]在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0051]应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0052]下面结合附图对本专利技术做进一步的详细描本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态路由的服务反向代理方法,其特征在于,包括以下步骤:在反向代理服务器中创建若干容器;根据容器生成唯一识别码;接收用户请求;所述用户请求包括当前唯一识别码;将当前唯一识别码与反向代理服务器中每个容器的唯一识别码进行匹配;根据匹配成功的唯一识别码,确定对应的目标容器;将用户请求发送至目标容器。2.根据权利要求1所述的基于动态路由的服务反向代理方法,其特征在于,在反向代理服务器中创建若干容器,具体包括以下步骤:使用Kubernetes在反向代理服务器中创建若干容器。3.根据权利要求1所述的基于动态路由的服务反向代理方法,其特征在于,根据匹配成功的唯一识别码,确定对应的目标容器,将用户请求发送至目标容器,具体包括以下步骤:根据匹配成功的唯一识别码,获取对应的容器的地址作为目标容器的地址;将用户请求发送至目标容器的地址。4.根据权利要求1所述的基于动态路由的服务反向代理方法,其特征在于,根据容器生成唯一识别码,具体包括以下步骤:基于Snowflake算法,根据容器的类型生成唯一识别码。5.根据权利要求4所述的基于动态路由的服务反向代理方法,其特征在于:基于Snowflake算法,根据容器的类型...

【专利技术属性】
技术研发人员:曹杭伟原攀峰陈廷梁李会朋
申请(专利权)人:浙江数新网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1