CN113190546A - 一种Eureka服务管控方法、***及可读存储介质 - Google Patents
一种Eureka服务管控方法、***及可读存储介质 Download PDFInfo
- Publication number
- CN113190546A CN113190546A CN202110578571.3A CN202110578571A CN113190546A CN 113190546 A CN113190546 A CN 113190546A CN 202110578571 A CN202110578571 A CN 202110578571A CN 113190546 A CN113190546 A CN 113190546A
- Authority
- CN
- China
- Prior art keywords
- eureka
- service
- registration information
- client
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种Eureka服务管控方法、***及介质,方法包括:Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在数据库中为服务注册信息增加过期键;过期键预设有过期时间;Eureka注册服务器在完成对过期键的添加且接收到Eureka客户端每隔过期时间发送的心跳信息时,对Eureka客户端的过期键进行更新;在Eureka注册服务器在完成对过期键的添加后,数据库对过期键进行检测,并在确定过期键未在过期时间内更新时,则将过期键对应的服务注册信息移除;本方法可利用数据库保存服务注册信息,并利用过期键实现对服务注册信息的自动淘汰,可提升Eureka注册服务器的管理效率。
Description
技术领域
本发明涉及Eureka服务器领域,特别涉及一种Eureka服务管控方法、***及可读存储介质。
背景技术
Eureka是一个Eureka服务发现框架,用于服务注册及管理。相关技术中,Eureka注册服务器对服务的注册及管理均基于内存实现,即Eureka注册服务器需要将Eureka客户端发送的服务注册信息存储于内存中,同时还需要依照Eureka客户端发送心跳信息的情况内存中的服务注册信息进行淘汰,即Eureka需要检查Eureka客户端是否在预设的过期周期内发送心跳信息,若否则需要在内存中查找该Eureka客户端的服务注册信息并淘汰。上述方式不仅大量占用Eureka注册服务器的内存,当Eureka客户端数量较多或是向Eureka注册服务器发送心跳信息的频率较高时,Eureka注册服务器将会面临大量查找和读写操作,加重了Eureka注册服务器的计算负担,降低了Eureka注册服务器对Eureka服务的管控效率。
发明内容
本发明的目的是提供一种Eureka服务管控方法、***及可读存储介质,可利用数据库保存服务注册信息,并利用过期键实现数据库对服务注册信息的自动淘汰,进而可Eureka注册服务器对Eureka客户端服务注册信息的管理效率。
为解决上述技术问题,本发明提供一种Eureka服务管控方法,包括:
Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键;所述过期键预设有过期时间;
所述Eureka注册服务器在完成对所述过期键的添加且接收到所述Eureka客户端每隔所述过期时间发送的心跳信息时,对所述Eureka客户端的过期键进行更新;
在所述Eureka注册服务器在完成对所述过期键的添加后,所述数据库对所述过期键进行检测,并在确定所述过期键未在所述过期时间内更新时,则将所述过期键对应的服务注册信息移除。
可选地,所述Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键,包括:
所述Eureka注册服务器将包含所述服务注册信息写入所述数据库中的原始注册信息池,并在原始注册信息池中为所述服务注册信息添加所述过期键;
所述Eureka注册服务器每隔第一预设时间利用所述原始注册信息池中的服务注册信息更新所述数据库的服务注册表。
可选地,在所述Eureka注册服务器在完成对所述过期键的添加之后,还包括:
所述Eureka客户端每隔第二预设时间向所述Eureka注册服务器发送增量同步请求;
所述Eureka注册服务器在接收到所述增量同步请求时,在所述服务注册表中查询在所述第二预设时间段内发生状态变化的服务注册信息,并将所述发生状态变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端;
所述Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表。
可选地,所述在所述服务注册表中查询在所述第二预设时间段内发生状态变化的服务注册信息,并将所述发生状态变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端,包括:
所述Eureka注册服务器查询所述发生状态变化的服务注册信息,并利用所述服务注册表中所有的服务注册信息计算第一哈希值;
所述Eureka注册服务器将所述第一哈希值、所述发生变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端;
相应的,所述Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表,包括:
所述Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新所述本地服务注册表,并利用更新后的本地服务注册表中的所有服务注册信息计算第二哈希值;
所述Eureka客户端在确定所述第一哈希值与所述第二哈希值不同时,向所述Eureka注册服务器发送全量同步请求,以使所述Eureka注册服务器将所述服务注册表中的所有服务注册信息发送至所述Eureka客户端。
可选地,所述Eureka客户端每隔第二预设时间向所述Eureka注册服务器发送增量同步请求,包括:
所述Eureka客户端每隔所述第二预设时间通过断路器向所述Eureka注册服务器发送增量同步请求;所述断路器用于对所述Eureka注册服务器的增量同步服务进行监听;
相应的,在所述Eureka客户端每隔所述第二预设时间通过断路器向所述Eureka注册服务器发送增量同步请求之后,还包括:
当所述断路器检测到所述增量同步服务离线时,将所述增量同步请求转发至轻量级访问服务端,以使所述轻量级访问服务端将所述服务注册表中的所有服务注册信息发送至所述Eureka客户端;
所述Eureka客户端利用接收到的服务注册信息更新所述本地服务注册表。
可选地,所述数据库为Redis数据库。
本发明还提供一种Eureka服务管控***,包括:Eureka注册服务器、Eureka客户端和数据库,其中,
所述Eureka注册服务器,用于将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键;所述过期键预设有过期时间;在完成对所述过期键的添加且接收到所述Eureka客户端每隔所述过期时间发送的心跳信息时,对所述Eureka客户端的过期键进行更新;
所述Eureka客户端,用于向所述Eureka注册服务器发送所述服务注册信息,并在所述Eureka注册服务器完成对所述过期键的添加后,每隔所述过期时间向所述Eureka注册服务器发送心跳信息;
所述数据库,用于在所述Eureka注册服务器在完成对所述过期键的添加后,对所述过期键进行检测,并在确定所述过期键未在所述过期时间内更新时,则将所述过期键对应的服务注册信息移除。
可选地,
所述Eureka注册服务器,还用于将包含所述服务注册信息写入所述数据库中的原始注册信息池,并在原始注册信息池中为所述服务注册信息添加所述过期键;每隔第一预设时间利用所述原始注册信息池中的服务注册信息更新所述数据库的服务注册表;
所述数据库,还用于将服务注册信息保存于原始注册信息池和服务注册表中。
可选地,
所述Eureka客户端,还用于在所述Eureka注册服务器在完成对所述过期键的添加后,每隔第二预设时间向所述Eureka注册服务器发送增量同步请求;利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表;
所述Eureka注册服务器,还用于在接收到所述增量同步请求时,在所述服务注册表中查询在所述第二预设时间段内发生状态变化的服务注册信息,并将所述发生状态变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的Eureka服务管控方法的步骤。
本发明提供一种Eureka服务管控方法,包括:Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键;所述过期键预设有过期时间;所述Eureka注册服务器在完成对所述过期键的添加且接收到所述Eureka客户端每隔所述过期时间发送的心跳信息时,对所述Eureka客户端的过期键进行更新;在所述Eureka注册服务器在完成对所述过期键的添加后,所述数据库对所述过期键进行检测,并在确定所述过期键未在所述过期时间内更新时,则将所述过期键对应的服务注册信息移除。
可见,本方法首先利用独立的数据库保存Eureka客户端的服务注册信息,Eureka注册服务器在接收到Eureka客户端发送的服务注册信息时,仅需将该服务注册信息保存至数据库即可,无需在内存中进行保存,可有效降低Eureka注册服务器的存储压力;同时,本方法还为每一服务注册信息均添加了过期键,该过期键预设有过期时间,数据库会对过期键进行检测,并在确定过期键未在过期时间内更新时,将过期键对应的服务注册信息移除。换而言之,本方法为数据库增加了过期键机制,并利用该过期键机制实现了对过期服务注册信息的自动淘汰,而Eureka注册服务器仅需在接收到Eureka客户端每隔过期时间发送的心跳信息时,对Eureka客户端对应的过期键进行更新即可,不需要对该服务注册信息进行淘汰,可提升Eureka服务注册服务器对Eureka客户端服务注册信息的管理效率。本发明还提供一种Eureka服务管控***及计算机可读存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种Eureka服务管控方法的流程图;
图2为本发明实施例所提供的一种Eureka服务管控过程的示意图;
图3为本发明实施例所提供的Eureka客户端与断路器及轻量级访问服务端的交互示意图;
图4a为本发明实施例所提供的一种Eureka服务管控***的结构框图;
图4b为本发明实施例所提供的另一种Eureka服务管控***的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Eureka是一个Eureka服务发现框架,用于服务注册及管理。相关技术中,Eureka注册服务器对服务的注册及管理均基于内存实现,即Eureka注册服务器需要将Eureka客户端发送的服务注册信息存储于内存中,同时还需要依照Eureka客户端发送心跳信息的情况内存中的服务注册信息进行淘汰,即Eureka需要检查Eureka客户端是否在预设的过期周期内发送心跳信息,若否则需要在内存中查找该Eureka客户端的服务注册信息并淘汰。上述方式不仅大量占用Eureka注册服务器的内存,当Eureka客户端数量较多或是向Eureka注册服务器发送心跳信息的频率较高时,Eureka注册服务器将会面临大量查找和读写操作,加重了Eureka注册服务器的计算负担,降低了Eureka注册服务器对Eureka服务的管控效率。有鉴于此,本发明提供一种Eureka服务管控方法,可利用数据库保存服务注册信息,并利用过期键实现数据库对服务注册信息的自动淘汰,进而可Eureka注册服务器对Eureka客户端服务注册信息的管理效率。请参考图1,图1为本发明实施例所提供的一种Eureka服务管控方法的流程图,该方法包括:
S101、Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在数据库中为服务注册信息增加过期键;过期键预设有过期时间。
在本发明实施例中,Eureka客户端的服务注册信息采用独立的数据库进行存放,而并非存储于Eureka注册服务器的内存中,可有效减小Eureka服务发现框架对Eureka注册服务器的内存要求;同时,由于Eureka注册服务器无需存储服务注册信息,因此对服务注册信息的淘汰(即服务淘汰)可以基于独立数据库实现,可有效减少Eureka注册服务器在服务淘汰阶段的读写操作,进而能够有效提升Eureka注册服务器的运行效率及管理效率。
需要说明的是,本发明实施例并不限定具体的服务注册信息,例如可以为服务名称、IP地址、端口号等,可参考Eureka的相关技术并结合实际应用需求进行设置。本发明实施例也不限定具体的数据库类型,同样可参考数据库的相关技术,并根据实际应用需求进行设置。
进一步,本发明实施例还使用了过期键来实现对服务注册信息的淘汰。具体的,本发明实施例中的Eureka注册服务器为每一服务注册信息均添加了过期键,且每一过期键均设置有过期时间,当过期键未能在过期时间内被更新时,则对应的服务注册信息将被移除(即相关的服务被淘汰);同时,本发明实施例中的Eureka注册服务器仅需对该过期键进行更新即可,而对过期键的检测由数据库完成,换而言之,本发明实施例采用数据库实现对服务注册信息的淘汰,而Eureka注册服务器仅需依照要求对该过期键进行更新即可,无需对服务注册信息进行淘汰,可有效避免相关技术中Eureka注册服务器服务注册信息的淘汰过程中存在的大量查找及读写操作,进而有效降低Eureka注册服务器的计算负担,并最终提高Eureka注册服务器的管理效率。
需要说明的是,本发明实施例并不限定过期时间的具体数值,可根据实际应用进行设置。由于在Eureka的常规选择中,服务注册信息将会在30秒后被淘汰,因此在本发明实施例中,过期时间可以设置为30秒。本发明实施例并不限定过期键的具体形式,只要该过期键为数据库中的一个键(key)且能够设置有过期时间即可,可参考数据库的相关技术并结合具体的应用需求进行设置。进一步,由于Redis数据库原生提供了过期键机制,能够高效地设置并检测过期键,因此在本发明实施例中,存储服务注册信息的数据库可以为Redis数据库,其中Redis数据库为一个日志型键值对数据库。当然,若采用其他数据库对服务注册信息进行存储时,需要为所选择的数据库添加过期键机制,具体的添加方式可参考所选择的数据库的相关技术及Redis的相关技术。
进一步,本发明实施例并不限定服务注册信息在数据库中的存储方式,例如可以将所有服务注册信息保存于原始注册信息池中,当然也可以在原始注册信息池的基础上,利用原始注册信息池中的服务注册信息进一步维护一个单独的服务注册表。考虑到Eureka注册服务器通常对多个Eureka客户端的服务进行管理,服务注册信息的数量及对应的读写操作较多,且这些服务的运行状态(例如添加、移除或是处于维护状态)会发生较多改变,仅利用一个原始注册信息池进行存储将难以规范且高效地管理Eureka客户端的服务,因此在本发明实施例中,可以首先利用原始注册信息池对服务注册信息进行简单存储,并进一步利用原始注册信息池中的信息维护服务注册表,服务注册表中保存有服务名称及每个服务名称下正在运行的Eureka客户端的通信信息,这样Eureka注册中心对Eureka客户端服务的管理便可基于服务注册表进行,同时Eureka客户端对其他客户端的服务发现也可基于该服务注册表进行。对原始注册信息池及服务注册表的设置形式,可依照现有Eureka服务框架中的缓存表及注册表进行设置。可以理解的是,为避免Eureka客户端或是其他设备篡改服务注册表,服务注册表可以是一个只读表;同时,为了对服务注册信息进行高效淘汰,服务注册信息可以仅在原始注册信息池中添加过期键。进一步,可以理解的是,有Eureka注册服务器对服务注册表进行维护,即利用原始注册信息池中的服务注册信息更新服务注册表,该更新过程可以为:Eureka注册服务器将服务注册表与原始注册信息池进行比对,确定需要向服务注册表中添加或是需要从服务注册表中移除的服务注册信息,并利用该服务注册信息对服务注册表进行更新。需要说明的是,本发明实施例并不限定Eureka注册服务器对服务注册表进行维护的时机,例如可以是在确定原始注册信息池中增添或是移除了服务注册信息时进行服务注册表维护,也可以是每间隔预设时间后进行维护。考虑到每间隔预设时间后进行维护可提升维护效率,因此在本发明实施例中,Eureka注册服务器可每间隔预设时间后对服务注册表进行维护。
在一种可能的情况中,Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在数据库中为服务注册信息增加过期键,可以包括:
步骤11:Eureka注册服务器将包含服务注册信息写入数据库中的原始注册信息池,并在原始注册信息池中为服务注册信息添加过期键;
步骤12:Eureka注册服务器每隔第一预设时间利用原始注册信息池中的服务注册信息更新数据库的服务注册表。
需要说明的是,本发明实施例并不限定第一预设时间的具体数值,可根据实际应用需求进行设置。为避免Eureka注册服务器不能及时维护服务注册表的情况,第一预设时间可短与过期时间,例如当过期时间为30秒时,第一预设时间可以为10秒。进一步,为了提升维护效率,Eureka注册服务器利用原始注册信息池中的服务注册信息更新服务注册表的过程可采用异步线程执行。
S102、Eureka注册服务器在完成对过期键的添加且接收到Eureka客户端每隔过期时间发送的心跳信息时,对Eureka客户端的过期键进行更新。
可以理解的是,Eureka客户端为了确保服务注册信息不过期,需要在过期时间内向Eureka注册服务器发送心跳信息,以使Eureka注册服务器对Eureka客户端的过期键进行更新。本发明实施例并不限定心跳信息的具体形式,可参考Eureka的相关技术。本发明实施例也不限定Eureka注册服务器更新过期键的具体方式,例如过期键设置有更新时刻,此时Eureka注册服务器便可更新过期键对应的更新时刻,以完成对过期键的更新;当然,若过期键设置有过期时刻,此时Eureka注册服务器便可向过期时刻累加过期时间的方式更新过期时刻,已完成对过期键的更新。
下面结合具体的示意图介绍上述Eureka服务管控的具体过程。请参考图2,图2为本发明实施例所提供的一种Eureka服务管控过程的示意图。图中的ServiceA及ServiceB表示Eureka客户端,eureka-go表示Eureka注册服务器,Redis表示数据库。可见在Redis数据库中保存有注册表(即服务注册表)和原始注册信息(即原始注册信息池)两张表,其中原始注册信息表中仅对每一服务注册信息进行简单存储,每一服务注册信息包含服务名称(例如eg1_ServiceA_EB13T)、IP地址(例如host:192.168.101.1)即端口(例如port:8001),而注册表中则规范存储着每一服务名称及该服务名称下正常工作的Eureka客户端(例如在eg1_ServiceA服务下包含两台正常工作的Eureka服务器)。每台Eureka客户端将向Eureka注册服务器发送注册信息及心跳信息,以使Eureka注册服务器维护服务注册信息;而Eureka注册服务器每隔第一预设时间(例如10s)便会启动异步线程,利用原始注册信息中的服务注册信息更新注册表。
S103、在Eureka注册服务器在完成对过期键的添加后,数据库对过期键进行检测,并在确定过期键未在过期时间内更新时,则将过期键对应的服务注册信息移除。
由于本发明实施例采用数据库对过期的服务注册信息进行淘汰,而并非使用Eureka注册服务器进行淘汰,因此本方法可进一步减少Eureka注册服务器的计算压力,提升Eureka注册服务器的运算效率。
需要说明的是,步骤12、S102及S103之间并无先后顺序,只要Eureka注册服务器在完成过期键的添加之后便可自由执行。本发明实施例并不限定Eureka客户端如何感知Eureka注册服务器是否完成过期键的添加,例如在发送服务注册信息后默认Eureka注册服务器已完成过期键添加,或是在接收到Eureka注册服务器完成过期键添加后发送的回执信息后,才确定Eureka注册服务器已完成过期键的添加。可以理解的是,数据库在确定数据***后(即过期键添加后)便可直接确定Eureka注册服务器完成了过期键的添加。
基于上述实施例,本方法首先利用独立的数据库保存Eureka客户端的服务注册信息,Eureka注册服务器在接收到Eureka客户端发送的服务注册信息时,仅需将该服务注册信息保存至数据库即可,无需在内存中进行保存,可有效降低Eureka注册服务器的存储压力;同时,本方法还为每一服务注册信息均添加了过期键,该过期键预设有过期时间,数据库会对过期键进行检测,并在确定过期键未在过期时间内更新时,将过期键对应的服务注册信息移除。换而言之,本方法为数据库增加了过期键机制,并利用该过期键机制实现了对过期服务注册信息的自动淘汰,而Eureka注册服务器仅需在接收到Eureka客户端每隔过期时间发送的心跳信息时,对Eureka客户端对应的过期键进行更新即可,不需要对该服务注册信息进行淘汰,可提升Eureka服务注册服务器对Eureka客户端服务注册信息的管理效率。
基于上述实施例,由于Eureka客户端存在调用其他客户端服务的情况,为了提升调用效率,Eureka客户端在将服务注册信息发送至Eureka注册服务器后,也可以向Eureka注册服务器获取其他客户端的服务注册信息。下面对Eureka客户端向Eureka注册服务器获取其他客户端的服务注册信息的过程进行介绍。
S201、Eureka注册服务器将包含服务注册信息写入数据库中的原始注册信息池,并在原始注册信息池中为服务注册信息添加过期键。
S202、Eureka注册服务器每隔第一预设时间利用原始注册信息池中的服务注册信息更新数据库的服务注册表。
对步骤S201及步骤S202的具体描述可参考上述实施例,此处不再赘述。
S203、Eureka客户端每隔第二预设时间向Eureka注册服务器发送增量同步请求。
在本发明实施例中,Eureka客户端在本地设置有本地服务注册表,用于存放其他客户端的服务注册信息。例如在图2中,图左下角的ServiceA向下指向本地服务注册表,其中存放有ServiceB的服务注册信息。Eureka客户端可向Eureka注册服务器发送增量同步请求,以实现本地服务注册表与服务注册表的同步。为了避免反复全量同步降低效率,在本发明实施例中,Eureka客户端向Eureka注册服务器发送的是增量同步请求,以使Eureka注册服务器仅发送发生状态变化(例如添加、移除或是处于维护状态)的服务注册信息发送至Eureka客户端;同时,为了及时发现出现变更的服务,Eureka客户端每隔第二预设时间便会向Eureka注册服务器发送增量同步请求,以及时同步本地服务注册表。如在图2中,Eureka注册服务器在ServiceA和ServiceB的增量同步请求后,便会执行拉取注册表操作,以将服务注册表中的服务注册信息发送至ServiceA和ServiceB。
需要说明的是,本发明实施例并不限定增量同步请求的具体形式,可参考Eureka的相关技术。本发明实施例也不限定第二预设时间的具体数值,可根据实际应用需求进行设置。考虑服务注册信息可能会在过期时间到达之前发生状态变化(例如被添加、移除、维护),为了确保Eureka客户端及时发现服务状态变化且保持较高的运行效率,第二预设时间的数值可与过期时间相同,例如过期时间为30秒,则第二预设时间同样为30秒。
进一步,需要说明的是,步骤S203、步骤12、S102及S103之间并无先后顺序,只要Eureka注册服务器在完成过期键的添加之后便可自由执行。
S204、Eureka注册服务器在接收到增量同步请求时,在服务注册表中查询在第二预设时间段内发生状态变化的服务注册信息,并将发生状态变化的服务注册信息及对应的状态变化信息发送至Eureka客户端。
本发明实施例并不限定Eureka注册服务器查询在第二预设时间段内发生状态变化的服务注册信息的具体过程,该过程为Eureka的原生功能,可参考Eureka的相关技术。
进一步,由于Eureka注册服务器在与Eureka客户端之间进行服务注册信息同步时,可能存在数据错发、漏发的情况,进而导致服务注册表中的信息与本地服务注册表中的信息不一致。为避免上述情况的发生,Eureka注册服务器还可利用服务注册表中的所有服务注册信息计算第一哈希值,并将该第一哈希值一并发送至Eureka客户端。Eureka客户端首先会使用接收到的服务注册信息更新本地服务注册表,并利用更新后本地服务注册表中的服务注册信息计算第二哈希值;Eureka客户端随后会比对第一哈希值及第二哈希值,并在确定第一哈希值与第二哈希值不同时向Eureka注册服务器发送全量同步请求,以使Eureka注册服务器将服务注册表中的所有服务注册信息发送至Eureka客户端。
在一种可能的情况中,在服务注册表中查询在第二预设时间段内发生状态变化的服务注册信息,并将发生状态变化的服务注册信息及对应的状态变化信息发送至Eureka客户端,包括:
步骤21:Eureka注册服务器查询发生状态变化的服务注册信息,并利用服务注册表中所有的服务注册信息计算第一哈希值;
需要说明的是,本发明实施例并不限定Eureka注册服务器利用服务注册表中所有的服务注册信息计算第一哈希值的具体过程,可参考Eureka的相关技术。
步骤22:Eureka注册服务器将第一哈希值、发生变化的服务注册信息及对应的状态变化信息发送至Eureka客户端;
S205、Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表。
需要说明的是,本发明实施例并不限定Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表,可参考Eureka的相关技术。
当Eureka注册服务器发送的数据中包含第一哈希值时,相应的,Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表,包括:
步骤31:Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表,并利用更新后的本地服务注册表中的所有服务注册信息计算第二哈希值;
需要说明的是,本发明实施例并不限定Eureka客户端利用更新后的本地服务注册表中所有的服务注册信息计算第二哈希值的具体过程,可参考Eureka的相关技术。
步骤32:Eureka客户端在确定第一哈希值与第二哈希值不同时,向Eureka注册服务器发送全量同步请求,以使Eureka注册服务器将服务注册表中的所有服务注册信息发送至Eureka客户端。
最后,由于Eureka注册服务器可能存在宕机等情况,无法响应Eureka客户端的请求,进而无法与Eureka客户端进行服务注册信息同步。为避免Eureka注册服务器无法工作导致Eureka客户端集群停止工作的情况,可在Eureka注册服务器与Eureka客户端的数据通路上增加断路器,并利用该断路器监听Eureka注册服务器的增量同步服务。当断路器检测到增量同步服务离线时,便会启动降级服务,将Eureka客户端的请求转发至轻量级访问服务端,以使轻量级访问服务端将服务注册表中的所有服务注册信息,发送至Eureka客户端。换句话说,由于本发明采用独立的数据库进行服务注册信息存储,可避免现有技术中由于Eureka注册服务器停止工作所导致的服务注册信息无法读取的情况。
需要说明的是,本发明实施例并不限定断路器的实现方式,例如可以采用线程看门狗(WatchDog)实现,也可以使用Hystrix断路器实现,其中Hystrix为一款容错框架。本发明同样不限定轻量级访问服务端的实现方式,例如可以使用Nginx实现,其中Nginx是一个高性能的HTTP和反向代理web服务器。需要说明的是,轻量级访问服务端作为备用方案,仅用于与Eureka客户端进行简单的数据同步,例如利用服务注册表中的服务注册信息与Eureka客户端进行全量同步。
在一种可能的情况中,Eureka客户端每隔第二预设时间向Eureka注册服务器发送增量同步请求,包括:
步骤41:Eureka客户端每隔第二预设时间通过断路器向Eureka注册服务器发送增量同步请求;断路器用于对Eureka注册服务器的增量同步服务进行监听;
相应的,在Eureka客户端每隔第二预设时间通过断路器向Eureka注册服务器发送增量同步请求之后,还包括:
步骤51:当断路器检测到增量同步服务离线时,将增量同步请求转发至轻量级访问服务端,以使轻量级访问服务端将服务注册表中的所有服务注册信息发送至Eureka客户端;
步骤52:Eureka客户端利用接收到的服务注册信息更新本地服务注册表。
下面结合具体示意图介绍Eureka客户端与断路器及轻量级访问服务端的交互过程。请参考图3,图3为本发明实施例所提供的Eureka客户端与断路器及轻量级访问服务端的交互示意图。注册中心即为Eureka注册服务器,断路器可设置于网关中,用于监听Eureka注册服务器的增量同步服务使用正常工作。ServiceA(即Eureka客户端)在正常情况下会通过断路器与注册中心完成本地服务注册表的同步,但在断路器确定Eureka注册服务器的增量同步服务无法正常工作时,会将ServiceA的请求转发至轻量级Redis访问服务(即轻量级访问服务端),以使轻量级访问服务端将Redis注册表(即服务注册表)中的所有服务注册信息发送至ServiceA。
基于上述实施例,本方法中的Eureka客户端可以在Eureka注册服务器完成过期键添加后,向Eureka注册服务器获取其他客户端的服务注册信息,以获取其他客户端所提供的服务注册信息,进而可节省调用其他客户端服务的调用时间。
下面对本发明实施例提供的一种Eureka服务管控***及计算机可读存储介质进行介绍,下文描述的Eureka服务管控***及计算机可读存储介质与上文描述的家庭智能网关的Eureka服务管控方法可相互对应参照。
请参考图4a,图4a为本发明实施例所提供的一种Eureka服务管控***的结构框图,该***可以包括:Eureka注册服务器401、Eureka客户端402和数据库403,其中,
Eureka注册服务器401,用于将Eureka客户端402发送的服务注册信息更新至数据库,并在数据库中为服务注册信息增加过期键;过期键预设有过期时间;在完成对过期键的添加且接收到Eureka客户端402每隔过期时间发送的心跳信息时,对Eureka客户端的过期键进行更新;
Eureka客户端402,用于向Eureka注册服务器401发送服务注册信息,并在Eureka注册服务器401完成对过期键的添加后,每隔过期时间向Eureka注册服务器401发送心跳信息;
数据库403,用于在Eureka注册服务器401在完成对过期键的添加后,对过期键进行检测,并在确定过期键未在过期时间内更新时,则将过期键对应的服务注册信息移除。
可选地,Eureka注册服务器401,还用于将包含服务注册信息写入数据库403中的原始注册信息池,并在原始注册信息池中为服务注册信息添加过期键;每隔第一预设时间利用原始注册信息池中的服务注册信息更新数据库的服务注册表;
数据库403,还用于将服务注册信息保存于原始注册信息池和服务注册表中。
可选地,Eureka客户端402,还用于在Eureka注册服务器401在完成对过期键的添加后,每隔第二预设时间向Eureka注册服务器401发送增量同步请求;利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表;
Eureka注册服务器401,还用于在接收到增量同步请求时,在服务注册表中查询在第二预设时间段内发生状态变化的服务注册信息,并将发生状态变化的服务注册信息及对应的状态变化信息发送至Eureka客户端402。
可选地,Eureka注册服务器401,还用于查询发生状态变化的服务注册信息,并利用服务注册表中所有的服务注册信息计算第一哈希值;将第一哈希值、发生变化的服务注册信息及对应的状态变化信息发送至Eureka客户端402;
Eureka客户端402,还用于利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表,并利用更新后的本地服务注册表中的所有服务注册信息计算第二哈希值;在确定第一哈希值与第二哈希值不同时,向Eureka注册服务器401发送全量同步请求,以使Eureka注册服务器401将服务注册表中的所有服务注册信息发送至Eureka客户端402。
可选地,请参考图4b,图4b为本发明实施例所提供的另一种Eureka服务管控***的结构框图,该***还可以包含断路器404和轻量级访问服务端405,其中,
Eureka客户端402,还用于每隔第二预设时间通过断路器向Eureka注册服务器401发送增量同步请求;利用接收到的服务注册信息更新本地服务注册表;
断路器404,用于对Eureka注册服务器401的增量同步服务进行监听;在检测到增量同步服务离线时,将增量同步请求转发至轻量级访问服务端405;
轻量级访问服务端405,用于在接收到增量同步请求时,将服务注册表中的所有服务注册信息发送至Eureka客户端402;
可选地,数据库403为Redis数据库。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的Eureka服务管控方法的步骤。
由于计算机可读存储介质部分的实施例与Eureka服务管控方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见Eureka服务管控方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的Eureka服务管控方法、***及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种Eureka服务管控方法,其特征在于,包括:
Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键;所述过期键预设有过期时间;
所述Eureka注册服务器在完成对所述过期键的添加且接收到所述Eureka客户端每隔所述过期时间发送的心跳信息时,对所述Eureka客户端的过期键进行更新;
在所述Eureka注册服务器在完成对所述过期键的添加后,所述数据库对所述过期键进行检测,并在确定所述过期键未在所述过期时间内更新时,则将所述过期键对应的服务注册信息移除。
2.根据权利要求1所述的Eureka服务管控方法,其特征在于,所述Eureka注册服务器将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键,包括:
所述Eureka注册服务器将包含所述服务注册信息写入所述数据库中的原始注册信息池,并在原始注册信息池中为所述服务注册信息添加所述过期键;
所述Eureka注册服务器每隔第一预设时间利用所述原始注册信息池中的服务注册信息更新所述数据库的服务注册表。
3.根据权利要求2所述的Eureka服务管控方法,其特征在于,在所述Eureka注册服务器在完成对所述过期键的添加之后,还包括:
所述Eureka客户端每隔第二预设时间向所述Eureka注册服务器发送增量同步请求;
所述Eureka注册服务器在接收到所述增量同步请求时,在所述服务注册表中查询在所述第二预设时间段内发生状态变化的服务注册信息,并将所述发生状态变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端;
所述Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表。
4.根据权利要求3所述的Eureka服务管控方法,其特征在于,所述在所述服务注册表中查询在所述第二预设时间段内发生状态变化的服务注册信息,并将所述发生状态变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端,包括:
所述Eureka注册服务器查询所述发生状态变化的服务注册信息,并利用所述服务注册表中所有的服务注册信息计算第一哈希值;
所述Eureka注册服务器将所述第一哈希值、所述发生变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端;
相应的,所述Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表,包括:
所述Eureka客户端利用接收到的服务注册信息及对应的状态变化信息更新所述本地服务注册表,并利用更新后的本地服务注册表中的所有服务注册信息计算第二哈希值;
所述Eureka客户端在确定所述第一哈希值与所述第二哈希值不同时,向所述Eureka注册服务器发送全量同步请求,以使所述Eureka注册服务器将所述服务注册表中的所有服务注册信息发送至所述Eureka客户端。
5.根据权利要求3所述的Eureka服务管控方法,其特征在于,所述Eureka客户端每隔第二预设时间向所述Eureka注册服务器发送增量同步请求,包括:
所述Eureka客户端每隔所述第二预设时间通过断路器向所述Eureka注册服务器发送增量同步请求;所述断路器用于对所述Eureka注册服务器的增量同步服务进行监听;
相应的,在所述Eureka客户端每隔所述第二预设时间通过断路器向所述Eureka注册服务器发送增量同步请求之后,还包括:
当所述断路器检测到所述增量同步服务离线时,将所述增量同步请求转发至轻量级访问服务端,以使所述轻量级访问服务端将所述服务注册表中的所有服务注册信息发送至所述Eureka客户端;
所述Eureka客户端利用接收到的服务注册信息更新所述本地服务注册表。
6.根据权利要求1所述的Eureka服务管控方法,其特征在于,所述数据库为Redis数据库。
7.一种Eureka服务管控***,其特征在于,包括:Eureka注册服务器、Eureka客户端和数据库,其中,
所述Eureka注册服务器,用于将Eureka客户端发送的服务注册信息更新至数据库,并在所述数据库中为所述服务注册信息增加过期键;所述过期键预设有过期时间;在完成对所述过期键的添加且接收到所述Eureka客户端每隔所述过期时间发送的心跳信息时,对所述Eureka客户端的过期键进行更新;
所述Eureka客户端,用于向所述Eureka注册服务器发送所述服务注册信息,并在所述Eureka注册服务器完成对所述过期键的添加后,每隔所述过期时间向所述Eureka注册服务器发送心跳信息;
所述数据库,用于在所述Eureka注册服务器在完成对所述过期键的添加后,对所述过期键进行检测,并在确定所述过期键未在所述过期时间内更新时,则将所述过期键对应的服务注册信息移除。
8.根据权利要求7所述的Eureka服务管控***,其特征在于,
所述Eureka注册服务器,还用于将包含所述服务注册信息写入所述数据库中的原始注册信息池,并在原始注册信息池中为所述服务注册信息添加所述过期键;每隔第一预设时间利用所述原始注册信息池中的服务注册信息更新所述数据库的服务注册表;
所述数据库,还用于将服务注册信息保存于原始注册信息池和服务注册表中。
9.根据权利要求8所述的Eureka服务管控***,其特征在于,
所述Eureka客户端,还用于在所述Eureka注册服务器在完成对所述过期键的添加后,每隔第二预设时间向所述Eureka注册服务器发送增量同步请求;利用接收到的服务注册信息及对应的状态变化信息更新本地服务注册表;
所述Eureka注册服务器,还用于在接收到所述增量同步请求时,在所述服务注册表中查询在所述第二预设时间段内发生状态变化的服务注册信息,并将所述发生状态变化的服务注册信息及对应的状态变化信息发送至所述Eureka客户端。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的Eureka服务管控方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110578571.3A CN113190546B (zh) | 2021-05-26 | 2021-05-26 | 一种Eureka服务管控方法、***及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110578571.3A CN113190546B (zh) | 2021-05-26 | 2021-05-26 | 一种Eureka服务管控方法、***及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190546A true CN113190546A (zh) | 2021-07-30 |
CN113190546B CN113190546B (zh) | 2023-03-14 |
Family
ID=76985332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110578571.3A Active CN113190546B (zh) | 2021-05-26 | 2021-05-26 | 一种Eureka服务管控方法、***及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190546B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821414A (zh) * | 2021-11-22 | 2021-12-21 | 成都新希望金融信息有限公司 | 一种服务器保护方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143393A1 (en) * | 2012-11-16 | 2014-05-22 | Vodafone Ip Licensing Limited | Method, system and devices for managing user registration of a service in an ims network |
CN110297706A (zh) * | 2019-07-03 | 2019-10-01 | 北京首汽智行科技有限公司 | 一种基于Eureka-Server项目的下线方法 |
CN111510469A (zh) * | 2019-01-31 | 2020-08-07 | 上海哔哩哔哩科技有限公司 | 一种消息处理方法和装置 |
CN112418777A (zh) * | 2020-10-12 | 2021-02-26 | 国网江苏省电力有限公司经济技术研究院 | 一种电力项目业务中台及其微服务*** |
CN112506647A (zh) * | 2020-11-19 | 2021-03-16 | 杭州电魂网络科技股份有限公司 | 有状态服务器负载均衡的方法、***、装置和存储介质 |
-
2021
- 2021-05-26 CN CN202110578571.3A patent/CN113190546B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143393A1 (en) * | 2012-11-16 | 2014-05-22 | Vodafone Ip Licensing Limited | Method, system and devices for managing user registration of a service in an ims network |
CN111510469A (zh) * | 2019-01-31 | 2020-08-07 | 上海哔哩哔哩科技有限公司 | 一种消息处理方法和装置 |
CN110297706A (zh) * | 2019-07-03 | 2019-10-01 | 北京首汽智行科技有限公司 | 一种基于Eureka-Server项目的下线方法 |
CN112418777A (zh) * | 2020-10-12 | 2021-02-26 | 国网江苏省电力有限公司经济技术研究院 | 一种电力项目业务中台及其微服务*** |
CN112506647A (zh) * | 2020-11-19 | 2021-03-16 | 杭州电魂网络科技股份有限公司 | 有状态服务器负载均衡的方法、***、装置和存储介质 |
Non-Patent Citations (4)
Title |
---|
BOWEN.SUN: ""Spring Cloud Eureka 详解"", 《HTTP://09ITBLOG.SITE/?P=1048》 * |
XUAN MEI 等: "Research on health monitoring mechanism based on service invocation", 《2018 5TH INTERNATIONAL CONFERENCE ON INDUSTRIAL ENGINEERING AND APPLICATIONS (ICIEA)》 * |
刘琰翔: "面向海量微服务的高可用服务注册中心的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
吕德超: ""游戏业务受理***中定时任务子***的设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821414A (zh) * | 2021-11-22 | 2021-12-21 | 成都新希望金融信息有限公司 | 一种服务器保护方法、装置、电子设备及存储介质 |
CN113821414B (zh) * | 2021-11-22 | 2022-02-08 | 成都新希望金融信息有限公司 | 一种服务器保护方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113190546B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021121370A1 (zh) | 用于消息队列的消息丢失检测方法和装置 | |
US9753954B2 (en) | Data node fencing in a distributed file system | |
CN101876924B (zh) | 数据库故障自动检测及转移方法 | |
CN105493474B (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的***及方法 | |
CN107623703B (zh) | 全局事务标识gtid的同步方法、装置及*** | |
US20140108532A1 (en) | System and method for supporting guaranteed multi-point delivery in a distributed data grid | |
CN102411598B (zh) | 一种实现数据一致性的方法及其*** | |
US10069941B2 (en) | Scalable event-based notifications | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN104717314A (zh) | 一种ip管理方法及***、客户端、服务器 | |
CN111464612A (zh) | 一种恶劣环境下提供稳定计算服务的方法 | |
CN113190546B (zh) | 一种Eureka服务管控方法、***及可读存储介质 | |
CN113468221A (zh) | 一种基于kafka消息数据总线的***集成方法 | |
CN112612769A (zh) | 文件处理方法、装置及存储介质 | |
CN112671554A (zh) | 一种节点故障处理方法及相关装置 | |
EP3570169B1 (en) | Method and system for processing device failure | |
CN114625566A (zh) | 数据容灾方法、装置、电子设备及存储介质 | |
CN114860782B (zh) | 数据查询方法、装置、设备及介质 | |
CN107404511B (zh) | 集群中服务器的替换方法及设备 | |
CN105357222B (zh) | 一种分布式Session管理中间件 | |
CN114328638A (zh) | 一种基于数据库轮询的业务消息推送*** | |
CN109753292B (zh) | 一种在多单实例数据库服务中部署多个应用的方法及装置 | |
CN113472469B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN113904963B (zh) | 一种基于服务目录代理服务化和计分板方法的服务治理方法 | |
CN115412603B (zh) | 一种消息中间件的消息客户端模块的高可用的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |