CN114125059B - 一种基于容器的监控实时数据缓存系统及方法 - Google Patents

一种基于容器的监控实时数据缓存系统及方法 Download PDF

Info

Publication number
CN114125059B
CN114125059B CN202111179603.9A CN202111179603A CN114125059B CN 114125059 B CN114125059 B CN 114125059B CN 202111179603 A CN202111179603 A CN 202111179603A CN 114125059 B CN114125059 B CN 114125059B
Authority
CN
China
Prior art keywords
node
cluster
data
information
container
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.)
Active
Application number
CN202111179603.9A
Other languages
English (en)
Other versions
CN114125059A (zh
Inventor
狄颖琪
陈莉莉
郝明明
胡波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nari Technology Co Ltd
Original Assignee
Nari Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nari Technology Co Ltd filed Critical Nari Technology Co Ltd
Priority to CN202111179603.9A priority Critical patent/CN114125059B/zh
Publication of CN114125059A publication Critical patent/CN114125059A/zh
Application granted granted Critical
Publication of CN114125059B publication Critical patent/CN114125059B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种基于容器的监控实时数据缓存系统及方法,该方法包括,启动系统,K8s集群预生成若干容器节点和基于docker的容器服务节点队列;Zk集群统一管理信息数据,所述信息数据包括节点元数据、路由表信息、热点数据记录信息;监听/控制节点读取Zk集群发送的数据,根据数据信息执行策略,自动生成对应的迁移任务,并向Redis集群节点、K8s集群节点下发控制命令、执行迁移任务并及时更新Zk信息;客户端模块从Zk集群获取路由表信息、热点数据记录信息,依据一定策略向各节点读写数据;Redis集群节点负责向存储节点写入缓存、定时刷新数据到磁盘。本发明解决了现有技术中实时数据缓存效率低,可靠性差的问题。

Description

一种基于容器的监控实时数据缓存系统及方法
技术领域
本发明涉及一种基于容器的监控实时数据缓存系统及方法,属于通信技术领域。
背景技术
随着自动化、信息化技术的发展,工业控制领域的数据呈几何式增长,同时对热点数据的访问呈现出频次高、时延低、可靠性强的特点。目前,业界普遍通过部署分布式缓存来提高热点数据的效率,但是,分布式缓存普遍缺少统一的管理节点元数据方式,同时缺少有效的管理集群节点的方法;另一方面,分布式缓存不能依据集群负载自动调整集群状态及数据分布。
发明内容
为解决现有技术的不足,本发明的目的在于提供一种基于容器的地铁监控实时数据缓存系统及方法,解决了现有技术中实时数据缓存效率低,可靠性差的问题。
为了实现上述目标,本发明采用如下的技术方案:
一种基于容器的监控实时数据缓存系统,包括Zk集群、监听/控制节点、迁移队列节点、客户端模块、K8s集群、Redis集群、存储节点、热点数据节点:
Zk集群,主要用于管理Redis集群信息和热点数据节点信息、;
监听/控制节点,用于接收、处理Zk集群通知的信息并依据策略自动生成对应的迁移任务,以及向Redis集群、K8s集群下发控制命令并执行迁移任务;
迁移队列节点,存储监听/控制节点生成的迁移任务信息;
客户端模块,用于缓存路由表、热点数据记录信息,依据策略读写数据;
K8s集群,用于提供若干基于docker技术生成的容器节点,并接受监听/控制节点下发的命令执行节点管理;
Redis集群,接受监听/控制节点下发的命令执行节点管理,向存储节点写入缓存;
存储节点,用于在本地部署缓存数据,并刷新数据到磁盘;
热点数据节点,用于存储关键字信息,供客户端模块读写操作。
进一步地,前述Zk集群、监听/控制节点、迁移队列节点和Redis集群由基于docker技术生成的容器节点组成。
进一步地,前述K8s集群的组成包括至少一台物理机。
进一步地,前述存储节点为物理节点。
进一步地,前述监听/控制节点部署有Zk客户端、MQ客户端、Redis客户端、监听模块和控制模块;Zk集群部署有Zk服务;迁移队列节点部署MQ消息中间件;Redis集群采用clusetr部署模式;热点数据节点部署Redis服务、Zk客户端;客户端模块部署Zk客户端、Redis客户端。
一种基于容器的监控实时数据缓存方法,包括如下步骤:
启动系统,K8s集群基于docker技术预生成若干容器节点;
Zk集群统一管理信息数据,信息数据包括热点数据节点的元数据信息、路由表信息、热点数据记录信息以及Redis集群的元数据信息、路由表信息、负载、槽负载、热点数据信息;
监听/控制节点读取Zk集群发送的数据,根据数据信息执行策略,自动生成对应的迁移任务,存储在迁移队列节点中,并向Redis集群节点、K8s集群节点下发控制命令、执行迁移任务并及时更新Zk信息;
客户端模块从Zk集群获取路由表信息、热点数据记录信息,依据一定策略向各节点读写数据;
Redis集群节点负责向存储节点写入缓存、定时刷新数据到磁盘。
进一步地,前述监听/控制节点由基于docker技术生成的容器节点组成,部署有Zk客户端、MQ客户端、Redis客户端、监听模块和控制模块;
Zk集群由基于docker技术生成的容器节点组成,部署有Zk服务;
迁移队列节点由基于docker技术生成的容器节点组成,部署MQ消息中间件;
Redis集群采用clusetr部署模式,包括基于docker技术生成的容器节点组成的容器服务节点队列KM、KS,所述KM为集群主节点,部署Redis服务、Zk客户端,所述KS为KM对应的备节点,用于同步KM数据,部署Redis服务、Agent代理;
热点数据节点包括基于docker技术生成的容器节点组成的容器服务节点队列KH,部署Redis服务、Zk客户端;
客户端模块部署Zk客户端、Redis客户端。
进一步地,前述Redis集群节点元数据和热点数据节点元数据均包括:节点唯一标识(uuid)、地址(host)、端口(port)、集群标识(cluster),角色(role)、关联备节点(rel)、节点访问频次(freq),Tspan时间内该节点访问频次(Q),状态(status);路由信息表记录Redis集群节点路由信息,包括:槽号(slots)、主机(host)、端口(port),节点槽访问频次(freqs),Tspan时间内的该节点槽访问频次(QS);热点数据记录信息包括:关键字(key)、主机(host)、端口(port)。
进一步地,前述监听/控制节点读取Zk集群发送的数据,根据数据信息执行策略,自动生成对应的迁移任务,并向Redis集群节点、K8s集群节点下发控制命令、执行迁移任务并及时更新Zk集群信息的步骤包括:
系统启动,设置时间段Tspan时间段Ttask,每隔Tspan触发监听/控制节点读取Zk集群信息,统计Qi和QiSj,Qi表示Tspan时间内KM上i节点的访问频次,QiSj表示Tspan时间内KM上i节点下j槽的访问频次;计时器每隔Ttask触发监听/控制节点统计Qi节点,并执行自动任务生成,其中Tspan<Ttask
当Qi>d2,则对QiSj做升序排列保存为q1,q2,...,qm,遍历q1,q2,...,qm中的各数据qc,统计的个数qCount,当qCount<u,则生成热点任务:从K8s获取新的容器节点服务KH,并生成新节点,若新节点中不存在该关键字,则将热点数据复制到新节点;否则生成扩容任务:从K8s获取新的容器节点服务KM、KS,使KM、KS以主备模式加入Redis集群节点,选取满足条件的槽号向量,迁移对应槽到KM节点,更新Zk集群信息,d2表示第一阈值参数,β表示调节参数,u表示第一设定值,其中,0<β<1,1≤c≤m,m为i节点下的槽数,/>表示对q1,q2,...,qm中所有数据求和,/>
当Qi<d1,若cluster=0且rel指向i节点的节点存在,则生成删除该节点任务:K8s回收该节点,修改Zk集群信息,修改热点数据记录;若cluster=0且rel指向i节点的节点不存在且Redis集群节点大于第二设定值,则生成迁移任务:将该节点上的槽数据迁移到访问频次最低的节点,删除并通过K8s回收该节点,d1表示第二阈值参数,且d1<d2
当d1≤Qi≤d2,若S2>g,则生成换算任务:换算出需要迁移的槽号及所在的节点的信息,迁移该节点下槽数据到对应的剩余节点中,g表示第三阈值参数,其中 n为集群KM个数。
进一步地,前述扩容任务中,选取满足条件的槽号向量的方法包括:
迭代计算其中1≤j≤m,当acc≥η,0<η<1,通过[q1,q2,...,qj]换算出对应的槽号向量[Sv1,...,Svj],其中Sv1表示槽号为Sv1,/>表示对q1,q2,...,qm中前j个数据进行求和。
进一步地,前述换算任务中换算出需要迁移的槽号及所在的节点的方法包括:
将KM各节点的Qi降序排列,记为p1,p2,...,pn,依次迭代计算通过[p1,p2,...,pj]换算出对应的节点序列Nv1,...,Nvj,其中1≤j≤n,当acc1≥80%,表示对p1,p2,...,pn中所有数据求和,/>表示对p1,p2,...,pn中前j个数据进行求和;
将所有槽的QiSj升序排列,记为q1,q2,...,qm,其中节点m表示Nv1,...,Nvj节点上所有槽的个数,依次迭代计算/>其中1≤s≤m,当acc2≥40%,通过[q1,q2,...,qs]换算出需要迁移的槽号及所在的节点的信息NaSt,NaSt表示a节点上的t槽号,/>表示对q1,q2,...,qm中所有数据进行求和,/>表示对q1,q2,...,qm中前s个数据进行求和。
进一步地,前述迁移该节点下槽数据到对应的剩余节点中的方法包括:
剩余节点序列记为Nk对Nk节点的Qi做升序排列,并记为L1,...,Le,迁移a节点上的槽St到主机host(a1),其中a1=L(t mod e)+1,e表示剩余节点序列Nk中节点的个数。
进一步地,前述方法还包括遍历Zk集群目录下的status节点,若Zk集群目录下的status节点已删除,则生成该节点宕机任务。
进一步地,前述客户端模块从Zk集群获取路由表信息、热点数据记录信息,依据一定策略向各节点读写数据的步骤包括:
客户端读操作,若关键字在热点数据记录表中,客户端依据均衡散列的方式依次从KH节点,KM节点读取数据,若关键字不在,计算槽号并通过路由表获取主机KM信息,从该主机读取数据;
客户端写操作,若关键字在热点数据记录表中,客户端写热点数据节点KH,同时通过路由表写集群节点KM,若关键字不在,则查询路由表写集群KM节点;
客户端实时更新KM的节点的访问频次和槽访问频次。
进一步地,前述Redis集群节点负责向存储节点写入缓存、定时刷新数据到磁盘的步骤包括:
Redis集群节点的KS节点通过代理将数据写入存储节点的本地缓存Ecache中,Ecache采用Map结构存储KV数据,Ecache数据定时刷新到磁盘中。
本发明所达到的有益效果:
1.通过Zk集群集中管理各节点的元数据、路由表、热点数据记录表信息,提高节点数据管理的效率;
2.通过K8s提供基于容器的节点,提高系统的资源分配效率,节点管理效率;
3.监听/控制节点自动生成迁移任务、下发控制执行迁移,调整集群节点的分布和数据的分布,提高了系统的高效率、高可靠性。
附图说明
图1是本发明缓存系统设计图;
图2是本发明迁移任务自动生成流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
依图1所示,构建监控系统,该系统包括客户端模块、Zk集群、监听/控制节点、迁移队列节点、K8s集群、Redis集群、存储节点和热点数据节点。
其中K8s集群的组成包括至少一台物理机,本实施例中由三台物理机组成。系统启动时K8s集群预生成若干基于docker的容器节点。监听/控制节点由基于docker技术生成的容器节点组成,部署有Zk客户端、MQ客户端、Redis客户端、监听模块和控制模块;Zk集群由基于docker技术生成的容器节点组成,部署有Zk服务;迁移队列节点由基于docker技术生成的容器节点组成,部署MQ消息中间件;Redis集群采用clusetr部署模式,包括基于docker技术生成的容器节点组成的容器服务节点队列KM、KS,所述KM为集群主节点,部署Redis服务、Zk客户端,所述KS为KM对应的备节点,用于同步KM数据,部署Redis服务、Agent代理;热点数据节点包括基于docker技术生成的容器节点组成的容器服务节点队列KH,部署Redis服务、Zk客户端。其中,Zk客户端以程序形式运行主要是与Redis服务通讯并执行相关控制操作;Redis客户端以程序形式运行,主要与Zk服务通讯并执行相关控制操作;MQ客户端以程序形式运行,主要与MQ消息中间件通讯并执行相关控制操作;Agent代理主要程序形式运行,用于将KS数据写入存储节点。
Zk集群管理热点数据节点的元数据信息、路由表信息、热点数据记录信息以及Redis集群的元数据信息、路由表信息、负载、槽负载、热点数据信息。监听/控制节点的监听模块接受Zk集群管理的Redis集群和热点数据节点信息,同时计算Redis集群节点的负载、槽负载、热点数据信息,基于上述信息处理结果自动生成对应的迁移任务,存储在迁移队列节点中;控制模块订阅迁移消息队列获取迁移任务并向Redis集群节点、K8s集群节点下发控制命令并执行迁移任务。
存储节点为物理节点,连接Redis服务并在本地部署ecache缓存,Redis集群的KS节点上部署Agent代理,Agent代理向存储节点写入数据,并刷新数据到磁盘;物理节点接受Agent代理写入的数据。
客户端模块部署Zk客户端、Redis客户端,用于缓存路由表、热点数据记录表,依据策略读写数据,同时更新节点的访问频次信息。
Redis集群,通过KS节点的Agent代理向存储节点写入数据并向Zk集群上报信息。
基于上述系统,本发明提供一种基于容器的监控实时数据缓存方法,其步骤具体如下:
步骤1:Zk集群进行数据存储结构的设计并记录相关信息。
a.系统启动时,k8s集群预生成若干基于docker技术生成的容器服务节点队列KM、KS、KH;其中KM为Redis集群主节点,KS为KM对应的备节点,KS同步KM数据,KH为热点数据节点,k8s集群同时生成并初始化监听/控制节点、Zk集群、迁移队列节点。
b.Zk集群的树形存储目录结构存储热点数据节点的元数据信息、路由表信息、热点数据记录信息以及Redis集群的元数据信息、路由表信息、负载、槽负载、热点数据信息。其中,节点(包括Redis集群节点、热点数据节点)元数据包括:节点唯一标识(uuid)、地址(host)、端口(port)、集群标识(cluster),角色(role)、关联备节点(rel)、节点访问频次(freq),Tspan时间内该节点访问频次(Q),状态(status),记为:(uuid,host,port,cluster,role,rel,freq,status,Q);路由信息表记录Redis集群节点路由信息,包括:槽号(slots)、主机(host)、端口(port),节点槽访问频次(freqs),Tspan时间内的该节点槽访问频次(QS),记为(slots,host,port,freqs,QS);热点数据记录信息包括:关键字(key)、主机(host)、端口(port),记为(key,host,port)。前述的status节点为临时节点,其他节点为永久节点。
步骤2:如图2所示,监听/控制节点执行策略,自动生成对应迁移任务。
a.系统启动时,设置时间段Tspan和时间段Ttask,每隔Tspan触发监听/控制节点读取Zk集群数据,统计KM各节点在Tspan内的访问频次Qi(i节点访问频次),各节点槽对应的访问频次QiSj(i节点j槽的访问频次),并更新Zk集群信息;计时器每隔Ttask触发监听/控制节点统计Qi,并执行自动任务生成,其中Tspan<Ttask
b.若Zk集群目录下的status节点删除,则表示节点宕机,生成节点宕机任务T(node,down)[host,port,role,rel];
c.若Qi>d2,表示i节点负载过大,其中d2为第一阈值参数。将i节点上的所有节点槽QiSj做升序排列保存为q1,q2,...,qm,其中m为i节点上的槽个数,遍历q1,q2,...,qm中的各数据qc,统计(其中β为调节参数,0<β<1,1≤c≤m,/>)的个数qCount,如果qCount<u(u为第一设定值),表示访问集中在少数槽上,生成热点任务T(hotkey,add)[host,port];如果qCount≥u,依次迭代计算/>其中1≤j≤m,当acc≥η,0<η<1,/>表示对q1,q2,...q,m中所有数据求和,/>表示对q1,q2,...q,m中前j个数据进行求和。通过[q1,q2,...,qj]换算出对应的槽号向量[Sv1,...,Svj],其中Sv1表示槽号为Sv1,并把对槽号Svj访问量迁移到新的节点副本,生成扩容任务T(node,add)[host,port,Sv1,...,Svj];
d.当Qi<d1,表示节点负载过低,其中d1为第二阈值参数,且d2>d1,从Zk集群遍历元数据信息,寻找cluster=0且rel指向i节点的节点;若存在cluster=0且rel指向i节点的节点,则生成删除节点任务T(hotkey,del)[host,port];若找不到节点cluster=0且rel指向i节点的节点,且Redis集群节点大于第二设定值(本实施例中设定值为3),取Qt=min(Q1,..,Qn),i≠n,将i节点的槽数据迁移到t节点,生成转移任务T(node,del)[host,port,tohost,toport],其中tohost、toport为t节点host、port信息;
e.当d1≤Qi≤d2,计算和方差/>其中n为集群KM个数,若S2>g,表示各节点频次访问偏差大,负载不均匀,其中g为第三阈值参数。将KM各节点的Qi降序排列,记为p1,p2,...,pn,依次迭代计算/>其中1≤j≤n,/>表示对p1,p2,...,pn中所有数据求和,/>表示对p1,p2,...,pn中前j个数据进行求和。当acc1≥80%,通过[p1,p2,...,pj]换算出对应的节点序列Nv1,...,Nvj,将所有槽的QiSj升序排列,记为q1,q2,...,qm,其中节点/>m表示Nv1,...,Nvj节点上所有槽的个数,依次迭代计算/>其中1≤s≤m,,/>表示对q1,q2,...,qm中所有数据进行求和,/>表示对q1,q2,...,qm中前s个数据进行求和。当acc2≥40%,通过[q1,q2,...,qs]换算出需要迁移的槽号及所在的节点的信息NaSt,NaSt表示a节点上的t槽号,其中/>生成换算任务T(node,transfer)[NaSt]。
步骤3:监听/控制节点执行上述自动生成的迁移任务;
a.对于T(node,down)[host,port,role,rel],若role的状态为master,此时rel节点状态上升为master,从K8s获取新的容器节点服务KS,登录KS节点执行命令使KS成为rel节点的slave节点,并更新相应的Zk集群信息;若role的状态为slave,则从K8s获取新的容器节点服务KS,登录KM节点执行命令使KS成为host节点新的slave节点,并更新相应Zk集群信息。
b.对于T(node,add)[host,port,Sv1,...,Svj],从K8s获取新的容器节点服务KM、KS,登录host节点执行命令使KM、KS以主备模式(其中KM为主,KS为备)加入集群节点,迁移host节点上的槽Sv1,...,Svj到KM节点,更新Zk集群信息。
c.对于T(hotkey,add)[host,port],从K8s获取新的容器节点服务KH,统计host节点上的热点数据向量hotkey=[k1,k2,...kn],并生成T(hotkey,dwrite)(s,sport,host,port,hotkey),s为新节点的主机信息,sport为新生成节点的端口,同时更新Zk集群信息。
d.对于T(hotkey,dwrite)(s,sport,host,port,hotkeys),更新Zk集群热点数据记录信息,设置s节点的元数据的cluster为0,rel指向host节点,从host主机迁移复制hotkey数据到s节点,如果发现key在s节点中已存在,则丢弃,否则写入S节点。
e.对于T(hotkey,del)[host,port],K8s回收host节点,修改Zk集群信息,修改热点数据记录。
f.对于T(node,del)[host,port,tohost,toport],从host节点迁移所有QS到tohost节点,登录host节点从集群中删除host及其备节点,K8s回收host及其备节点,更新Zk集群信息。
g.对于T(node,transfer)[NaSt],假定剩余节点序列Nk对Nk节点依据Qi做升序排列,并记为L1,...,Le。迁移a节点上的槽St到主机host(a1),a1=L(t mod e)+1,并更新Zk集群,e表示剩余节点序列Nk中节点的个数。
步骤4:客户端读写上述任务执行完毕后各节点数据。
客户端读操作,若关键字在热点数据记录表中,客户端依据均衡散列的方式依次从KH节点,KM节点读取数据,若关键字不在,计算槽号并通过路由表获取主机KM信息,从该主机读取数据。客户端实时更新KM的节点的访问频次和槽访问频次;
客户端写操作,若关键字在热点数据记录表中,客户端写热点数据节点KH,同时通过路由表写集群节点KM,若关键字不在,则查询路由表写集群KM节点。客户端实时更新KM的节点的访问频次和槽访问频次。
步骤5:存储节点接收KS节点写入
Redis集群节点的KS节点通过Agent代理将数据写入本地缓存Ecache中,Ecache采用Map结构存储KV数据,Ecache数据定时刷新到磁盘中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (13)

1.一种基于容器的监控实时数据缓存方法,其特征在于,包括如下步骤:
启动系统,K8s集群基于docker技术预生成若干容器节点;
Zk集群统一管理信息数据,所述信息数据包括热点数据节点的元数据信息、热点数据记录信息以及Redis集群的元数据信息、路由表信息、负载、槽负载、热点数据信息;
监听/控制节点读取Zk集群发送的数据,根据数据信息执行策略,自动生成对应的迁移任务,存储在迁移队列节点中,并向Redis集群节点、K8s集群节点下发控制命令、执行迁移任务并及时更新Zk集群信息:
系统启动,设置时间段Tspan、时间段Ttask,每隔Tspan触发监听/控制节点读取Zk集群信息,统计Qi和QiSj,所述Qi表示Tspan时间内KM上i节点的访问频次,所述KM为集群主节点,所述QiSj表示Tspan时间内KM上i节点下j槽的访问频次;计时器每隔Ttask触发监听/控制节点统计Qi节点,并执行自动任务生成,其中Tspan<Ttask
当Qi>d2,则对QiSj做升序排列保存为q1,q2,...,qm,遍历q1,q2,...,qm中的各数据qc,统计的个数qCount,当qCount<u,则生成热点任务:从K8s获取新的容器节点服务队列KH,并生成新节点,所述KH为热点数据节点中基于docker技术生成的容器节点组成的容器服务节点队列,若新节点中不存在关键字,所述关键字记录在热点数据记录信息中,则将热点数据复制到新节点;否则生成扩容任务:从K8s获取新的容器节点服务KM、KS,使KM、KS以主备模式加入Redis集群节点,选取满足条件的槽号向量,迁移对应槽到KM节点,更新Zk集群信息,所述KS为KM对应的备节点,所述d2表示第一阈值参数,β表示调节参数,u表示第一设定值,其中,0<β<1,1≤c≤m,m为i节点下的槽数,/>表示对q1,q2,...,qm中所有数据求和,/>
当Qi<d1,若cluster=0且rel指向i节点的节点存在,则生成删除该节点任务:K8s回收该节点,修改Zk集群信息,修改热点数据记录;若cluster=0且rel指向i节点的节点不存在且Redis集群节点大于第二设定值,则生成迁移任务:将该节点上的槽数据迁移到访问频次最低的节点,删除并通过K8s回收该节点,所述d1表示第二阈值参数,且d1<d2
当d1≤Qi≤d2,若S2>g,则生成换算任务:换算出需要迁移的槽号及所在的节点的信息,迁移该节点下槽数据到对应的剩余节点中,所述g表示第三阈值参数,其中n为集群KM个数;
客户端模块从Zk集群获取路由表信息、热点数据记录信息,依据一定策略向各节点读写数据:
客户端读操作,若关键字在热点数据记录表中,客户端依据均衡散列的方式依次从KH节点,KM节点读取数据,若关键字不在,计算槽号并通过路由表获取主机KM信息,从该主机读取数据,
客户端写操作,若关键字在热点数据记录表中,客户端写热点数据节点KH,同时通过路由表写集群节点KM,若关键字不在,则查询路由表写集群KM节点,
客户端实时更新KM的节点的访问频次和槽访问频次;
Redis集群节点负责向存储节点写入缓存、定时刷新数据到磁盘。
2.根据权利要求1所述的一种基于容器的监控实时数据缓存方法,其特征在于,所述监听/控制节点由基于docker技术生成的容器节点组成,部署有Zk客户端、MQ客户端、Redis客户端、监听模块和控制模块;
所述Zk集群由基于docker技术生成的容器节点组成,部署有Zk服务;
所述迁移队列节点由基于docker技术生成的容器节点组成,部署MQ消息中间件;
所述Redis集群采用clusetr部署模式,包括基于docker技术生成的容器节点组成的容器服务节点队列KM、KS,所述KM为集群主节点,部署Redis服务、Zk客户端,所述KS为KM对应的备节点,用于同步KM数据,部署Redis服务、Agent代理;
所述热点数据节点包括基于docker技术生成的容器节点组成的容器服务节点队列KH,部署Redis服务、Zk客户端;
客户端模块部署Zk客户端、Redis客户端。
3.根据权利要求1或2所述的一种基于容器的监控实时数据缓存方法,其特征在于,所述Redis集群节点元数据和热点数据节点元数据均包括:节点唯一标识(uuid)、地址(host)、端口(port)、集群标识(cluster),角色(role)、关联备节点(rel)、节点访问频次(freq),Tspan时间内该节点访问频次(Q),状态(status);路由信息表记录Redis集群节点路由信息,包括:槽号(slots)、主机(host)、端口(port),节点槽访问频次(freqs),Tspan时间内的该节点槽访问频次(QS);热点数据记录信息包括:关键字(key)、主机(host)、端口(port)。
4.根据权利要求1所述的一种基于容器的监控实时数据缓存方法,其特征在于,所述扩容任务中,选取满足条件的槽号向量的方法包括:迭代计算其中1≤j≤m,当acc≥η,0<η<1,通过[q1,q2,...,qj]换算出对应的槽号向量[Sv1,...,Svj],其中Sv1表示槽号为Sv1,/>表示对q1,q2,...,qm中前j个数据进行求和。
5.根据权利要求1所述的一种基于容器的监控实时数据缓存方法,其特征在于,所述换算任务中换算出需要迁移的槽号及所在的节点的方法包括:
将KM各节点的Qi降序排列,记为p1,p2,...,pn,依次迭代计算通过[p1,p2,...,pj]换算出对应的节点序列Nv1,...,Nvj,其中1≤j≤n,当acc1≥80%,/>表示对p1,p2,...,pn中所有数据求和,/>表示对p1,p2,...,pn中前j个数据进行求和;
将所有槽的QiSj升序排列,记为q1,q2,...,qm,其中节点m表示Nv1,...,Nvj节点上所有槽的个数,依次迭代计算/>其中1≤s≤m,当acc2≥40%,通过[q1,q2,...,qs]换算出需要迁移的槽号及所在的节点的信息NaSt,NaSt表示a节点上的t槽号,/>表示对q1,q2,...,qm中所有数据进行求和,/>表示对q1,q2,...,qm中前s个数据进行求和。
6.根据权利要求5所述的一种基于容器的监控实时数据缓存方法,其特征在于,所述迁移该节点下槽数据到对应的剩余节点中的方法包括:
剩余节点序列记为Nk对Nk节点的Qi做升序排列,并记为L1,...,Le,迁移a节点上的槽St到主机host(a1),其中a1=L(t mod e)+1,e表示剩余节点序列Nk中节点的个数。
7.根据权利要求1所述的一种基于容器的监控实时数据缓存方法,其特征在于,还包括遍历Zk集群目录下的status节点,若Zk集群目录下的status节点已删除,则生成该节点宕机任务。
8.根据权利要求1所述的一种基于容器的监控实时数据缓存方法,其特征在于,Redis集群节点负责向存储节点写入缓存、定时刷新数据到磁盘的步骤包括:
Redis集群节点的KS节点通过代理将数据写入存储节点的本地缓存Ecache中,所述Ecache采用Map结构存储KV数据,所述Ecache数据定时刷新到磁盘中。
9.一种基于容器的监控实时数据缓存系统,其特征在于,执行如权利要求1-8任一项所述的一种基于容器的监控实时数据缓存方法,包括Zk集群、监听/控制节点、迁移队列节点、客户端模块、K8s集群、Redis集群、存储节点、热点数据节点:
Zk集群,主要用于管理Redis集群信息和热点数据节点信息;
监听/控制节点,用于接收、处理Zk集群通知的信息并依据策略自动生成对应的迁移任务,以及向Redis集群、K8s集群下发控制命令并执行迁移任务;
迁移队列节点,存储监听/控制节点生成的迁移任务信息;
客户端模块,用于缓存路由表、热点数据记录信息,依据策略读写数据;
K8s集群,用于提供若干基于docker技术生成的容器节点,并接受监听/控制节点下发的命令执行节点管理;
Redis集群,接受监听/控制节点下发的命令执行节点管理,向存储节点写入缓存;
存储节点,用于在本地部署缓存数据,并刷新数据到磁盘;
热点数据节点,用于存储关键字信息,供客户端模块读写操作。
10.根据权利要求9所述的一种基于容器的监控实时数据缓存系统,其特征在于,所述Zk集群、监听/控制节点、迁移队列节点和Redis集群由基于docker技术生成的容器节点组成。
11.根据权利要求9所述的一种基于容器的监控实时数据缓存系统,其特征在于,所述K8s集群的组成包括至少一台物理机。
12.根据权利要求9所述的一种基于容器的监控实时数据缓存系统,其特征在于,所述存储节点为物理节点。
13.根据权利要求9所述的一种基于容器的监控实时数据缓存系统,其特征在于,所述监听/控制节点部署有Zk客户端、MQ客户端、Redis客户端、监听模块和控制模块;所述Zk集群部署有Zk服务;所述迁移队列节点部署MQ消息中间件;所述Redis集群采用clusetr部署模式;所述热点数据节点部署Redis服务、Zk客户端;所述客户端模块部署Zk客户端、Redis客户端。
CN202111179603.9A 2021-10-11 2021-10-11 一种基于容器的监控实时数据缓存系统及方法 Active CN114125059B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111179603.9A CN114125059B (zh) 2021-10-11 2021-10-11 一种基于容器的监控实时数据缓存系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111179603.9A CN114125059B (zh) 2021-10-11 2021-10-11 一种基于容器的监控实时数据缓存系统及方法

Publications (2)

Publication Number Publication Date
CN114125059A CN114125059A (zh) 2022-03-01
CN114125059B true CN114125059B (zh) 2023-08-25

Family

ID=80441542

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111179603.9A Active CN114125059B (zh) 2021-10-11 2021-10-11 一种基于容器的监控实时数据缓存系统及方法

Country Status (1)

Country Link
CN (1) CN114125059B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105357296A (zh) * 2015-10-30 2016-02-24 河海大学 一种Docker云平台下弹性缓存系统
CN106357449A (zh) * 2016-09-27 2017-01-25 深圳市彬讯科技有限公司 一种zedis分布式缓存方法
WO2018177042A1 (zh) * 2017-03-27 2018-10-04 中兴通讯股份有限公司 一种实现资源调度的方法及装置
CN108833503A (zh) * 2018-05-29 2018-11-16 华南理工大学 一种基于ZooKeeper的Redis集群方法
CN110489205A (zh) * 2019-07-01 2019-11-22 广东轩辕网络科技股份有限公司 一种基于容器集群的教育服务架构系统
CN111277460A (zh) * 2020-01-17 2020-06-12 江苏满运软件科技有限公司 一种ZooKeeper容器化控制的方法、装置、存储介质及电子设备
CN112231319A (zh) * 2020-10-15 2021-01-15 国电南瑞科技股份有限公司 一种地铁监控系统的实时数据存储和查询系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3304285A1 (en) * 2015-06-03 2018-04-11 Telefonaktiebolaget LM Ericsson (publ) Implanted agent within a first service container for enabling a reverse proxy on a second container

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105357296A (zh) * 2015-10-30 2016-02-24 河海大学 一种Docker云平台下弹性缓存系统
CN106357449A (zh) * 2016-09-27 2017-01-25 深圳市彬讯科技有限公司 一种zedis分布式缓存方法
WO2018177042A1 (zh) * 2017-03-27 2018-10-04 中兴通讯股份有限公司 一种实现资源调度的方法及装置
CN108833503A (zh) * 2018-05-29 2018-11-16 华南理工大学 一种基于ZooKeeper的Redis集群方法
CN110489205A (zh) * 2019-07-01 2019-11-22 广东轩辕网络科技股份有限公司 一种基于容器集群的教育服务架构系统
CN111277460A (zh) * 2020-01-17 2020-06-12 江苏满运软件科技有限公司 一种ZooKeeper容器化控制的方法、装置、存储介质及电子设备
CN112231319A (zh) * 2020-10-15 2021-01-15 国电南瑞科技股份有限公司 一种地铁监控系统的实时数据存储和查询系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于容器技术的管控融合一体化系统";赵昱;《中国优秀硕士学位论文全文数据库信息科技辑》;全文 *

Also Published As

Publication number Publication date
CN114125059A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US11755415B2 (en) Variable data replication for storage implementing data backup
US10437721B2 (en) Efficient garbage collection for a log-structured data store
US20230012697A1 (en) Methods, devices and systems for maintaining consistency of metadata and data across data centers
US11468015B2 (en) Storage and synchronization of metadata in a distributed storage system
US9396202B1 (en) Weakly synchronized garbage collection and compaction for aggregated, replicated object stores
US7257690B1 (en) Log-structured temporal shadow store
CA2906511C (en) Fast crash recovery for distributed database systems
US8271455B2 (en) Storing replication requests for objects in a distributed storage system
CN103458044B (zh) 一种面向广域网环境下多存储集群的元数据共享管理方法
CN104965850B (zh) 一种基于开源技术的数据库高可用实现方法
CA2907086A1 (en) System-wide checkpoint avoidance for distributed database systems
JP2016511486A (ja) データベースエンジンを備えたデータベースシステム及び別個の分散型ストレージサービス
JP2016511498A (ja) インプレーススナップショット
CN104731864A (zh) 一种海量非结构化数据的数据存储方法
CN107798130A (zh) 一种分布式存储的快照方法
US10803012B1 (en) Variable data replication for storage systems implementing quorum-based durability schemes
US10862736B2 (en) Object counts persistence for object stores
CN109639773A (zh) 一种动态构建的分布式数据集群控制系统及其方法
CN114125059B (zh) 一种基于容器的监控实时数据缓存系统及方法
CN112084156A (zh) 混合存储系统及文件的自适应备份方法
Singh et al. A replica placement and replacement algorithm for data-grid in DRTDBS
CN117311992A (zh) 基于既定资源预测并自动动态平衡集群内部资源的方法
CN110019092A (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