一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于consul的服务发现的方法及系统与流程

2022-06-01 02:17:06 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别是一种基于consul的服务发现的方法及系统。


背景技术:

2.传统的单体架构下,一旦某一个模块出问题,整体服务可能都收到影响,导致整个应用都不可用。所以微服务架构逐渐收到开发者的青睐,微服务旨在把大型的单体应用拆分成多个可用独立运行部署的小服务,每个服务各司其职,并通过互相通信进行配合,从而形成整个完整的应用功能,拆分后的服务独立运行将不会干扰其他服务,从而提高了整体服务的健壮性;那么由此引出服务被拆分后如何发现其他服务,如何在其他相同服务中选出更优的服务呢。


技术实现要素:

3.为克服上述问题,本发明的目的是提供一种能够实现在consul服务的基础之上,对服务的访问次数和服务器的健康情况进行记录和监控的方法。
4.本发明采用以下方案实现:一种基于consul的服务发现的方法,所述方法包括以下步骤:
5.步骤s1、服务启动后获取当前所在服务器的ip地址和本服务器的访问端口,使用初始健康标签请求consul服务进行服务注册;
6.步骤s2、监控服务器的cpu和内存使用情况,发现超过指定阈值时,更新服务标签;
7.步骤s3、客户端通过服务标签向服务读取服务注册ip列表,读取redis内存获得服务的访问数,选出最小访问数的服务节点;
8.步骤s4、客户端访问最小访问数的服务ip地址,服务对redis内存里的访问数进行累加,从而实现对consul服务的访问次数和服务器的健康情况进行记录和监控。
9.进一步的,所述步骤s1进一步具体为:在服务启动后,获取当前所有服务器的ip地址,服务部署在哪个服务器上就获取该服务器的ip地址,再获取当前服务的监听接口,并为服务设定一个初始标签,默认初始标签为健康标签,将服务名、服务ip地址、服务端口和标签发送至consul服务,为本服务进行注册,通过consul服务的注册api请求consul服务告知本服务已启动。
10.进一步的,所述步骤s2进一步具体为:在每个服务器都启动一个监控程序,实时获取当前服务器的cpu和内存使用率,判断是否超过当前服务器的cpu和内存使用率的80%,是,则表示当前服务器负载过高,为减缓服务器压力,则读取本服务器ip地址,把consul服务上使用本服务ip地址的注册信息标签改为繁忙,否,则更新注册信息标签为健康标签。
11.进一步的,所述步骤s3进一步具体为:当客户端需要访问其他服务的时候,就需要向consul服务获取可访问的服务节点信息,读取服务节点信息和ip地址,读取redis内存获得服务的访问数,查看哪个服务节点的访问数最少,则最少访问数的服务节点就是被选中的访问节点。
12.进一步的,所述步骤s4进一步具体为:选取出访问数最小的可用服务ip后,对服务进行访问,对访问的服务进行redis内存计数,进行次数累加1。
13.本发明还提供了一种基于consul的服务发现的系统,包括服务注册模块、服务标签模块、服务发现模块和累加计数模块,所述服务注册模块,即服务启动后获取当前所在服务器的ip地址和本服务器的访问端口,使用初始健康标签请求consul服务进行服务注册;所述服务标签模块,即监控服务器的cpu和内存使用情况,发现超过指定阈值时,更新服务标签;所述服务发现模块,即客户端通过服务标签向服务读取服务注册ip列表,读取redis内存获得服务的访问数,选出最小访问数的服务节点;所述累加计数模块,即客户端访问最小访问数的服务ip地址,服务对redis内存里的访问数进行累加,从而实现对consul服务的访问次数和服务器的健康情况进行记录和监控。
14.进一步的,所述服务注册模块进一步具体为:在服务启动后,获取当前所有服务器的ip地址,服务部署在哪个服务器上就获取该服务器的ip地址,再获取当前服务的监听接口,并为服务设定一个初始标签,默认初始标签为健康标签,将服务名、服务ip地址、服务端口和标签发送至consul服务,为本服务进行注册,通过consul服务的注册api请求consul服务告知本服务已启动。
15.进一步的,所述服务标签模块进一步具体为:在每个服务器都启动一个监控程序,实时获取当前服务器的cpu和内存使用率,判断是否超过当前服务器的cpu和内存使用率的80%,是,则表示当前服务器负载过高,为减缓服务器压力,则读取本服务器ip地址,把consul服务上使用本服务ip地址的注册信息标签改为繁忙,否,则更新注册信息标签为健康标签。
16.进一步的,所述服务发现模块进一步具体为:当客户端需要访问其他服务的时候,就需要向consul服务获取可访问的服务节点信息,读取服务节点信息和ip地址,读取redis内存获得服务的访问数,查看哪个服务节点的访问数最少,则最少访问数的服务节点就是被选中的访问节点。
17.进一步的,所述累加计数模块进一步具体为:选取出访问数最小的可用服务ip后,对服务进行访问,对访问的服务进行redis内存计数,进行次数累加1。
18.本发明的有益效果在于:本发明在consul服务的基础之上,对服务的访问次数和服务器的健康情况进行记录和监控,能够及时对可用服务进行更新,并且选取访问压力最小的服务,实现一种更优的服务发现的方法及方案。
附图说明
19.图1是本发明的方法流程示意图。
20.图2是本发明的系统原理框图。
具体实施方式
21.下面结合附图对本发明做进一步说明。
22.请参阅图1所示,本发明的一种基于consul的服务发现的方法,所述方法包括以下步骤:
23.步骤s1、服务启动后获取当前所在服务器的ip地址和本服务器的访问端口,使用
初始健康标签请求consul服务进行服务注册;
24.步骤s2、监控服务器的cpu和内存使用情况,发现超过指定阈值时,更新服务标签;
25.步骤s3、客户端通过服务标签向服务读取服务注册ip列表,读取redis内存获得服务的访问数,选出最小访问数的服务节点;
26.步骤s4、客户端访问最小访问数的服务ip地址,服务对redis内存里的访问数进行累加,从而实现对consul服务的访问次数和服务器的健康情况进行记录和监控。
27.下面通过一具体实施例对本发明作进一步说明:
28.步骤1、服务启动后获取当前所在服务器ip和本服务的访问端口,使用自定义初始健康标签请求consul进行服务注册
29.服务启动后,获取当前的所有服务器ip,服务部署在哪个服务器上就是获取到该服务器的ip,例如192.168.0.1。再获取当前服务的监听端口,例如8088。为当前服务起名,例如当前是一个短连接服务,那么起名为mico.surl。并为服务设定一个初始标签,默认初始是健康的,标签起名green。把服务名、服务ip、服务端口、标签发往consul,为本服务注册,通过consul的注册api请求consul,告知本服务已启动,这称为服务注册。
30.步骤2、监控服务器的cpu和内存使用情况,发现超过指定阈值,更新服务标签,所述指定阈值为cpu和内存使用情况超过自身80%。
31.监控服务节点所在的服务器的cpu和内存情况,等于是看微服务节点的服务器情况,然后更新consul服务上的服务的标签,在每个服务器都启动一个监控程序,实时获取当前服务器的cpu和内存使用率,如果超过指定阈值,则表示当前服务器负载过高,为减缓服务器压力,则读取本服务器ip,把consul上使用本ip的注册信息标签改为red,表示繁忙。如果服务器将到阈值以下,则更新注册信息标签为green。本步骤是服务器层面的监控,consul本身有对微服务有健康检查机制,会间隔请求微服务的健康检查地址,确保微服务还存活,这是服务节点层面的监控。
32.步骤3、客户端通过green标签向consul读取服务注册ip列表,读取redis获得服务的访问数,选出最小访问数的服务节点
33.当客户端需要访问其他服务的时候,就需要向consul获取可访问的服务节点信息,这称为服务发现。例如此客户端需要访问短连接服务,那么要请求的服务名是mico.surl,需要读取的是健康可访问的节点,那么读取标签为green,请求consul进行获取,假设读取到2个可用的服务节点,访问地址方别是192.168.0.1:8088和192.168.0.2:8088。读取redis,读取key为192.168.0.1:mico.surl,key由ip 服务名组成。分别读取192.168.0.1:mico.surl和192.168.0.2:mico.surl,查看哪个节点的访问数最少,那么较少的那个节点就是被选中的访问节点。
34.步骤4、客户端访问最小访问数的服务ip,服务对redis里的访问数进行累加
35.选取出访问数最小的可用服务ip后,假设是192.168.0.1:8088,对业务服务进行访问。接着要对访问的服务进行redis计数,对key值为192.168.0.1:mico.surl进行次数累加1。
36.总之,consul服务是一个用来实现分布式系统的服务注册与发现的开源服务,在服务启动时向consul服务取到可用服务后,我们需要在服务列表中选出一个服务进行访问,最简单的就是随机选取。但本专利在consul服务的基础之上,对服务的访问次数和服务
器的健康情况进行记录和监控,实现一种更优的服务发现的方法及方案。
37.请参阅图2所示,本发明还提供了一种基于consul的服务发现的系统,包括服务注册模块、服务标签模块、服务发现模块和累加计数模块,所述服务注册模块,即服务启动后获取当前所在服务器的ip地址和本服务器的访问端口,使用初始健康标签请求consul服务进行服务注册;所述服务标签模块,即监控服务器的cpu和内存使用情况,发现超过指定阈值时,更新服务标签;所述服务发现模块,即客户端通过服务标签向服务读取服务注册ip列表,读取redis内存获得服务的访问数,选出最小访问数的服务节点;所述累加计数模块,即客户端访问最小访问数的服务ip地址,服务对redis内存里的访问数进行累加,从而实现对consul服务的访问次数和服务器的健康情况进行记录和监控。
38.所述服务注册模块进一步具体为:在服务启动后,获取当前所有服务器的ip地址,服务部署在哪个服务器上就获取该服务器的ip地址,再获取当前服务的监听接口,并为服务设定一个初始标签,默认初始标签为健康标签,将服务名、服务ip地址、服务端口和标签发送至consul服务,为本服务进行注册,通过consul服务的注册api请求consul服务告知本服务已启动。
39.所述服务标签模块进一步具体为:在每个服务器都启动一个监控程序,实时获取当前服务器的cpu和内存使用率,判断是否超过当前服务器的cpu和内存使用率的80%,是,则表示当前服务器负载过高,为减缓服务器压力,则读取本服务器ip地址,把consul服务上使用本服务ip地址的注册信息标签改为繁忙,否,则更新注册信息标签为健康标签。
40.所述服务发现模块进一步具体为:当客户端需要访问其他服务的时候,就需要向consul服务获取可访问的服务节点信息,读取服务节点信息和ip地址,读取redis内存获得服务的访问数,查看哪个服务节点的访问数最少,则最少访问数的服务节点就是被选中的访问节点。
41.所述累加计数模块进一步具体为:选取出访问数最小的可用服务ip后,对服务进行访问,对访问的服务进行redis内存计数,进行次数累加1。
42.以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献