数据处理方法及装置、分布式系统与流程

未命名 08-14 阅读:103 评论:0


1.本技术涉及计算机技术领域,例如涉及一种数据处理方法及装置、分布式系统。


背景技术:

2.随着信息技术的发展,分布式计算技术在众多场景中得到了广泛应用。在分布式系统中,各个客户端都有其独立运行的java程序以及对应的jvm进程。其中,java虚拟机(java virtual machine,简称jvm)是一种用于计算设备的规范。由于每个客户端都存在独立运行的jvm进程,每次启动java应用程序,都会启动一个对应的jvm进程,该进程会为java程序提供虚拟的运行环境,并负责将java字节码转换为机器码执行。不同的java程序会分配不同的内存空间,以便程序在运行时可以进行数据交换等操作。因此,不同的java程序之间相互独立,彼此之间不会干扰或影响。
3.在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
4.由于jvm具有内存管理的功能,每个独立运行的jvm进程都有其独立的数据更新操作。因此,时常会发生不同的客户端之间运行的jvm进程中缓存数据不一致的现象。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
7.本公开实施例提供了一种数据处理方法及装置、分布式系统,以解决分布式系统中多个客户端的缓存数据不一致的问题。
8.在一些实施例中,所述数据处理方法,该数据处理方法应用于分布式系统,分布式系统包括服务端和多个客户端;数据处理方法包括:服务端在接收到数据同步请求的情况下,与发送数据同步请求的第一客户端建立连接,以获得第一客户端的注册地址;服务端根据第一客户端的注册地址,确定其他客户端的注册地址,其他客户端为多个客户端中除第一客户端外的客户端;服务端按照其他客户端的注册地址,向其他客户端发送数据同步指令。
9.在一些实施例中,在服务端获得第一客户端的注册地址之后,该数据处理方法还包括:服务端获取存储于第一客户端的更新记录,更新记录为第一客户端执行数据管理操作而导致的数据更新;其中,数据管理操作包括:数据增加操作、数据修改操作、数据删除操作、数据查询操作之中的一个或多个。
10.在一些实施例中,服务端包括主节点和多个从节点,在服务端获得更新记录之后,该数据处理方法还包括:服务端根据更新记录,更新主节点的内存注册表;服务端在主节点的内存注册表更新完成的情况下,采用异步方式更新多个从节点的内存注册表。
11.在一些实施例中,该数据处理方法还包括:服务端在主节点的内存注册表更新失败的情况下,分别获取多个从节点的内存偏移量;将内存偏移量最大的从节点确定为新的主节点,以更新新的主节点的内存注册表。
12.在一些实施例中,服务端根据第一客户端的注册地址,确定其他客户端的注册地址,包括:服务端获得本地注册表,本地注册表中保存有多个客户端,以及多个客户端的注册地址;服务端根据本地注册表和第一客户端的注册地址,从多个客户端的注册地址中筛选出其他客户端的注册地址。
13.在一些实施例中,所述数据处理方法,该数据处理方法应用于分布式系统,分布式系统包括服务端和多个客户端;数据处理方法包括:第一客户端向服务端发送数据同步请求;第一客户端在服务端与其建立连接的情况下,向服务端发送第一客户端的注册地址,以使服务端根据第一客户端的注册地址确定其他客户端的注册地址,并按照其他客户端的注册地址,向其他客户端发送数据同步指令。
14.在一些实施例中,第一客户端在向服务端发送数据同步请求之前,该数据处理方法还包括:第一客户端执行数据管理操作;第一客户端存储数据管理操作导致的更新记录;其中,数据管理操作包括:数据增加操作、数据修改操作、数据删除操作、数据查询操作之中的一个或多个。
15.在一些实施例中,第一客户端存储数据管理操作导致的更新记录,包括:第一客户端按照冷热链方式进行更新记录的存储。
16.在一些实施例中,所述数据处理装置包括处理器和存储有程序指令的存储器,其中,处理器在运行程序指令时,执行上述的数据处理方法。
17.在一些实施例中,所述分布式系统,包括服务端、多个客户端以及上述的数据处理装置。
18.本公开实施例提供的数据处理方法及装置、分布式系统,可以实现以下技术效果:
19.在分布式系统中,服务端在接收到同步请求后,根据发送数据同步请求的第一客户端的注册地址,确定需要同步的其他客户端的注册地址,以使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的运行稳定性。
20.以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本技术。
附图说明
21.一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
22.图1是本公开实施例提供的一个分布式系统的结构示意图;
23.图2是本公开实施例提供的一个数据处理方法的示意图;
24.图3是本公开实施例提供的另一个数据处理方法的示意图;
25.图4是本公开实施例提供的另一个数据处理方法的示意图;
26.图5是本公开实施例提供的另一个数据处理方法的示意图;
27.图6是本公开实施例提供的另一个数据处理方法的示意图;
28.图7是本公开实施例提供的一个冷热链方式的数据更新示意图;
29.图8是本公开实施例提供的一个数据处理过程的交互示意图;
30.图9是本公开实施例提供的一个数据处理装置的示意图;
31.图10是本公开实施例提供的一个服务端的数据更新示意图;
32.图11是本公开实施例提供的另一个服务端的数据更新示意图;
33.图12是本公开实施例提供的另一个服务端的数据更新示意图。
具体实施方式
34.为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
35.本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
36.本公开实施例提供了一种分布式系统,如图1所示,分布式系统包括服务端和多个客户端。除非另有说明,术语“多个”表示两个或两个以上。
37.在本公开实施例中,多个客户端与服务端之间具有通信功能。在本公开实施例的分布式系统中,每个客户端都有其独立运行的java程序以及对应的jvm进程。由于每个客户端都存在独立运行的jvm进程;因此,每次启动java应用程序时都会启动一个对应的jvm进程,并且启动的jvm进程能够为java程序提供虚拟的运行环境,启动的jvm进程还负责将java字节码转换为机器码以便执行。不同的java程序会分配不同的内存空间,使程序在运行时能够进行数据交换操作。总之,不同的java程序之间相互独立,彼此之间不会产生干扰或影响。需要说明的是,jvm进程具有内存管理的功能,每个独立运行的jvm进程都可以进行其独立的数据处理操作,从而实现各jvm进程的内存管理。
38.由于在分布式系统中,每个客户端都各自存在独立运行的jvm进程并进行着各自的内存管理;因此,时常会发生多个客户端之间运行的jvm进程中缓存数据不一致的现象。而本公开实施例提供的应用于分布式系统的数据处理方法能够有效应对这种多个客户端之间缓存数据不一致的问题。
39.根据本公开实施例的一个方面,提供了一种数据处理方法,包括:在接收到数据同步请求的情况下,与发送数据同步请求的第一客户端建立连接,以获得第一客户端的注册地址;根据第一客户端的注册地址,确定其他客户端的注册地址,其他客户端为多个客户端中除第一客户端外的客户端;按照其他客户端的注册地址,向其他客户端发送数据同步指令。作为一种可选的实施方式,上述数据处理方法可以但不限于应用于服务端。
40.具体地,其他客户端为分布式系统中多个客户端中除第一客户端外的全部客户端。可以理解地,在本公开实施例的分布式系统中,第一客户端和其他客户端组成了分布式
系统的多个客户端。
41.本公开实施例提供的数据处理方法可以通过服务端来执行,以使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的运行稳定性,以及分布式系统中多个客户端的缓存数据的一致性。
42.结合图2所示,在一些实施例中,该数据处理方法可以具体包括以下步骤:
43.s110、服务端在接收到数据同步请求的情况下,与发送数据同步请求的第一客户端建立连接,以获得第一客户端的注册地址。
44.s120、服务端根据第一客户端的注册地址,确定其他客户端的注册地址。
45.s130、服务端按照其他客户端的注册地址,向其他客户端发送数据同步指令。
46.采用本公开实施例提供的数据处理方法,在分布式系统中,服务端在接收到同步请求后,根据发送数据同步请求的第一客户端的注册地址,确定需要同步的其他客户端的注册地址,以使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的运行稳定性。
47.在步骤s110中,服务端接收到第一客户端发送的数据同步请求,其中,数据同步请求可以包括第一客户端感知到本地数据更新后向服务端发送的通知。
48.在步骤s120中,第一客户端将感知到的数据更新向服务端发送通知,与此同时,第一客户端可以与服务端建立连接。在本公开实施例中,建立连接可以用于表征服务端与第一客户端通过网络协议进行通信。这里对通信采用的网络协议不做具体限定。示例性地,服务端可以基于tcp协议与第一客户端进行通信,从而第一客户端能够将本地发生的数据更新使服务端获知。
49.具体地,服务端基于tcp协议与第一客户端进行通信,可以具体包括:服务端启动指定端口等待客户端连接请求;第一客户端向服务端发起连接请求,并且服务端接受连接请求;则第一客户端与服务端连接成功,第一客户端可以与服务端进行通信。
50.在第一客户端与服务端建立连接之后,第一客户端将其与服务端建立通信时使用的注册地址发送给服务端,以使服务端基于本地注册表确定其他客户端的注册地址。可以理解地,第一客户端的注册地址可以为第一客户端所在本地网络的ip地址。
51.作为一种可选实施例,如图3所示,在步骤s110服务端获得第一客户端的注册地址之后,还可以具体包括以下步骤:
52.s111、服务端获取存储于第一客户端的更新记录。
53.s112、服务端根据更新记录,更新主节点的内存注册表;
54.s113、服务端在主节点的内存注册表更新完成的情况下,采用异步方式更新多个从节点的内存注册表。
55.s114、服务端在主节点的内存注册表更新失败的情况下,分别获取多个从节点的内存偏移量。
56.s115、将内存偏移量最大的从节点确定为新的主节点,以更新新的主节点的内存注册表。
57.采用本公开实施例提供的数据处理方法,服务端通过部署成主从架构,以使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,避免分布式系统中不同客户端之间缓存数据不一致的现象,从而有效提高了服务端的可用性,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的均衡负载和运行稳定性。
58.在步骤s111中,在服务端获得第一客户端的注册地址之后,该数据处理方法还包括:服务端获取存储于第一客户端的更新记录,更新记录为第一客户端执行数据管理操作而导致的数据更新;其中,数据管理操作包括:数据增加操作、数据修改操作、数据删除操作、数据查询操作之中的一个或多个。
59.在第一客户端与服务端建立连接之后,第一客户端将其与服务端建立通信时使用的注册地址发送给服务端的同时,第一客户端还可以将数据更新的更新记录发送给服务端。其中,第一客户端的更新记录是指由于第一客户端发生数据管理操作而导致的数据更新,并由该数据更新而产生的更新记录。
60.在步骤s112和步骤s113中,服务端包括主节点和多个从节点,在服务端获得更新记录之后,该数据处理方法还包括:服务端根据更新记录,更新主节点的内存注册表;服务端在主节点的内存注册表更新完成的情况下,采用异步方式更新多个从节点的内存注册表。
61.在本公开实施例中,服务端的主节点可以只负责进行写入操作,而从节点只负责进行读取操作。主节点在将更新记录写入内存注册表的同时,主节点将更新的数据同步给从节点,以使从节点完成内存注册表的更新。
62.在本公开实施例中,采用异步方式更新从节点的内存注册表。因此,多个从节点的数据更新与主节点的数据更新是异步完成。主节点将更新的数据同步给从节点之后,不会对从节点更新进行等待,主节点会直接执行后面的其他操作,这样异步同步的方式可以提高数据同步的执行效率。
63.在步骤s114和步骤s115中,该数据处理方法还包括:服务端在主节点的内存注册表更新失败的情况下,分别获取多个从节点的内存偏移量;将内存偏移量最大的从节点确定为新的主节点,以更新新的主节点的内存注册表。其中,主节点的内存注册表更新失败,则可以认为主节点发生故障。
64.在本方案中,内存偏移量可以用于表征主节点同步至从节点的数据范围,服务端可以由此判断从节点同步的数据是否完整。具体地,主节点和从节点部署于不同的服务器。这样,在主节点发生故障的情况下,比较各个从节点的内存偏移量,就可以确定各个从节点的数据完整度;从而可以将数据完整度最高的从节点作为新的主节点。
65.为了提高服务端运行的持续可用性,本公开实施例采用从节点接管主节点工作,继续进行数据更新的解决方式。这样,能够保证服务端持续提供服务。此外,采用这样的主从架构进行服务端的数据更新,能够增加分布式系统对于故障的容忍度,从而有效地提高服务端提供服务的可靠性和可用性。
66.作为一种可选实施例,如图4所示,步骤s120还可以具体包括以下步骤:
67.s121、服务端获得本地注册表,本地注册表中保存有多个客户端,以及多个客户端的注册地址。
68.s122、服务端根据本地注册表和第一客户端的注册地址,从多个客户端的注册地
址中筛选出其他客户端的注册地址。
69.采用本公开实施例提供的数据处理方法,使服务端能够根据第一客户端的注册地址,确定其他客户端的注册地址,进而使服务端能够将第一客户端发生更新的数据及时同步于其他客户端。实现有效避免分布式系统中不同客户端之间缓存数据不一致的现象,及时同步分布式系统中多个客户端之间的缓存数据,保证了分布式系统的运行稳定性。
70.在步骤s121和步骤s122中,服务端根据第一客户端的注册地址,确定其他客户端的注册地址,包括:服务端获得本地注册表,本地注册表中保存有多个客户端,以及多个客户端的注册地址;服务端根据本地注册表和第一客户端的注册地址,从多个客户端的注册地址中筛选出其他客户端的注册地址。其中,本地注册表是保存有系统中管理配置信息的数据库。
71.根据本公开实施例的另一个方面,还提供了一种数据处理方法,包括:向服务端发送数据同步请求;在服务端与其建立连接的情况下,向服务端发送第一客户端的注册地址,以使服务端根据第一客户端的注册地址确定其他客户端的注册地址,并按照其他客户端的注册地址,向其他客户端发送数据同步指令。作为一种可选的实施方式,上述数据处理方法可以但不限于应用于多个客户端中的任一客户端。
72.本公开实施例提供的数据处理方法可以通过第一客户端来执行,第一客户端向服务端发送数据同步请求,以使分布式系统的服务端能够根据发送数据同步请求的第一客户端的注册地址,确定需要同步的其他客户端的注册地址,并使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的运行稳定性。
73.结合图5所示,在一些实施例中,该数据处理方法可以具体包括以下步骤:
74.s210、第一客户端向服务端发送数据同步请求。
75.s220、第一客户端在服务端与其建立连接的情况下,向服务端发送第一客户端的注册地址,以使服务端向其他客户端发送数据同步指令。
76.采用本公开实施例提供的数据处理方法,通过第一客户端向服务端发送数据同步请求,以使服务端根据发送数据同步请求的第一客户端的注册地址,确定需要同步的其他客户端的注册地址,并使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的运行稳定性。
77.在步骤s210和步骤s220中,第一客户端可以配置有数据变更监听器。第一客户端的数据变更监听器能够感知第一客户端本地发生的数据更新。这样,第一客户端在执行数据管理操作后,第一客户端发生数据更新,数据变更监听器能够检测到数据更新,并向服务端发出通知,以使服务端获知第一客户端发生了数据更新。其中,数据同步请求可以为第一客户端的数据变更监听器检测到数据更新后向服务端发送的通知。
78.作为一种可选实施例,如图6所示,在步骤s210第一客户端向服务端发送数据同步请求之前,还可以具体包括以下步骤:
79.s230、第一客户端执行数据管理操作。
80.s240、第一客户端存储数据管理操作导致的更新记录。
81.采用本公开实施例提供的数据处理方法,通过第一客户端感知执行的数据管理操作及其导致的数据更新,并控制第一客户端向服务端发送数据同步请求,以使服务端根据发送数据同步请求的第一客户端的注册地址,确定需要同步的其他客户端的注册地址,并使服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步,进而保证了分布式系统的运行稳定性。
82.在步骤s230和步骤s240中,第一客户端在向服务端发送数据同步请求之前,该数据处理方法还包括:第一客户端执行数据管理操作;第一客户端存储数据管理操作导致的更新记录;其中,数据管理操作包括:数据增加操作、数据修改操作、数据删除操作、数据查询操作之中的一个或多个。具体地,数据管理操作可以包括数据的增删改查(create、read、update、delete,简称crud)操作。上述的数据管理操作可以用于描述对数据进行的相关操作。
83.可选地,第一客户端存储数据管理操作导致的更新记录,包括:第一客户端按照冷热链方式进行更新记录的存储。这样,按照冷热链方式存储数据,能够有效利用第一客户端的内存资源,避免内存资源的过度浪费,提高存储空间的使用效率,从而提高数据的访问效率。
84.按照冷热链方式进行更新记录的存储,本质就是将更新的数据存储于一个链表中。结合图7所示,链表包括热链部分和冷链部分。热链部分位于链表的前端,用于存储访问频率较高的数据;冷链部分位于链表的后端,用于存储不经常访问的数据。在链表中存储的所有数据都可以按照最近访问时间,从近到远进行排序。访问时间较近的数据可以落入热链部分,访问时间较远的数据则会落入冷链部分。链表还可以配置有指针,一方面,可以利用指针来快速获取最近被访问的头部数据节点;另一方面,还可以利用指针来快速获取未被访问最久的尾部数据节点。
85.示例性地,本公开实施例的链表可以为lru链表(least recently used linked list)。lru链表是能够基于缓存淘汰算法以实现数据存储的一种数据结构。
86.在本公开实施例的链表中,热链部分的存储容量与冷链部分的存储容量可以按照预设比例进行配置。其中,预设比例可以在2:1至1:1的范围内选取。例如,预设比例可以为1.7:1;此时,热链数据的存储容量占整个链表的63%,冷链数据的存储容量占整个链表的37%。这里,预设比例是本公开实施例中链表的初始比例,在实际应用中,该比例配置后也可以基于其他影响因素进行相应调整。
87.在实际应用中,链表在初始状态下,可以先从冷链部分的头部开始存储,这样能够避免从热链部分开始存储而导致的存储空间浪费问题。此外,还需要设定一个时间间隔,这个时间间隔可以在20ms至5s范围内选取。以时间间隔设置为1s为例,数据存储在冷链部分之后,在1s之内,该数据又被再次访问,则该被再次访问的数据将被移动至热链部分进行存储。需要说明的是,时间间隔的选取不宜过短,如果时间间隔过短,没有充足的缓冲时间,将没有充足的时间确定存储的数据是否更适合存储在热链部分。
88.此外,链表中处于热链部分的热点数据,会移动至链表的头部。若热链部分存储的数据已经达到热链部分的最大存储容量,则热链部分末尾的数据将会转存至冷链部分的头部。存放至冷链部分的数据,只要在前述时间间隔之内再次被访问,则该数据将会被重新存
储至热链部分的头部。并且,冷链部分存储的数据如果达到冷链部分的最大存储容量,则冷链部分的尾部存储的数据将会被直接删除。冷热链方式采用这样的方式来避免内存资源的过度浪费的问题,以提高链表的使用效率,从而提高数据的访问效率。这样,能够避免链表占用的内存空间过大,进而避免客户端由于内存空间不足而导致的内存溢出问题,从一定程度上保证了分布式系统数据同步的稳定性。
89.在实际应用中,如图8所示,在分布式系统中,当有应用程序在分布式系统的任一客户端运行时,该客户端执行步骤s230进行数据管理操作并产生更新记录,分布式系统会将该客户端确定为第一客户端。而后,第一客户端将数据管理操作而导致的数据更新进行存储,即第一客户端执行步骤s240存储数据管理操作导致的更新记录。第一客户端在存储了更新记录后,执行步骤s210向服务端发送数据同步请求。服务端在接收到数据同步请求的情况下,执行步骤s110与发送数据同步请求的第一客户端建立连接。第一客户端在服务端与其建立连接的情况下,执行步骤s220向服务端发送第一客户端的注册地址。服务端在获得第一客户端的注册地址后,执行步骤s121获得本地注册表,以执行步骤s122根据本地注册表和第一客户端的注册地址,从多个客户端的注册地址中筛选出其他客户端的注册地址。服务端在筛选出其他客户端的注册地址后,执行步骤s120按照其他客户端的注册地址,向其他客户端发送数据同步指令,以将第一客户端发生的数据更新及时同步于其他客户端,及时地将分布式系统中多个客户端之间的缓存数据进行了同步操作。
90.根据本公开实施例的另一个方面,还提供了一种数据处理装置。该数据处理装置包括:获取模块、确定模块和执行模块;获取模块被配置为在接收到数据同步请求的情况下,与发送数据同步请求的第一客户端建立连接,以获得第一客户端的注册地址;确定模块被配置为根据第一客户端的注册地址,确定其他客户端的注册地址,其他客户端为多个客户端中除第一客户端外的客户端;执行模块被配置为按照其他客户端的注册地址,向其他客户端发送数据同步指令。
91.在一些实施例中,数据处理装置还包括缓存模块,缓存模块被配置为获取存储于第一客户端的更新记录。具体地,缓存模块还可以被配置为在获得更新记录之后,根据更新记录,更新主节点的内存注册表;在主节点的内存注册表更新完成的情况下,采用异步方式更新多个从节点的内存注册表。相应地,在主节点的内存注册表更新失败的情况下,分别获取多个从节点的内存偏移量;将内存偏移量最大的从节点确定为新的主节点,以更新新的主节点的内存注册表。
92.结合图9所示,本公开实施例提供一种数据处理装置300,包括处理器(processor)301和存储器(memory)302。可选地,该装置还可以包括通信接口(communication interface)303和总线304。其中,处理器301、通信接口303、存储器302可以通过总线304完成相互间的通信。通信接口303可以用于信息传输。处理器301可以调用存储器302中的逻辑指令,以执行上述实施例的数据处理方法。
93.此外,上述的存储器302中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
94.存储器302作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器301通过运行存储在存储器302中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中数据处理方
法。
95.存储器302可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器。
96.本公开实施例提供了一种分布式系统,包括服务端、多个客户端以及上述的数据处理装置。
97.在一些实施例中,如图10所示,服务端可以采用主从架构进行服务端的数据更新。其中,服务端主节点的内存注册表可以通过异步线程同步给与其对应的多个从节点。各个从节点通过向主节点发送心跳的方式与主节点保持连接,主节点通过接收心跳以确定各个从节点当前的运行状态。如果主节点长时间没有接收到某个从节点的心跳,则可以判定该从节点出现故障。如果主节点长时间没有接收到全部从节点的心跳,则可以判定主节点出现故障。
98.在本公开实施例中,各个从节点在与主节点进行数据同步时会进行偏移参数的维护,该偏移参数具体可以为内存偏移量。该偏移参数可以表示主节点同步至从节点的数据范围,服务端可以由该数据范围确定从节点同步的数据是否完整。
99.服务端在确定主节点出现故障的情况下,需要从多个从节点中选择一个从节点作为新的主节点。在确定新的主节点的过程中,可以通过比较多个从节点的偏移参数,以确定各个从节点的数据完整度,并将数据完整度最高的从节点确定为新的主节点。
100.在另一些实施例中,可以通过投票的方式确定新的主节点。具体过程如下:多个从节点分别接受其他从节点的投票,并将获得投票最多的从节点确定为新的主节点。
101.这样部署主从架构进行服务端的数据更新,能够增加分布式系统对于故障的容忍度,并能够有效地提高服务端提供服务的可靠性和可用性。通过服务端将第一客户端发生更新的数据及时同步于其他客户端,以保证分布式系统的均衡负载运行。
102.具体地,可以通过以下方式进行客户端向服务端同步数据的操作:如图11所示,在一些实施例中,客户端将数据同步到服务端的内存时,客户端将数据发送给服务端,系统则认为数据同步成功。而服务端会通过一个异步线程将接收到的同步数据持久化到磁盘中。这样,将数据持久化到磁盘的操作放在异步线程中进行,可以避免持久化过程对主线程造成的阻塞问题,从而提高了数据处理速度。这样的同步方式能够提高客户端向服务端同步数据的速度。如图12所示,在另一些实施例中,客户端将数据同步到服务端的内存时,客户端将数据发送给服务端,服务端将内存中的数据持久化到磁盘中,系统才认为数据同步成功。这样的将数据从内存中持久化到磁盘中的同步确认方式,能够保证同步过程中数据不会丢失,从而保障数据同步的安全性和可靠性,进而提高分布式系统的稳定运行。
103.本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述数据处理方法。
104.上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
105.本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介
质可以是非暂态存储介质,包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
106.以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本技术中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本技术中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本技术中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个
…”
限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
107.本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
108.本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
109.附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现
规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

