CN110881055A - 基于Redis的微服务处理方法和设备 - Google Patents
基于Redis的微服务处理方法和设备 Download PDFInfo
- Publication number
- CN110881055A CN110881055A CN201811032436.3A CN201811032436A CN110881055A CN 110881055 A CN110881055 A CN 110881055A CN 201811032436 A CN201811032436 A CN 201811032436A CN 110881055 A CN110881055 A CN 110881055A
- Authority
- CN
- China
- Prior art keywords
- node
- micro service
- key
- service node
- redis server
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于Redis的微服务处理方法和设备。该方法包括:微服务节点启动后,将本节点的节点信息注册到Redis服务器,以便所述Redis服务器为该节点创建key‑value对;读取并保存所述Redis服务器已经存储的其他微服务节点的节点信息;创建***,通过所述***监听所述Redis服务器的键key的变化;通过***接收所述Redis服务器推送的指示所述key的变化的变更信息;根据所述变更信息对所保存的其他微服务节点的信息进行更新。本发明通过各节点的***监听服务器一侧的key的变化来检测其他节点的变化,无需轮询,节省***资源,而且能够改善监测的实时性。
Description
技术领域
本发明涉及计算机网络领域,更为具体而言,涉及一种基于Redis的微服务处理方法和设备。
背景技术
微服务架构是软件***架构之一,这样的软件***架构方便软件开发、发布和部署。但是,微服务架构的一个重要关注点是服务的注册与发现,只有通过服务的注册和发现,才能了解服务的位置,才能正确的对服务实现调用。当前流程的架构实现中,一般是通过轮询问注册服务器的方式了解节点信息。这种轮询的方式存在一些弊端,例如,需要额外的资源提供注册服务,且服务本身为了能够做到高可用,通过轮询的方式进行服务发现也增加了运维成本。
发明内容
本发明提供一种基于Redis的微服务处理方法,通过在各个微服务节点创建***监听注册服务器的key的变化来获取其他微服务节点的变化信息,与现有的轮询获取微服务节点变化信息的方式相比,提高了获知微服务节点变化信息的实时性,而且避免了轮询所导致的微服务节点和注册服务器的相关资源的浪费,降低了高可用***的运维成本。
本发明的一些实施方式提供一种基于Redis的微服务处理方法,该方法包括:微服务节点启动后,将该微服务节点的节点信息注册到Redis服务器,以便所述Redis服务器为所述微服务节点创建key-value对;微服务节点读取并保存所述Redis服务器已经存储的其他微服务节点的节点信息;微服务节点创建***,通过所述***监听所述Redis服务器的键key的变化;微服务节点通过***接收所述Redis服务器推送的指示所述key的变化的变更信息;微服务节点根据所述变更信息对所保存的其他微服务节点的信息进行更新。
本发明的一些实施方式提供一种计算机设备,其包括:处理器;和存储器,用于存储计算机指令,所述计算机指令适于被所述处理器加载以执行上述的微服务节点一侧执行的微服务处理方法。
本发明的一些实施方式提供一种计算机可读介质,其存储有计算机可读指令,所述指令适于被处理器加载以执行上述的微服务节点一侧执行的微服务处理方法。
本发明的一些实施方式还提供一种基于Redis的微服务处理方法,包括:Redis服务器接收微服务节点发送的节点信息,并根据所述节点信息为所述微服务节点创建key-value对;Redis服务器向所述微服务节点发送本地保存的其他微服务节点的节点信息;Redis服务器接收所述微服务节点所创建的***对所述Redis服务器中的key的变化的监听请求,并根据所述监听请求监听key的变化;Redis服务器在检测到key的变化时,向所述微服务节点的***发送指示所述key的变化的变更信息,以便所述微服务节点根据所述变更信息对该微服务节点本地保存的微服务节点的信息进行更新。
本公开的一些实施方式还提供一种计算机设备,包括处理器;和存储器,用于存储计算机指令,所述计算机指令适于被所述处理器加载以执行上述的服务器一侧的微服务处理方法。
本公开的一些实施方式还提供一种计算机可读介质,其存储有计算机可读指令,所述指令适于被处理器加载以执行上述的服务器一侧的微服务处理方法。
附图说明
图1示出了根据本发明实施方式的基于Redis的微服务处理方法的流程示意图。
图2示出了根据本发明实施方式的Redis的微服务处理架构示意图。
图3示出了根据本发明实施方式的基于Redis的微服务处理方法的流程示意图。
图4示出了根据本发明实施方式的计算机设备的结构示意图。
图5示出了根据本发明实施方式的服务器的结构示意图。
具体实施方式
现参考示例性的实施方式详细描述本发明,一些实施例图示在附图中。以下描述参考附图进行,除非另有表示,否则在不同附图中的相同数字代表相同或类似的元件。以下示例性实施方式中描述的方案不代表本发明的所有方案。相反,这些方案仅是所附权利要求中涉及的本发明的各个方面的***和方法的例子。
参见图1,示出了根据本发明实施方式的基于Redis的微服务处理方法的流程示意图,该方法在微服务架构中的微服务节点一侧执行,具体而言,该方法100可包括:步骤110、步骤120、步骤130、步骤140和步骤150,接下来结合具体的实施例对上述的步骤进行说明。
步骤110,微服务节点启动后,将该微服务节点的节点信息注册到Redis服务器,以便所述Redis服务器为所述微服务节点创建key-value对。
微服务节点在其启动之后,将本服务节点的节点信息,例如,可包括该微服务节点提供的微服务名称、该微服务节点的IP地址和端口地址,发送到Redis服务器(例如,Redis注册服务器)。当相同的微服务程序在同一个服务器上部署多份实例时,这些实例的ip和服务名称相同,因此本发明实施方式中将IP地址、端口地址和服务名称的组合作为节点标识,确保节点唯一地被标识。本发明实施方式的微服务可以在自己的程序中运行,并通过轻量级设备与HTTP(Hyper Text Transfer Protocol,超文本传输协议))型的API(ApplicationProgramming Interface,应用程序编程接口)进行沟通。
Redis服务器接收到微服务节点发送的注册信息之后,为该微服务节点创建对应的key-value对,并将微服务节点以及对应的key-value对保存到相应的存储器,该存储器可被其他微服务节点获取。Redis创建的key-value对可支持存储多种value类型,例如string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。本发明实施方式的key可包括前缀和节点标识,其中,前缀可包括***环境标识,例如,环境名称;节点标识可包括该微服务节点提供的服务的服务名称、该微服务节点的IP地址和端口地址中等。在一些实施例中,节点标识包括该微服务节点提供的服务的服务名称、该微服务节点的IP地址和端口地址。需要说明的是,节点标识并不限于上述的三项信息,还可以包括表达节点其他属性的信息。
微服务节点除了向Redis服务器发送节点信息(例如,服务名称、IP地址和端口地址)之外,还可以向Redis发送本微服务节点的有效时间,该有效时间是该微服务节点在Redis服务器保持有效的时间。在一些实施例中,在向Redis服务器发送节点信息的同时发送该微服务节点的有效时间。一般而言,微服务节点的有效时间,主要表征该微服务节点离线之后希望其他的微服务节点多久能收到通知。通常有效时间越短,通知的越及时,但是过短的通知时间, 就意味着各个微服务刷新自身信息的间隔越短, 对***的资源消耗越高。在一些实施例中,各个微服务节点具有相同的有效时间。在另外一些实施例中,不同的微服务节点具有不同的有效时间。
在一些实施例中,本发明实施方式提供的方法还可包括:微服务节点以预定的时间段重新向Redis服务器发送该微服务节点的有效时间,其中,该预定的时间段小于该服务节点上一次的有效时间。例如,微服务节点J向Redis服务器发送的有效时间为10s,然后间隔8s后重新向Redis服务器发送该微服务节点J的有效时间,也就是说,本次有效时间发送的与上一次有效时间发送之间的时间间隔8s小于上一次的有效时间10s。本次发送的有效时间可以与上一次的有效时间10s相同,也可以与上一次的有效时间10s不同。在一些实施方式中,将微服务节点每次发送的有效时间设置为相同。
微服务节点按照预定的周期刷新自身的节点信息,并将刷新后的节点信息发送到Redis服务器,从而保证Redis服务器获知及时有效的微服务节点信息。微服务节点的刷新周期小于该微服务节点向Redis服务器发送的该节点的有效时间。在一些实施例中,将微服务节点的刷新周期设置为该微服务节点的有效时间的4/5,这样既可以保证Redis能够及时的获知微服务节点的有效信息,又可以保证节点自身的刷新不会太频繁,避免刷新资源的浪费。
在一些实施方式中,Redis服务器还会根据微服务节点发送的该节点的有效时间,为该节点对应的key-value对设置有效时间,该key-value的有效时间与该节点的有效时间相同。
需要说明的是,本发明实施方式所描述的微服务节点并不是特指某一个微服务节点,而是可以是Redis服务器服务的部分或全部的微服务节点。
步骤120,微服务节点读取并保存所述Redis服务器已经存储的其他微服务节点的节点信息。
微服务节点在自身启动上线后,会从Redis注册服务器读取该Redis注册服务器已经存储的其他微服务节点节点信息(例如,微服务节点的key-value对等),并将获取的这些其他微服务节点的节点信息存储到本微服务节点本地的存储器以供后续的服务调用。
步骤130,微服务节点创建***,通过所述***监听所述Redis服务器的键key的变化。
微服务节点创建***,该***可以是接口的形式,例如,可通过下述的方式进行创建:
import org.springframework.data.redis.connection.MessageListener;
public interface IRedisListener extends MessageListener {
/**
* 支持的主题
* @return
*/
public String supportTopic();
}
其中***listener可以采用多种方式实现,例如,可以是新增节点***、过期***等等。
在一些实施例中,每个微服务内部存在2种***,其中一种是新增***,负责监听(也可称为订阅)一个主题topic create_node,凡是发向这个主题的事件,都暗示某个微服务节点Node X上线,当此主题任何事件达到时,监听代码被调用,从而其他微服务节点了解到Node X的上线。任何微服务节点,当其正常启动后,都应该向这个create_nodes 主题发布一个事件。该***监听topic名称是topic.nodes.changes,这个topic名称是可以配置的,只要保证所有的节点使用相同名称的topic即可,可以监听节点的新增变化。另外一种***,称为过期***,负责监听expire事件和expired事件。任何微服务节点运行时,存在一个守护线程,负责每隔固定时间,向Redis中以自身ip地址/port地址/服务名称为标识的键设置过期时间,这将产生一个expire 事件,此事件类似于心跳事件。当由于某种原因,比如微服务节点崩溃,或者节点与Redis的网络发生中断时,Redis服务器一直无法接受此节点的心跳事件,Redis服务器自动将对应的key-value移除,从而产生一个expired事件。其他的微服务节点收到此expired事件时,将对应的节点从本地的服务节点列表中移除。
例如,可以通过下述的代码创建***:
@Bean
public RedisMessageListenerContainer redisExpireEventContainer(){
RedisMessageListenerContainer container=newRedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
if(redisListeners!=null)
{
for(IRedisListener listener:redisListeners){
PlatformLogger.getLogger().info("register redis listener {}for topic {}",listener.getClass().getName(),listener.supportTopic());
container.addMessageListener(listener,new PatternTopic(listener.supportTopic()));
}
PlatformLogger.getLogger().info("success register {} redislisteners",redisListeners.size());
}
return container;
}
如图2所示,各个微服务节点(微服务节点210、220、230和240)均可以创建***(210M、220M、230M和240M)监听Redis服务器200中保存的key-valued对的事件。Redis服务器200在监测到key-value值变化事件之后,可以将指示key的变化的变更信息推送到各个微服务节点的***210M、220M、230M和240M。与现有的微服务节点轮询获知其他服务节点的方式相比,大大提高了获知节点新增和过期信息变化的实时性和及时性。
不同***可监听Redis注册服务器的不同的key的变化,例如,key的新增或者过期。
Key的新增,说明***中有新的微服务节点注册到Redis服务器,可通过订阅***特定的topic进行监听。
Key的过期,说明Redis服务器该key的有效期已过。这种情况通常是由于该过期key对应的微服务节点没有按时更新Redis服务器的 key的有效时间,导致Redis服务器主动删除key。没按时对微服务节点的key-value对的有效时间进行更新,通常在微服务节点无响应或者微服务节点和Redis服务器之间的网络长时间中断的情形下发生。可以通过过期***监听。
在本发明的一些实施方式中,通过过期***监听Redis服务器的key的变化可包括:通过过期***监听Redis服务器已经保存的一组或全部的微服务节点的key-value对的第一过期事件,所述第一过期事件为所述key-value对对应的节点按照预定时间段发送有效时间的事件,例如,上面描述的expire事件。通过过期***监听Redis服务器的key的变化还可包括:通过过期***监听Redis服务器已经保存的一组或全部微服务节点的key-value对的第二过期事件,所述第二过期事件为所述key-value对对应的节点未按照预定时间段发送有效时间而导致所述key-value对失效的事件,例如,上面描述的expired事件。
在本发明的一些实施方式中,通过***监听Redis服务器的key的变化可包括:通过新增***监听Redis服务器的key中指示节点产生的事件。例如可以通过订阅主题topic create_nodes来监听redis服务器中指示节点产生的事件,凡是发向这个主题的事件,都暗示某个微服务节点NodeX上线,当此主题任何事件达到时,监听代码被调用,从而其他微服务节点了解到NodeX的上线。
步骤140,微服务节点通过***接收所述Redis服务器推送的指示所述key的变化的变更信息。
通过微服务节点创建的***可以监测Redis服务器的key的变化,在Redis服务器的key发生变化的事件,例如,key的新增或过期等事件,Redis服务器将指示所述key的变化的变更信息(例如,新增事件或过期事件)发送到各个微服务节点。
在一些实施例中,Redis服务器和微服务的节点通讯协议是一种基于TCP的协议。Redis定义了一种应用协议,从而Redis客户端和Redis 服务器之间能够高效安全的通讯。
在一些实施例中,对于过期事件,监听的topic是:
__keyspace@0__:${prefix} /*
其中,${prefix} 是前缀的值,和实际存储的节点标识的前缀对应,
比如某个微服务节点存储在redis的0号数据库中,且key为ebao_test_env/nodes/security-service/192.168.1.5/53836
那么,过期***监听的topic就应该是:
__keyspace@0__:ebao_test_env/nodes/*
由于最后的通配符 *,实际上是监听一批或一组key的过期事件,而非一个节点的过期事件。
当收到过期事件时,下述代码被触发:
@Override
public void onMessage(Message message, byte[] pattern) {
Assert.notNull(message, "message can not be null");
Assert.notNull(message.getBody(), "message body cannot benull");
ApplicationEvent event = RedisKeyEvent.generateApplicationEvenet(message);
if (event != null)
statusManager.refresh(event);
}
message的body为文本,为expire或者expired,从而了解到是过期删除还是心跳事件。
message channel 为文本,含有当前特定的topic的实际值,例如:
__keyspace@0__:ebao_test_env/nodes/security-service/192.168.1.5/53836
从上述topic我们能获取到节点的唯一标识,从而删除对应的节点。
每个事件的体部分body,是一个json文本,含有节点的IP地址、端口地址和服务名称ip/port/servicename等信息,框架可以根据需要自行加入其他额外的信息。
java示例代码如下,其他机器语言可以参考对应语言的redis连接和使用说明。
@Override
publicvoid onMessage(Message message, byte[] pattern) {
String body=new String(message.getBody());
PlatformLogger.getLogger().debug("the node register event comingwith body:{}",body);
Node node=jsonAccessor.decode(body,Node.class);
ApplicationEvent event= eventNodeConvertor.to(node);
event.setType(EStatusType.start);
statusManager.refresh(event);
PlatformLogger.getLogger().debug("the node {}:{} is registered tocurrent application",event.getAddress(),event.getPort());
}
步骤150,微服务节点根据所述变更信息对所保存的其他微服务节点的信息进行更新。
微服务节点通过***接收Redis服务器推送的指示key的变化的变更信息,然后根据指示key的变化的变更信息对本地存储的其他微服务节点的信息进行更新,例如,对于新增的key,可以在本地存储的其他微服务节点列表增加该新增的key对应的节点信息,对于过期的key,可以在本地存储的其他微服务节点列表删除该key的对应的节点信息,完成对本地存储的其他微服务节点的信息的及时更新。
本发明实施方式提供的基于Redis的微服务处理方法,通过在各微服务节点创建的***检测Redis服务器的key的变化,通过key的变化表征key对应的微服务节点的状态变化,及时对微服务节点本地存储的服务节点的信息更新,与现有的轮询方式进行节点信息更新方式相比,避免轮询周期内节点信息发生变化不能及时监测的情况,提高了节点信息更新的实时性;此外,还能够避免周期轮询带来的资源损耗,降低***高可用的运维成本。
参见图3,图3示出了根据本发明实施方式的微服务处理方法的流程示意图,该方法是在微服务架构的服务器一侧执行,具体而言,方法300可包括:步骤310、步骤320、步骤330和步骤340,接下来结合具体的实施例对上述的各个步骤进行具体的说明。
步骤310,Redis服务器接收微服务节点发送的节点信息,并根据所述节点信息为所述微服务节点创建key-value对。
Reids服务器,作为Redis中心,接收各个微服务节点发送的节点信息,并将这些节点信息作为节点的注册信息,例如,可包括该微服务节点提供的微服务的名称、该微服务节点的IP地址和端口地址等,并根据节点信息为该微服务节点创建key-value对。在一些实施例如中国年,key包括前缀和节点标识,其中,前缀可包括***环境标识(例如,环境名称),节点标识可包括服务名称、IP地址和端口地址等。
步骤320,Redis服务器向所述微服务节点发送本地保存的其他微服务节点的节点信息。
Redis服务器向微服务节点发送服务器本地保存的其他微服务节点的节点信息(例如,key-value对等)。
步骤330,Redis服务器接收所述微服务节点所创建的***对所述Redis服务器中的key的变化的监听请求,并根据所述监听请求监听key的变化。
如上所述,各个微服务节点会创建对应的***,例如,新增***和过期***,并通过***向Redis服务器发送监听请求,Redis服务接收微服务节点所创建的***发送的监听请求,根据监听请求监听Redis服务器中的key的变化,例如,key的新增、过期等事件。
步骤340,Redis服务器在检测到key的变化时,向所述微服务节点的***发送指示所述key的变化的变更信息,以便所述微服务节点根据所述变更信息对该微服务节点本地保存的微服务节点的信息进行更新。
Redis服务器在监测到key的变化事件之后,将所有的发送监听请求的微服务节点的***推送指示key的变化的变更信息,例如,新增事件、第一过期事件(例如,心跳事件)和第二过期事件(例如,过期删除事件),这样各个***的的服务节点可以根据Redis服务器推送的变更信息对微服务节点本地维护的节点列表信息进行更新。
在一些实施例中,Redis服务器还接收微服务节点发送的有效时间,并根据该有效时间为该微服务节点对应的key-value对设置有效时间。
在一些实施方式中, Redis服务器监测本地保存的微服务节点是否按照预定时间发送有效时间,若是,则生成第一过期事件,若否,则生成第二过期事件。
在一些实施方式中,Redis服务器检测指示节点新增的主题topic create_node,并向订阅所述主题的微服务节点发送该主题对应的事件。
需要说明的是,上面Redis服务器一侧的执行动作,在微服务节点一侧的描述中有对应的描述,在此不再赘述。
本公开还提供一种计算机设备。如图4所示,该计算机设备400可包括处理器421、输入/输出(I/O)设备422、存储器423、数据库424和显示器425。
处理器421可为一个或多个已知的处理装置,其可以加载存储器423中存储的用于实现上述方法的计算机指令以使计算机设备执行上述的方法。
I/O设备422可被配置以允许数据被接收和/或传输。I/O设备422可包括一个或多个数字和/或模拟通信设备,其允许计算机设备400与其他机器和设备通信。计算机设备400还可包括一个或多个数据库424,或通过网络与一个或多个数据库424通信连接。例如,数据库424可以是适于进行上述所描述的方法的关联数据处理的任意合适的数据库。
显示器425可包括显示屏,其可用于显示输入/输出设备422的输出结果以及数据处理过程中的中间结果。
本公开还提供一种计算机可读的存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现上面所描述的基于Redis的微服务处理中节点一侧的方法。
本发明实施方式还提供一种服务器。如图5所示,服务器500可包括处理器501、输入/输出(I/O)设备502、存储器503和数据库504。
处理器501可以采用一个或多个处理芯片,其可以加载存储器503中存储的实现上述方法的计算机指令以使服务器实现上面所描述的方法。
I/O设备502可被配置以允许数据被接收和/或传输。I/O设备502可包括一个或多个数字和/或模拟通信设备,其允许服务器500与其他机器和设备通信。服务器500还可包括一个或多个数据库504,或通过网络与一个或多个数据库504通信连接。例如,数据库504可以是适于进行上述所描述的方法的关联数据处理的任意合适的数据库。
本发明实施方式还提供一种计算机可读的存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现上面所描述的基于Redis的微服务处理中服务器一侧的方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
Claims (20)
1.一种基于Redis的微服务处理方法,其特征在于,包括:
微服务节点启动后,将该微服务节点的节点信息注册到Redis服务器,以便所述Redis服务器为所述微服务节点创建key-value对;
微服务节点读取并保存所述Redis服务器已经存储的其他微服务节点的节点信息;
微服务节点创建***,通过所述***监听所述Redis服务器的键key的变化;
微服务节点通过***接收所述Redis服务器推送的指示所述key的变化的变更信息;
微服务节点根据所述变更信息对所保存的其他微服务节点的信息进行更新。
2.根据权利要求1所述的方法,其特征在于,所述key包括前缀和节点标识。
3.根据权利要求2所述的方法,其特征在于,所述节点标识包括服务名称、IP地址和端口地址。
4.根据权利要求2所述的方法,其特征在于,所述节点信息包括服务名称、IP地址和端口地址,所述将该微服务节点的节点信息注册到Redis服务器包括:
将所述微服务节点的服务名称、IP地址和端口地址作为注册信息发送到Redis服务器。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
微服务节点将该微服务节点的有效时间发送到所述Redis服务器,以便所述Redis服务器为所述微服务节点对应的Key-value对设置有效时间。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
微服务节点以预定时间段重新向所述Redis服务器发送该微服务节点的有效时间,其中,所述预定时间段小于所述微服务节点上一次的有效时间。
7.根据权利要求5和6中任意一项所述的方法,所述***包括新增***和过期***。
8.根据权利要求7所述的方法,其特征在于,所述通过所述***监听所述Redis服务器的key的变化包括:
通过所述新增***监听所述Redis服务器的key-value对中指示节点产生的事件。
9.根据权利要求7所述的方法,其特征在于,所述通过所述***监听所述Redis服务器的key的变化包括:
通过过期***监听Redis服务器已经保存的微服务节点的key-value对的第一过期事件,所述第一过期事件为所述key-value对对应的节点按照预定时间段发送有效时间的事件。
10.根据权利要求7所述的方法,其特征在于,所述通过所述***监听所述Redis服务器的key的变化包括:
通过过期***监听Redis服务器已经保存的微服务节点的key-value对的第二过期事件,所述第二过期事件为所述key-value对对应的节点未按照预定时间段发送有效时间而导致所述key-value对失效的事件。
11.一种基于Redis的微服务处理方法,其特征在于,包括:
Redis服务器接收微服务节点发送的节点信息,并根据所述节点信息为所述微服务节点创建key-value对;
Redis服务器向所述微服务节点发送本地保存的其他微服务节点的节点信息;
Redis服务器接收所述微服务节点所创建的***对所述Redis服务器中的key的变化的监听请求,并根据所述监听请求监听key的变化;
Redis服务器在检测到key的变化时,向所述微服务节点的***发送指示所述key的变化的变更信息,以便所述微服务节点根据所述变更信息对该微服务节点本地保存的微服务节点的信息进行更新。
12.根据权利要求11所述的方法,其特征在于,所述key包括前缀和节点标识。
13.根据权利要求12所述的方法,其特征在于,所述节点标识包括服务名称、IP地址和端口地址。
14.根据权利要求11所述的方法,其特征在于,还包括:
Redis服务器接收所述微服务节点发送的有效时间,并根据所述有效时间为所述微服务节点对应的key-value对设置有效时间。
15.根据权利要求14所述的方法,其特征在于,还包括:
Redis服务器检测本地保存的其他微服务节点是否按照预定时间发送有效时间,若是,则生成第一过期事件,若否,则生成第二过期事件。
16.根据权利要求11所述的方法,其特征在于,还包括:
Redis服务器监测指示节点新增的主题,并向订阅所述主题的微服务节点发送所述主题对应的事件。
17.一种计算机设备,其包括:
处理器;和
存储器,用于存储计算机指令,所述计算机指令适于被所述处理器加载以执行权利要求1至10的任何一项所述的方法。
18.一种计算机可读介质,其存储有计算机可读指令,所述指令适于被处理器加载以执行权利要求1至10的任何一项所述的方法。
19.一种服务器,其包括:
处理器;和
存储器,用于存储计算机指令,所述计算机指令适于被所述处理器加载以执行权利要求11至16的任何一项所述的方法。
20.一种计算机可读介质,其存储有计算机可读指令,所述指令适于被处理器加载以执行权利要求11至16的任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811032436.3A CN110881055A (zh) | 2018-09-05 | 2018-09-05 | 基于Redis的微服务处理方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811032436.3A CN110881055A (zh) | 2018-09-05 | 2018-09-05 | 基于Redis的微服务处理方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110881055A true CN110881055A (zh) | 2020-03-13 |
Family
ID=69727589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811032436.3A Pending CN110881055A (zh) | 2018-09-05 | 2018-09-05 | 基于Redis的微服务处理方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110881055A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111698266A (zh) * | 2020-06-30 | 2020-09-22 | 平安国际智慧城市科技股份有限公司 | 服务节点调用方法、装置、设备及可读存储介质 |
CN112738339A (zh) * | 2020-12-29 | 2021-04-30 | 杭州东信北邮信息技术有限公司 | 一种电信域微服务架构下的服务实例无损扩缩容方法 |
CN114125035A (zh) * | 2021-09-27 | 2022-03-01 | 烽火通信科技股份有限公司 | 一种大规模扩容场景下服务注册方法与装置 |
CN116760930B (zh) * | 2023-08-17 | 2023-11-10 | Tcl通讯科技(成都)有限公司 | 通话处理方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636437A (zh) * | 2014-12-31 | 2015-05-20 | 华为技术有限公司 | 一种事件通知方法、***的处理方法及装置 |
CN106302596A (zh) * | 2015-06-03 | 2017-01-04 | 北京京东尚科信息技术有限公司 | 一种服务发现的方法和装置 |
CN107786527A (zh) * | 2016-08-31 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 实现服务发现的方法及设备 |
CN107888444A (zh) * | 2017-09-29 | 2018-04-06 | 深圳市牛鼎丰科技有限公司 | 服务监控方法、服务监控装置、计算机设备和存储介质 |
-
2018
- 2018-09-05 CN CN201811032436.3A patent/CN110881055A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636437A (zh) * | 2014-12-31 | 2015-05-20 | 华为技术有限公司 | 一种事件通知方法、***的处理方法及装置 |
CN106302596A (zh) * | 2015-06-03 | 2017-01-04 | 北京京东尚科信息技术有限公司 | 一种服务发现的方法和装置 |
CN107786527A (zh) * | 2016-08-31 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 实现服务发现的方法及设备 |
CN107888444A (zh) * | 2017-09-29 | 2018-04-06 | 深圳市牛鼎丰科技有限公司 | 服务监控方法、服务监控装置、计算机设备和存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111698266A (zh) * | 2020-06-30 | 2020-09-22 | 平安国际智慧城市科技股份有限公司 | 服务节点调用方法、装置、设备及可读存储介质 |
CN111698266B (zh) * | 2020-06-30 | 2023-05-02 | 深圳赛安特技术服务有限公司 | 服务节点调用方法、装置、设备及可读存储介质 |
CN112738339A (zh) * | 2020-12-29 | 2021-04-30 | 杭州东信北邮信息技术有限公司 | 一种电信域微服务架构下的服务实例无损扩缩容方法 |
CN114125035A (zh) * | 2021-09-27 | 2022-03-01 | 烽火通信科技股份有限公司 | 一种大规模扩容场景下服务注册方法与装置 |
CN114125035B (zh) * | 2021-09-27 | 2023-08-08 | 烽火通信科技股份有限公司 | 一种大规模扩容场景下服务注册方法与装置 |
CN116760930B (zh) * | 2023-08-17 | 2023-11-10 | Tcl通讯科技(成都)有限公司 | 通话处理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110881055A (zh) | 基于Redis的微服务处理方法和设备 | |
CN109639572B (zh) | 路由管理方法、装置及微服务*** | |
US12034611B2 (en) | NF service consumer restart detection using direct signaling between NFs | |
US20210176310A1 (en) | Data synchronization method and system | |
CN100579082C (zh) | 信息交换***、管理服务器和用于降低网络负荷的方法 | |
EP3145148B1 (en) | Resource subscription processing method and device | |
CN101317370B (zh) | 用于事件通知相互关联的方法和管理代理 | |
CN103491055A (zh) | 一种在多个客户端间同步信息的方法、客户端和服务器 | |
US20180004582A1 (en) | Timers in stateless architecture | |
CN111770172A (zh) | 消息中间件消费代理方法、装置、代理服务器及存储介质 | |
CN113905005A (zh) | 即时通讯的客户端状态更新方法和装置 | |
CN111064626A (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
US20060009198A1 (en) | Apparatus and method for delivering messages to a mobile information terminal | |
CN111464642A (zh) | 车机消息推送的方法和装置 | |
WO2016115885A1 (zh) | 资源操作请求的处理方法及装置 | |
CN111130905A (zh) | 基于分布式集群的日志级别动态调整方法 | |
CN112511595B (zh) | 一种消息推送方法及消息服务*** | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
CN107425994B (zh) | 一种实现参数远程管理的方法、终端和服务器 | |
CN111182066A (zh) | 基于token认证的日志级别动态调整方法 | |
CN111124703A (zh) | 一种集群环境下自动提醒处理工作的方法及*** | |
CN111200578A (zh) | 一种通信方法、客户端设备及服务端设备 | |
CN115632815A (zh) | 一种数据的更新方法、装置、电子设备及存储介质 | |
CN112437146B (zh) | 一种设备状态同步方法、装置及*** | |
CN115065686A (zh) | 分布式负载均衡***的配置方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200313 |
|
RJ01 | Rejection of invention patent application after publication |