CN115562849A - 一种基于高可用的缓存数据方法及*** - Google Patents
一种基于高可用的缓存数据方法及*** Download PDFInfo
- Publication number
- CN115562849A CN115562849A CN202211061534.6A CN202211061534A CN115562849A CN 115562849 A CN115562849 A CN 115562849A CN 202211061534 A CN202211061534 A CN 202211061534A CN 115562849 A CN115562849 A CN 115562849A
- Authority
- CN
- China
- Prior art keywords
- sentinel
- cache
- node
- nodes
- data
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于高可用的缓存数据方法及***,属于分布式业务应用领域;所述的方法具体步骤如下:S1对通过Redis缓存的数据进行集中存储;S2将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享;本发明方法具备分布式缓存的能力,避免因为每个缓存服务器的缓存内容都是独立的,即使切换到新的缓存节点也需要重建缓存,重新从后端服务器缓存数据时,增加后端服务器的性能消耗等问题。
Description
技术领域
本发明公开一种基于高可用的缓存数据方法及***,涉及分布式业务应用技术领域。
背景技术
当不含缓存服务器的web服务遇到大并发情况时,将导致http访问和http响应均中断,web服务器宕机,用户无法获得服务。在没有任何缓存服务器的情况下,web服务在应对大并发情况下很难做到高可用。
目前的缓存服务,都不具备分布式缓存的能力,单个缓存服务器的并发很难达到百万级别的并发量,单个区域受到超负荷并发后容易出现503服务器错误响应。因为每个缓存服务器的缓存内容都是独立的,即使切换到新的缓存节点也需要重建缓存,再重新从后端服务器缓存数据的时候,这增加了后端服务器的性能消耗,为高可用埋下了隐患。
针对上述出现的情况,提出一种可有效解决上述问题的高可用分布式web缓存***和方法。
故现发明一种基于高可用缓存数据方法及***,以解决上述问题。
发明内容
本发明针对现有技术的问题,提供一种基于高可用的缓存数据方法及***,所采用的技术方案为:一种基于高可用的缓存数据方法,所述的方法具体步骤如下:
S1对通过Redis缓存的数据进行集中存储;
S2将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享。
所述S2的具体步骤如下:
S21定义主从模式;
S22定义哨兵集群;
S23定义哨兵节点及主从缓存节点的交互关系。
所述S21定义主从模式:主缓存节点负责存储缓存数据,并将缓存数据复制到其它的从缓存节点,
所述S22定义哨兵集群:哨兵负责监控Redis主节点和从节点进程是否正常工作;
所述哨兵集群包括哨兵节点和数据节点;
所述哨兵节点:哨兵***由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据;
所述数据节点:包括主节点和从节点。
所述S23定义哨兵节点及主从缓存节点的交互关系的具体步骤如下:
S231每个哨兵节点以相同频率向其所有的主缓存节点、从缓存节点以及其他哨兵实例发送PING命令;
S232哨兵将最后一次有效回复PING命令的实例标记为主观下线;
S233对于被标记为主观下线的主缓存节点,监视其的所有哨兵节点以相同频率确认该主缓存节点是否的确进入了主观下线状态;
S234对于被标记为主观下线的主服务器,在有足够有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线。
一种基于高可用的缓存数据***,所述的***具体包括数据储存模块和缓存设置模块:
数据储存模块:对通过Redis缓存的数据进行集中存储;
缓存设置模块:将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享。
所述缓存设置模块具体包括模式设置模块、集群设置模块和节点设置模块:
模式设置模块:定义主从模式;
集群设置模块:定义哨兵集群;
节点设置模块:定义哨兵节点及主从缓存节点的交互关系。
所述模式设置模块定义主从模式,主缓存节点负责存储缓存数据,并将缓存数据复制到其它的从缓存节点,
所述集群设置模块定义哨兵集群,哨兵负责监控Redis主节点和从节点进程是否正常工作;
所述哨兵集群包括哨兵节点和数据节点;
所述哨兵节点:哨兵***由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据;
所述数据节点:包括主节点和从节点。
所述节点设置模块具体包括命令下发模块、实例标记模块、节点标记模块、服务器标记模块:
命令下发模块:每个哨兵节点以相同频率向其所有的主缓存节点、从缓存节点以及其他哨兵实例发送PING命令;
实例标记模块:哨兵将最后一次有效回复PING命令的实例标记为主观下线;
节点标记模块:对于被标记为主观下线的主缓存节点,监视其的所有哨兵节点以相同频率确认该主缓存节点是否的确进入了主观下线状态;
服务器标记模块:对于被标记为主观下线的主服务器,在有足够有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线。
本发明的有益效果为:本发明方法中缓存数据采用主从服务器同步共享形式存储,所有缓存节点都能知道任意缓存存放的数据,使得缓存集群内所有主缓存节点同时提供服务,而现有Squid方案因不具备在一台服务器上的缓存内容迁移到其他服务器上去,导致备用服务器不能同时提供相同的缓存内容服务,一旦主服务器宕机,备用服务器必须重建缓存内容,会导致大量回源请求,给本身和源服务器造成巨大压力;
哨兵节点之间互相通信自动感知新增或移除缓存节点,当主缓存节点移除之后,能迅速选举产生新的主缓存节点,并重新计算分配迁移内容分块,让缓存集群内的缓存节点总是保存均衡负载,并能保持高可用,自动感知缓存节点并复制数据,让缓存集群保持易于水平扩展,高可用状态。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法实施例的主从模式定义过意图;图2是本发明方法实施例的哨兵集群定义示意图;图3是本发明方法实施例的哨兵节点和缓存节点交互示意图;图4是本发明实施例的Redis集群效果图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
实施例一:
一种基于高可用的缓存数据方法,所述的方法具体步骤如下:
S1对通过Redis缓存的数据进行集中存储;
S2将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享;
Redis是一个key-value存储***;Redis提供了一些丰富的数据结构,包括string(字符串)、list(链表)、set(集合)、sorted set(有序集合)和hash(哈希类型);这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的;在此基础上,redis支持各种不同方式的排序;与memcached一样,为了保证效率,数据都是缓存在内存中;
由于redis是内存型的非关系型数据库,天然支持高并发,缓存数据的存取会非常高效;
单机的Redis,能够承载的并发量大概就在几万左右;由于要保证各个缓存服务的数据共享,因此将架构做成主从架构,一主多从加哨兵模式;
本发明方法具备分布式缓存的能力,避免因为每个缓存服务器的缓存内容都是独立的,即使切换到新的缓存节点也需要重建缓存,重新从后端服务器缓存数据时,增加后端服务器的性能消耗等问题;
进一步的,所述S2的具体步骤如下:
S21定义主从模式;
S22定义哨兵集群;
S23定义哨兵节点及主从缓存节点的交互关系;
进一步的,所述S21定义主从模式:主缓存节点负责存储缓存数据,并将缓存数据复制到其它的从缓存节点,而从缓存节点负责读取缓存数据;
如图1所示,Master为主缓存节点,slave为从缓存节点;数据的复制是单向的,只能由主节点到从节点;一旦主缓存节点宕机,会有从缓存节点代替成为新的主缓存节点,并且缓存数据是一致的,丝毫不会影响客户端的访问;
当主缓存节点服务宕机时,从缓存节点会通过选举产生新的主缓存节点,从而保证服务的高可用性;只有读写分离的架构,才能很轻松实现水平扩容,支撑高并发的请求;
主从模式,当主缓存节点宕机之后,从缓存节点是可以作为主缓存节点顶上来,继续提供服务的;但是有一个问题,主缓存节点的IP已经变动了,此时应用服务还是拿着原主缓存节点的地址去访问,就会导致无法获取缓存数据,这个时候哨兵模式起到关键性作用,哨兵实现了自动化的故障恢复;
在复制的基础上,哨兵实现了自动化的故障恢复,如图2所示,
进一步的,所述S22定义哨兵集群:哨兵负责监控Redis主节点和从节点进程是否正常工作;
所述哨兵集群包括哨兵节点和数据节点;
所述哨兵节点:哨兵***由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据;
所述数据节点:包括主节点和从节点;
访问redis集群的数据都是通过哨兵集群的,哨兵监控整个redis集群;
当某个节点宕机,哨兵负责发送消息通知给管理员,并自动转移到从节点上;如果发生故障转移,主节点地址变了,这时候应用服务是无感知的,也不用更改访问地址,因为哨兵才是和应用服务做交互的;哨兵模式很好的解决了故障转移,在高可用方面又上升了一个新台阶;
再进一步的,所述S23定义哨兵节点及主从缓存节点的交互关系的具体步骤如下:
S231每个哨兵节点以相同频率向其所有的主缓存节点、从缓存节点以及其他哨兵实例发送PING命令;
S232哨兵将最后一次有效回复PING命令的实例标记为主观下线;
S233对于被标记为主观下线的主缓存节点,监视其的所有哨兵节点以相同频率确认该主缓存节点是否的确进入了主观下线状态;
S234对于被标记为主观下线的主服务器,在有足够有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线;
如图3所示,每个哨兵节点以每秒钟一次的频率,向它所有的主缓存节点、从缓存节点以及其他哨兵实例发送一个PING命令;如果一个实例(instance)距离最后一次有效回复PING命令的时间超过一定时间,那么这个实例会被哨兵标记为主观下线;
如果一个主缓存节点被标记为主观下线,那么正在监视这个主缓存节点的所有哨兵节点,要以每秒一次的频率确认该主缓存节点是否的确进入了主观下线状态;
如果一个主服务器被标记为主观下线,并且有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线;
哨兵和其他哨兵节点协商主缓存节点的状态,如果主缓存节点处于宕机状态,则投票自动选出新的主缓存节点;将剩余的从缓存节点指向新的主缓存节点进行缓存数据复制;当没有足够数量的哨兵节点同意主缓存节点下线时,主缓存节点的客观下线状态就会被移除;当主缓存节点重新向哨兵节点的PING命令返回有效回复时,主缓存节点的主观下线状态就会被移除。
实施例二:
一种基于高可用的缓存数据***,所述的***具体包括数据储存模块和缓存设置模块:
数据储存模块:对通过Redis缓存的数据进行集中存储;
缓存设置模块:将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享;
进一步的,所述缓存设置模块具体包括模式设置模块、集群设置模块和节点设置模块:
模式设置模块:定义主从模式;
集群设置模块:定义哨兵集群;
节点设置模块:定义哨兵节点及主从缓存节点的交互关系;
进一步的,所述模式设置模块定义主从模式,主缓存节点负责存储缓存数据,并将缓存数据复制到其它的从缓存节点,
进一步的,所述集群设置模块定义哨兵集群,哨兵负责监控Redis主节点和从节点进程是否正常工作;
所述哨兵集群包括哨兵节点和数据节点;
所述哨兵节点:哨兵***由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据;
所述数据节点:包括主节点和从节点;
再进一步的,所述节点设置模块具体包括命令下发模块、实例标记模块、节点标记模块、服务器标记模块:
命令下发模块:每个哨兵节点以相同频率向其所有的主缓存节点、从缓存节点以及其他哨兵实例发送PING命令;
实例标记模块:哨兵将最后一次有效回复PING命令的实例标记为主观下线;
节点标记模块:对于被标记为主观下线的主缓存节点,监视其的所有哨兵节点以相同频率确认该主缓存节点是否的确进入了主观下线状态;
服务器标记模块:对于被标记为主观下线的主服务器,在有足够有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线;
用户访问时自动调用数据缓存机制,并向缓存集群发送需求数据请求;缓存集群主缓存节点从web服务器获取需求数据并储存;主缓存节点把数据同步到从缓存节点,通过key-map方式储存;当遇到用户访问并发量过大时,从缓存节点自动识别新增缓存节点建立通讯连接;多个缓存节点提供缓存查询功能,达到所有从节点负载均衡。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于高可用的缓存数据方法,其特征是所述的方法具体步骤如下:
S1对通过Redis缓存的数据进行集中存储;
S2将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享。
2.根据权利要求1所述的方法,其特征是所述S2的具体步骤如下:
S21定义主从模式;
S22定义哨兵集群;
S23定义哨兵节点及主从缓存节点的交互关系。
3.根据权利要求2所述的方法,其特征是所述S21定义主从模式:主缓存节点负责存储缓存数据,并将缓存数据复制到其它的从缓存节点。
4.根据权利要求2所述的方法,其特征是所述S22定义哨兵集群:哨兵负责监控Redis主节点和从节点进程是否正常工作;
所述哨兵集群包括哨兵节点和数据节点;
所述哨兵节点:哨兵***由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据;
所述数据节点:包括主节点和从节点。
5.根据权利要求2所述的方法,其特征是所述S23定义哨兵节点及主从缓存节点的交互关系的具体步骤如下:
S231每个哨兵节点以相同频率向其所有的主缓存节点、从缓存节点以及其他哨兵实例发送PING命令;
S232哨兵将最后一次有效回复PING命令的实例标记为主观下线;
S233对于被标记为主观下线的主缓存节点,监视其的所有哨兵节点以相同频率确认该主缓存节点是否的确进入了主观下线状态;
S234对于被标记为主观下线的主服务器,在有足够有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线。
6.一种基于高可用的缓存数据***,其特征是所述的***具体包括数据储存模块和缓存设置模块:
数据储存模块:对通过Redis缓存的数据进行集中存储;
缓存设置模块:将Redis架构设置为一主多从加哨兵模式,使缓存节点上的数据其他缓存节点同步、分享。
7.根据权利要求6所述的***,其特征是所述缓存设置模块具体包括模式设置模块、集群设置模块和节点设置模块:
模式设置模块:定义主从模式;
集群设置模块:定义哨兵集群;
节点设置模块:定义哨兵节点及主从缓存节点的交互关系。
8.根据权利要求7所述的***,其特征是所述模式设置模块定义主从模式,主缓存节点负责存储缓存数据,并将缓存数据复制到其它的从缓存节点。
9.根据权利要求7所述的***,其特征是所述集群设置模块定义哨兵集群,哨兵负责监控Redis主节点和从节点进程是否正常工作;
所述哨兵集群包括哨兵节点和数据节点;
所述哨兵节点:哨兵***由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据;
所述数据节点:包括主节点和从节点。
10.根据权利要求7所述的***,其特征是所述节点设置模块具体包括命令下发模块、实例标记模块、节点标记模块、服务器标记模块:
命令下发模块:每个哨兵节点以相同频率向其所有的主缓存节点、从缓存节点以及其他哨兵实例发送PING命令;
实例标记模块:哨兵将最后一次有效回复PING命令的实例标记为主观下线;
节点标记模块:对于被标记为主观下线的主缓存节点,监视其的所有哨兵节点以相同频率确认该主缓存节点是否的确进入了主观下线状态;
服务器标记模块:对于被标记为主观下线的主服务器,在有足够有足够数量的哨兵在指定的时间范围内同意这一判断,那么这个该主缓存节点被标记为客观下线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211061534.6A CN115562849A (zh) | 2022-09-01 | 2022-09-01 | 一种基于高可用的缓存数据方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211061534.6A CN115562849A (zh) | 2022-09-01 | 2022-09-01 | 一种基于高可用的缓存数据方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115562849A true CN115562849A (zh) | 2023-01-03 |
Family
ID=84739511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211061534.6A Pending CN115562849A (zh) | 2022-09-01 | 2022-09-01 | 一种基于高可用的缓存数据方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115562849A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117762646A (zh) * | 2024-02-22 | 2024-03-26 | 南瑞轨道交通技术有限公司 | 一种基于集群式共享缓存的数字量处理方法和*** |
-
2022
- 2022-09-01 CN CN202211061534.6A patent/CN115562849A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117762646A (zh) * | 2024-02-22 | 2024-03-26 | 南瑞轨道交通技术有限公司 | 一种基于集群式共享缓存的数字量处理方法和*** |
CN117762646B (zh) * | 2024-02-22 | 2024-05-14 | 南瑞轨道交通技术有限公司 | 一种基于集群式共享缓存的数字量处理方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729129B (zh) | 存储集群***的配置修改方法、存储集群及计算机*** | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
EP2498476B1 (en) | Massively scalable object storage system | |
CN102053982B (zh) | 一种数据库信息管理方法和设备 | |
EP2501108B1 (en) | Massively scalable object storage system | |
CN103458044B (zh) | 一种面向广域网环境下多存储集群的元数据共享管理方法 | |
US20090144338A1 (en) | Asynchronously replicated database system using dynamic mastership | |
CN108183961A (zh) | 一种基于Redis的分布式缓存方法 | |
US20070061379A1 (en) | Method and apparatus for sequencing transactions globally in a distributed database cluster | |
US20090144220A1 (en) | System for storing distributed hashtables | |
Dustdar et al. | Dynamic replication and synchronization of web services for high availability in mobile ad-hoc networks | |
CN115562849A (zh) | 一种基于高可用的缓存数据方法及*** | |
CN111913837A (zh) | 大数据环境下实现分布式中间件消息恢复策略管理的*** | |
CN114363350A (zh) | 一种服务治理***及方法 | |
CN107180034A (zh) | MySQL数据库的集群*** | |
US20090144333A1 (en) | System for maintaining a database | |
CN105007172A (zh) | 一种hdfs高可用性方案的实现方法 | |
CN117271583A (zh) | 优化大数据查询的***及方法 | |
CN111459416B (zh) | 一种基于分布式存储的热迁移***及其迁移方法 | |
CN102594874A (zh) | 一种同步处理方法和装置 | |
CN116389233B (zh) | 容器云管理平台主备切换***、方法、装置和计算机设备 | |
CN111800516A (zh) | 一种基于p2p的物联网设备管理方法及装置 | |
CN109218386B (zh) | 一种管理Hadoop命名空间的高可用方法 | |
CN111400110B (zh) | 数据库访问管理*** | |
CN104601693A (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 |