技术特征:
1.一种数据处理方法,其特征在于,应用于分布式系统,所述分布式系统包括服务端和多个客户端;所述数据处理方法包括:服务端在接收到数据同步请求的情况下,与发送所述数据同步请求的第一客户端建立连接,以获得所述第一客户端的注册地址;服务端根据所述第一客户端的注册地址,确定其他客户端的注册地址,所述其他客户端为多个客户端中除所述第一客户端外的客户端;服务端按照所述其他客户端的注册地址,向所述其他客户端发送数据同步指令。2.根据权利要求1所述的数据处理方法,其特征在于,在所述服务端获得所述第一客户端的注册地址之后,所述数据处理方法还包括:服务端获取存储于所述第一客户端的更新记录,所述更新记录为所述第一客户端执行数据管理操作而导致的数据更新;其中,所述数据管理操作包括:数据增加操作、数据修改操作、数据删除操作、数据查询操作之中的一个或多个。3.根据权利要求2所述的数据处理方法,其特征在于,所述服务端包括主节点和多个从节点,在所述服务端获得所述更新记录之后,所述数据处理方法还包括:服务端根据所述更新记录,更新所述主节点的内存注册表;服务端在所述主节点的内存注册表更新完成的情况下,采用异步方式更新多个从节点的内存注册表。4.根据权利要求3所述的数据处理方法,其特征在于,所述数据处理方法还包括:服务端在所述主节点的内存注册表更新失败的情况下,分别获取多个从节点的内存偏移量;将内存偏移量最大的从节点确定为新的主节点,以更新所述新的主节点的内存注册表。5.根据权利要求1所述的数据处理方法,其特征在于,所述服务端根据所述第一客户端的注册地址,确定其他客户端的注册地址,包括:服务端获得本地注册表,所述本地注册表中保存有多个客户端,以及多个客户端的注册地址;服务端根据所述本地注册表和所述第一客户端的注册地址,从多个客户端的注册地址中筛选出其他客户端的注册地址。6.一种数据处理方法,其特征在于,应用于分布式系统,所述分布式系统包括服务端和多个客户端,多个客户端包括第一客户端和其他客户端;所述数据处理方法包括:第一客户端向服务端发送数据同步请求;第一客户端在所述服务端与其建立连接的情况下,向所述服务端发送所述第一客户端的注册地址,以使所述服务端根据所述第一客户端的注册地址确定其他客户端的注册地址,并按照所述其他客户端的注册地址,向所述其他客户端发送数据同步指令。7.根据权利要求6所述的数据处理方法,其特征在于,所述第一客户端在向服务端发送数据同步请求之前,所述数据处理方法还包括:
第一客户端执行数据管理操作;第一客户端存储所述数据管理操作导致的更新记录;其中,所述数据管理操作包括:数据增加操作、数据修改操作、数据删除操作、数据查询操作之中的一个或多个。8.根据权利要求7所述的数据处理方法,其特征在于,所述第一客户端存储所述数据管理操作导致的更新记录,包括:第一客户端按照冷热链方式进行更新记录的存储。9.一种数据处理装置,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至8任一项所述的数据处理方法。10.一种分布式系统,其特征在于,包括服务端、多个客户端以及如权利要求9所述的数据处理装置。

技术总结
本申请涉及计算机技术领域,公开一种数据处理方法。该数据处理方法应用于分布式系统,分布式系统包括服务端和多个客户端;该方法包括在接收到数据同步请求的情况下,与发送数据同步请求的第一客户端建立连接,以获得第一客户端的注册地址;根据第一客户端的注册地址,确定其他客户端的注册地址,其他客户端为多个客户端中除第一客户端外的客户端;按照其他客户端的注册地址,向其他客户端发送数据同步指令。本申请的服务端能够将第一客户端发生更新的数据及时同步于其他客户端,从而有效避免分布式系统中不同客户端之间缓存数据不一致的现象,实现了分布式系统中多个客户端之间的缓存数据的及时同步。本申请还公开一种数据处理装置及分布式系统。装置及分布式系统。装置及分布式系统。


技术研发人员:夏添洋 李华刚
受保护的技术使用者:海尔优家智能科技(北京)有限公司 海尔智家股份有限公司
技术研发日:2023.05.09
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