CN114780569B - 一种拟态redis数据库的输入输出代理方法和装置 - Google Patents

一种拟态redis数据库的输入输出代理方法和装置 Download PDF

Info

Publication number
CN114780569B
CN114780569B CN202210708862.4A CN202210708862A CN114780569B CN 114780569 B CN114780569 B CN 114780569B CN 202210708862 A CN202210708862 A CN 202210708862A CN 114780569 B CN114780569 B CN 114780569B
Authority
CN
China
Prior art keywords
database
mimicry
pseudo server
redis
server module
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
CN202210708862.4A
Other languages
English (en)
Other versions
CN114780569A (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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202210708862.4A priority Critical patent/CN114780569B/zh
Publication of CN114780569A publication Critical patent/CN114780569A/zh
Priority to PCT/CN2022/116169 priority patent/WO2023093184A1/zh
Application granted granted Critical
Publication of CN114780569B publication Critical patent/CN114780569B/zh
Priority to US17/981,368 priority patent/US11860893B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种拟态redis数据库的输入输出代理方法和装置,通过伪服务器模块保证跟原生redis的对外接口一致,从而便于移植到任意redis应用场景中;通过独立的进程实现内部各个模块的隔离,方便独立开发、维护和扩展;并且将同步功能集成到输入输出代理当中,从而实现资源复用;针对同步功能,巧妙利用随机信用衰减机制,可以保证同步功能进行的同时兼顾资源的节省。

Description

一种拟态redis数据库的输入输出代理方法和装置
技术领域
本发明涉及内生安全数据库技术领域,特别涉及一种拟态redis数据库的输入输出代理方法和装置。
背景技术
当前远程字典服务(redis)数据库技术广泛应用在众多领域当中,例如网络操作***SONiC就是基于redis数据库构建起来,但当前对redis数据库的应用往往是基于已有的开源项目,数据库的安全性难以保证,针对未知风险的抵御能力也存在欠缺。
发明内容
本发明的目的在于提供一种拟态redis数据库的输入输出代理方法和装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
作为优选,本发明公开了一种拟态redis数据库的输入输出代理方法,包括拟态redis数据库、拟态输入输出代理容器和裁决器,所述拟态redis数据库中包括至少三个运行有redis服务器进程的数据库容器;所述拟态输入输出代理容器中包括一个伪服务器模块、一个裁决器交互模块和不少于三个数据库交互模块;所述裁决器交互模块与裁决器相连接;所述数据库交互模块与数据库容器相连接;所述方法具体包括如下步骤:
S1、初始化阶段:所述伪服务器模块、裁决器交互模块和数据库交互模块作为独立进程运行,所述伪服务器模块与裁决器交互模块、数据库交互模块之间构建进程间通信的数据传输通道;
S2、伪服务器模块接收用户发起的建立连接请求,创建一个与用户绑定的套接字并建立连接,同时保持用户连接的状态信息;
S3、伪服务器模块接收到用户发起的命令请求,更新用户连接的状态信息,根据命令请求的类型的定义方式,得到命令请求的类型,并启动命令请求的类型对应的响应模式;根据响应模式,伪服务器执行相应的操作;
S4、伪服务器模块执行动态数据同步。
作为优选,所述数据库容器与所述数据库交互模块的数量相同。
作为优选,步骤S2中所述状态信息包括套接字描述符、用户名称、用户身份认证信息、用户输入缓冲区和输出缓冲区。
作为优选,步骤S3中所述命令请求的类型的定义方式包括编译前定义和运行时定义;所述编译前定义具体包括在代码开发阶段人为设定各种redis交互命令的命令类型;所述运行时定义用户在发送命令请求时增加一个命令选项,伪服务器模块根据所述命令选项判断命令请求的类型。
作为优选,步骤S3中所述响应模式包括普通模式和拟态模式;
S31、普通模式下,伪服务器基于信用分机制选择其中一个数据库交互模块,通过数据库交互模块使用户与一个运行有redis服务器进程的数据库容器进行间接直连;
S32、拟态模式下,伪服务器将用户发起的命令请求同时分发给不少于三个数据库交互模块,伪服务器模块获取到的数据库交互模块响应结果后通过裁决器交互模块交由裁决器进行裁决,伪服务器模块获取到裁决结果后对用户进行响应。
作为优选,所述方法还包括动态数据同步工作,具体包括如下步骤:
S41、伪服务器模块维护一个公共键空间,所述公共键空间保存一系列的键值对,所述键值对中的键与实际redis数据库当中的键一一对应,所述键值对当中的值保存了同步状态;
S42、伪服务器模块维护一个公共键空间的迭代器,所述迭代器用于遍历所述公共键值空间当中的键值对;
S43、伪服务器模块周期性调用所述迭代器,获取到所述公共键空间当中的键值对,并根据所述键值对中的值所保存的同步状态决定是否进行同步动作;
S44、对需要进行同步的键,伪服务器模块通过各个数据库交互模块分别获得所述键在各个数据库中所对应的数据值,伪服务器模块将所述各个数据库中所对应的数据值通过裁决器交互模块提交给裁决器进行裁决并获得裁决结果,伪服务器模块再根据裁决结果对各个数据库中所对应的数据值进行更新,完成数据同步工作。
作为优选,所述步骤S43中所述根据同步状态决定是否进行同步,判断标准采用随机信用衰减机制,所述随机信用衰减机制具体包括如下步骤:
S431、伪服务器模块维护的所述公共键空间新增键值对时,调用随机数生成器生成一个随机数,将所述随机数保存在对应键的同步状态当中;
S432、伪服务器模块通过所述迭代器获取到公共键空间当中待处理的键值对,按照特定的步长对所述的同步状态中保存的随机数进行衰减;
S433、衰减后的随机数数值小于设定阈值,则对待处理的键进行同步,同步完成后重新生成一个随机数,并保存到同步状态当中;
S434、衰减后的随机数数值不小于设定阈值,则伪服务器模块调用迭代器获取下一个待处理键值对
本发明还公开了一种拟态redis数据库的输入输出代理装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于上述的拟态redis数据库的输入输出代理方法。
本发明还公开了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的拟态redis数据库的输入输出代理方法。
本发明的有益效果:
通过伪服务器模块保证跟原生redis的对外接口一致,从而便于移植到任意redis应用场景中;通过独立的进程实现内部各个模块的隔离,方便独立开发、维护和扩展;并且将同步功能集成到输入输出代理当中,从而实现资源复用;针对同步功能,巧妙利用随机信用衰减机制,可以保证同步功能进行的同时兼顾资源的节省。
本发明的特征及优点将通过实施例结合附图进行详细说明。
附图说明
图1是本发明实施例提供的一种拟态redis数据库的输入输出代理方法的流程图。
图2是拟态输入输出代理容器、裁决器和异构数据库容器交互示意图。
图3是伪服务器进程与裁决器交互进程、数据库交互进程交互示意图。
图4是保存用户连接的状态信息的字典数据结构示意图。
图5是定义redis数据库交互命令的结构体数组示意图。
图6是拟态输入输出代理中的伪服务器进程中公共键空间示意图。
图7是本发明一种拟态redis数据库的输入输出代理装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明一种拟态redis数据库的输入输出代理方法,包括拟态redis数据库、拟态输入输出代理容器和裁决器,所述拟态redis数据库中包括至少三个运行有redis服务器进程的数据库容器;所述拟态输入输出代理容器中包括一个伪服务器模块、一个裁决器交互模块和不少于三个数据库交互模块;所述裁决器交互模块与裁决器相连接;所述数据库交互模块与数据库容器相连接;参阅图1,所述方法具体包括如下步骤:
S1、初始化阶段:所述伪服务器模块、裁决器交互模块和数据库交互模块作为独立进程运行,所述伪服务器模块与裁决器交互模块、数据库交互模块之间构建进程间通信的数据传输通道;
具体的,参考图2。在本实施例当中,输入输出代理对接了三个基础镜像异构的redis数据库容器(例如数据库容器1是基于Debian基础镜像构建的,数据库容器2是基于Ubuntu基础镜像构建的,数据库容器3是基于Redhat基础镜像构建的),每个容器当中运行了一个redis服务器进程,从而构成具有动态异构冗余特征的拟态redis数据库。
同时拟态输入输出代理也运行在一个容器当中,该容器里运行了五个进程,并通过supervisord对各个进程进行管理;各个进程当中分别执行伪服务器模块、裁决器交互模块和数据库交互模块的业务程序。
本实施例中输入输出代理所运行的容器镜像通过Dockerfile进行构建,输入输出代理的各个模块采用纯C编码,可以在任意安装了docker和gcc等linux软件的服务器上进行部署。
对于图2中所示的各个异构redis数据库而言,均只与一个客户端建立交互连接——即输入输出代理容器中的数据库交互模块,在本实施例中,所述数据库交互模块作为一个独立进程,通过hiredis接口实现其作为redis客户端的相关业务逻辑。因此,所述输入输出代理中的数据库交互模块的数量要与动态异构的redis服务器的数量保持一致,该一致性可以通过编译宏进行控制。
同时,数据库交互模块当中的redis客户端跟图2中所示的异构redis服务器之间建立连接,需要redis客户端获取到相关服务器的信息,例如端口号、密码等等。本实施例中,这些服务器信息也通过编译宏,在编译阶段配置到hiredis接口的入参当中。
在拟态输入输出代理容器的各个进程的初始化阶段,要完成各个进程之间的进程间通信(IPC)通道,用于后续的数据传输。在本实施例当中,采用unix域套接字来实现所述进程间通信的数据传输通道,具体参考图3。伪服务器进程当中维护一个套接字描述符数组fd[4],并且通过IO多路复用技术,将这四个套接字都添加到pollfd结构体数组pfd[4]当中,用于非阻塞监听四个套接字的消息。
S2、伪服务器模块接收用户发起的建立连接请求,创建一个与用户绑定的套接字并建立连接,同时保持用户连接的状态信息;所述状态信息包括但不限于输入缓冲区长度、输入缓冲区地址、输出缓冲区长度、输出缓冲区地址以及用户当前操作的数据库ID。
本实施例中,伪服务器模块同样通过网络进程间通信技术与用户建立连接并交互数据,每个连接会对应一个套接字描述符,伪服务器模块同样将这些套接字描述符添加到IO多路复用技术的轮询列表当中,采用非阻塞的方式监听各个用户所发起的请求。
本实施例中,伪服务器模块通过一个字典数据结构来管理各个用户连接的状态信息,具体的参考图4,字典的键即为所述用户连接套接字描述符,字典的值为状态信息结构体指针。在上述实现方式下,当IO多路复用技术发现某个套接字描述符可读时,可以迅速通过该套接字描述符从所述字典数据结构中查找到所对应的状态信息。
S3、伪服务器模块接收到用户发起的命令请求,更新用户连接的状态信息,根据命令请求的类型的定义方式,得到命令请求的类型,并启动命令请求的类型对应的响应模式;根据响应模式,伪服务器执行相应的操作;
在一种可行的实施例中,所述命令请求的类型的定义方式包括编译前定义和运行时定义;所述编译前定义具体包括在代码开发阶段人为设定各种redis交互命令的命令类型;所述运行时定义用户在发送命令请求时增加一个命令选项,伪服务器模块根据所述命令选项判断命令请求的类型;
在伪服务器模块当中,同样通过一个字典数据结构来保存所有的redis数据库交互命令,字典的键为命令名称,字典的值为响应模式。当伪服务器接收到用户发送的redis命令,解析后获取到命令名称,便能够直接在所述字典数据结构中检索对应的响应模式。
该保存redis数据库交互命令字典通过遍历一个结构体数组进行初始化,所述结构体数组则在代码定义时直接初始化,具体的参考图5。代码开发人员可以在redisCommand数组定义时,直接设置cmdtype项的值,从而实现在代码开发阶段人为设定各种redis交互命令的命令类型。
代码开发人员可以根据实际应用场景来设置redis数据库交互命令的类型,例如简单的“PING”命令,其目的仅仅是为了获得数据库服务器的“PONG”回复,因此“PING”命令就可以设置为普通模式执行;而“SET”命令与数据库当中的数据息息相关,则将“SET” 命令设置为拟态模式执行。
Redis命令的类型也可以在运行时进行设定,在本实施例中,具体的,就是在解析用户发送的redis命令时,检测是否有“-imitationcmd”项,如果有该项,则说明用户自定义了该命令的命令类型,那么根据该项的值为y或者n来确认拟态模式响应或普通模式响应;当所述“-imitationcmd”项缺省,那么则通过编译前定义的类型来响应;
在一种可行的实施例中,所述响应模式包括普通模式和拟态模式;
S31、普通模式下,伪服务器基于信用分机制选择其中一个数据库交互模块,通过数据库交互模块使用户与一个运行有redis服务器进程的数据库容器进行间接直连;
所述信用分机制有多种成熟的解决方案,本实施例中采用一种简单的方式,即人为设定参考图2中所示数据库交互进程3中的数据库交互模块为最信用分最高,(因为其对接的redis数据库版本最新)当普通模式下,伪服务器模块将接收到的用户命令请求直接通过数据库交互进程3转发给数据库容器3中的redis数据库进行响应,并将响应结果直接返还给用户;
普通模式主要用于需要快速响应或者数据量较大的情况,例如“SYNC”和“PSYNC”命令
S32、拟态模式下,伪服务器将用户发起的命令请求同时分发给不少于三个数据库交互模块,伪服务器模块获取到的数据库交互模块响应结果后通过裁决器交互模块交由裁决器进行裁决,伪服务器模块获取到裁决结果后对用户进行响应。
S4、伪服务器模块执行动态数据同步,具体包括如下步骤:
S41、伪服务器模块维护一个公共键空间,所述公共键空间保存一系列的键值对,所述键值对中的键与实际redis数据库当中的键一一对应,所述键值对当中的值保存了同步状态;
本实施例中,具体的,参考图6,拟态输入输出代理容器中伪服务器进程维护一个键值空间,其中键空间与数据库容器1、2、3保持一致。由于数据库容器1、2、3当中的键值都是由伪服务器进程接收到用户的命令后下发的,因而伪服务器进程可以维护一个跟所有数据库容器相同的键空间。
S42、伪服务器模块维护一个公共键空间的迭代器,所述迭代器用于遍历所述公共键值空间当中的键值对;
所述迭代器有多种实现方式,本实施例采用redis原生代码当中字典数据结构的迭代器即可满足功能需求。
S43、伪服务器模块周期性调用所述迭代器,获取到所述公共键空间当中的键值对,并根据所述键值对中的值所保存的同步状态决定是否进行同步动作;
所述步骤S43中所述根据同步状态决定是否进行同步,判断标准采用随机信用衰减机制,所述随机信用衰减机制具体包括如下步骤:
S431、伪服务器模块维护的所述公共键空间新增键值对时,调用随机数生成器生成一个随机数,将所述随机数保存在对应键的同步状态当中;
S432、伪服务器模块通过所述迭代器获取到公共键空间当中待处理的键值对,按照特定的步长对所述的同步状态中保存的随机数进行衰减;
S433、衰减后的随机数数值小于设定阈值,则对待处理的键进行同步,同步完成后重新生成一个随机数,并保存到同步状态当中;
S434、衰减后的随机数数值不小于设定阈值,则伪服务器模块调用迭代器获取下一个待处理键值对。
在本实施例中,随机数的范围区间为[0, 9]的整数,设置的阈值为2,每次衰减的数值为1。假设初始状态下KEYA、KEYB、KEYC的随机数值分别为1、3、5,且字典迭代器都是以KEYA->KEYB->KEYC->KEYA…进行循环迭代,那么第一次循环之后只有KEYA满足小于阈值的条件,KEYA启动同步,并且重新获取随机值;KEYB和KEYC不满足小于阈值的条件,分别减一后进入下一轮循环,以此类推。
由于同步是一个比较耗费资源、影响性能的工作,因而通过所述的随机衰减机制,可以有效平衡同步的功能需求和资源开销情况。
S44、对需要进行同步的键,伪服务器模块通过多个数据库交互模块分别获得所述键在各个数据库中所对应的数据值,伪服务器模块将所述各个数据库中所对应的数据值通过裁决器交互模块提交给裁决器进行裁决并获得裁决结果,伪服务器模块再根据裁决结果对各个数据库中所对应的数据值进行更新,完成数据同步工作。
当通过上述过程获取到需要同步的键后,伪服务器模块会通过数据库交互模块获得各个数据库中对应键的值,然后将所述键的值通过裁决器交互模块,发送给裁决器进行裁决,若裁决器返回的结果是数据有效,无需更新,则进行下一个键的迭代。若裁决器返回的结果是需要更新,具体的,参考图6,在数据库容器3中的KEYB与其他数据库当中KEYB对应的值不同,因而会裁决后得到一个准确的结果;伪服务器模块再通过数据库交互接口,对KEYB键的值进行更新,完成同步工作。
以上所述的一种拟态redis数据库的输入输出代理方法,通过伪服务器模块保证跟原生redis的对外接口一致,从而便于移植到任意redis应用场景中;通过独立的进程实现内部各个模块的隔离,方便独立开发、维护和扩展;并且将同步功能集成到输入输出代理当中,从而实现资源复用;针对同步功能,巧妙利用随机信用衰减机制,可以保证同步功能进行的同时兼顾资源的节省。总体上,实现一种拟态redis数据库的输入输出代理方法。
与前述网络操作***中应用的拟态数据库交互方法的实施例相对应,本发明还提供了网络操作***中应用的拟态数据库交互装置的实施例。
参见图7,本发明实施例提供的一种拟态redis数据库的输入输出代理装置,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的网络操作***中应用的拟态数据库交互方法方法。
本发明拟态redis数据库的输入输出代理装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本发明拟态redis数据库的输入输出代理装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的拟态redis数据库的输入输出代理方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种拟态redis数据库的输入输出代理方法,其特征在于,包括拟态redis数据库、拟态输入输出代理容器和裁决器,所述拟态redis数据库中包括至少三个运行有redis服务器进程的数据库容器;所述拟态输入输出代理容器中包括一个伪服务器模块、一个裁决器交互模块和不少于三个数据库交互模块;所述裁决器交互模块与裁决器相连接;所述数据库交互模块与数据库容器相连接;所述方法具体包括如下步骤:
S1、初始化阶段:所述伪服务器模块、裁决器交互模块和数据库交互模块作为独立进程运行,所述伪服务器模块与裁决器交互模块、数据库交互模块之间构建进程间通信的数据传输通道;
S2、伪服务器模块接收用户发起的建立连接请求,创建一个与用户绑定的套接字并建立连接,同时保持用户连接的状态信息;
S3、伪服务器模块接收到用户发起的命令请求,更新用户连接的状态信息,根据命令请求的类型的定义方式,得到命令请求的类型,并启动命令请求的类型对应的响应模式;根据响应模式,伪服务器执行相应的操作;
S4、伪服务器模块执行动态数据同步;
具体包括如下步骤:
S41、伪服务器模块维护一个公共键空间,所述公共键空间保存一系列的键值对,所述键值对中的键与实际redis数据库当中的键一一对应,所述键值对当中的值保存了同步状态;
S42、伪服务器模块维护一个公共键空间的迭代器,所述迭代器用于遍历所述公共键空间当中的键值对;
S43、伪服务器模块周期性调用所述迭代器,获取到所述公共键空间当中的键值对,并根据所述键值对中的值所保存的同步状态决定是否进行同步动作;
根据同步状态决定是否进行同步,判断标准采用随机信用衰减机制,所述随机信用衰减机制具体包括如下步骤:
S431、伪服务器模块维护的所述公共键空间新增键值对时,调用随机数生成器生成一个随机数,将所述随机数保存在对应键的同步状态当中;
S432、伪服务器模块通过所述迭代器获取到公共键空间当中待处理的键值对,按照预设的步长对所述的同步状态中保存的随机数进行衰减;
S433、衰减后的随机数数值小于设定阈值,则对待处理的键进行同步,同步完成后重新生成一个随机数,并保存到同步状态当中;
S434、衰减后的随机数数值不小于设定阈值,则伪服务器模块调用迭代器获取下一个待处理键值对;
S44、对需要进行同步的键,伪服务器模块通过多个数据库交互模块分别获得所述键在各个数据库中所对应的数据值,伪服务器模块将所述各个数据库中所对应的数据值通过裁决器交互模块提交给裁决器进行裁决并获得裁决结果,伪服务器模块再根据裁决结果对各个数据库中所对应的数据值进行更新,完成数据同步工作。
2.如权利要求1所述的一种拟态redis数据库的输入输出代理方法,其特征在于:所述数据库容器与所述数据库交互模块的数量相同。
3.如权利要求1所述的一种拟态redis数据库的输入输出代理方法,其特征在于:步骤S2中所述状态信息包括套接字描述符、用户名称、用户身份认证信息、用户输入缓冲区和输出缓冲区。
4.如权利要求1所述的一种拟态redis数据库的输入输出代理方法,其特征在于:步骤S3中所述命令请求的类型的定义方式包括编译前定义和运行时定义;所述编译前定义具体包括在代码开发阶段人为设定各种redis交互命令的命令类型;所述运行时定义用户在发送命令请求时增加一个命令选项,伪服务器模块根据所述命令选项判断命令请求的类型。
5.如权利要求1所述的一种拟态redis数据库的输入输出代理方法,其特征在于:步骤S3中所述响应模式包括普通模式和拟态模式;
S31、普通模式下,伪服务器基于信用分机制选择其中一个数据库交互模块,通过数据库交互模块使用户与一个运行有redis服务器进程的数据库容器进行间接直连;
S32、拟态模式下,伪服务器将用户发起的命令请求同时分发给不少于三个数据库交互模块,伪服务器模块获取到的数据库交互模块响应结果后通过裁决器交互模块交由裁决器进行裁决,伪服务器模块获取到裁决结果后对用户进行响应。
6.一种拟态redis数据库的输入输出代理装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-5中任一项所述的拟态redis数据库的输入输出代理方法。
7.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-5中任一项所述的拟态redis数据库的输入输出代理方法。
CN202210708862.4A 2022-06-22 2022-06-22 一种拟态redis数据库的输入输出代理方法和装置 Active CN114780569B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210708862.4A CN114780569B (zh) 2022-06-22 2022-06-22 一种拟态redis数据库的输入输出代理方法和装置
PCT/CN2022/116169 WO2023093184A1 (zh) 2022-06-22 2022-08-31 一种拟态redis数据库的输入输出代理方法和装置
US17/981,368 US11860893B1 (en) 2022-06-22 2022-11-04 Input/output proxy method and apparatus for mimic Redis database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210708862.4A CN114780569B (zh) 2022-06-22 2022-06-22 一种拟态redis数据库的输入输出代理方法和装置

Publications (2)

Publication Number Publication Date
CN114780569A CN114780569A (zh) 2022-07-22
CN114780569B true CN114780569B (zh) 2022-09-16

Family

ID=82422509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210708862.4A Active CN114780569B (zh) 2022-06-22 2022-06-22 一种拟态redis数据库的输入输出代理方法和装置

Country Status (3)

Country Link
US (1) US11860893B1 (zh)
CN (1) CN114780569B (zh)
WO (1) WO2023093184A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114780569B (zh) * 2022-06-22 2022-09-16 之江实验室 一种拟态redis数据库的输入输出代理方法和装置
CN115408371B (zh) * 2022-10-31 2023-01-31 之江实验室 一种redis数据库动态冗余部署方法和装置
CN116150280B (zh) * 2023-04-04 2023-07-04 之江实验室 一种拟态redis数据库同步方法、***、设备和存储介质
CN117234857B (zh) * 2023-11-10 2024-01-26 之江实验室 一种内生安全架构***及异常检测方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360135A (zh) * 2017-06-09 2017-11-17 中国人民解放军信息工程大学 拟态化网络操作***、构建装置及方法
CN110545260A (zh) * 2019-08-05 2019-12-06 上海拟态数据技术有限公司 一种基于拟态构造的云管理平台构建方法
CN111885124A (zh) * 2020-07-07 2020-11-03 河南信大网御科技有限公司 拟态分布式存储***、数据读、写方法及可读存储介质
WO2021179449A1 (zh) * 2020-03-09 2021-09-16 南京红阵网络安全技术研究院有限公司 一种基于证书身份认证的拟态防御***及证书签发方法
CN113542068A (zh) * 2021-07-15 2021-10-22 中国银行股份有限公司 一种Redis多实例的监控***及方法
CN114500114A (zh) * 2022-04-14 2022-05-13 之江实验室 一种网络操作***中应用的拟态数据库交互方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10212182B2 (en) * 2016-10-14 2019-02-19 Cisco Technology, Inc. Device profiling for isolation networks
CN107197041A (zh) * 2017-07-04 2017-09-22 深圳齐心集团股份有限公司 一种安全云计算***
CN110995409B (zh) * 2020-02-27 2020-06-23 南京红阵网络安全技术研究院有限公司 基于部分同态加密算法的拟态防御裁决方法和***
CN111858091A (zh) * 2020-07-06 2020-10-30 河南信大网御科技有限公司 基于进程级的拟态架构和拟态防御方法
US20210092069A1 (en) * 2020-12-10 2021-03-25 Intel Corporation Accelerating multi-node performance of machine learning workloads
CN113835685B (zh) * 2021-11-26 2022-02-18 之江实验室 一种基于拟态数据库的网络操作***设计方法
CN114780569B (zh) * 2022-06-22 2022-09-16 之江实验室 一种拟态redis数据库的输入输出代理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360135A (zh) * 2017-06-09 2017-11-17 中国人民解放军信息工程大学 拟态化网络操作***、构建装置及方法
CN110545260A (zh) * 2019-08-05 2019-12-06 上海拟态数据技术有限公司 一种基于拟态构造的云管理平台构建方法
WO2021179449A1 (zh) * 2020-03-09 2021-09-16 南京红阵网络安全技术研究院有限公司 一种基于证书身份认证的拟态防御***及证书签发方法
CN111885124A (zh) * 2020-07-07 2020-11-03 河南信大网御科技有限公司 拟态分布式存储***、数据读、写方法及可读存储介质
CN113542068A (zh) * 2021-07-15 2021-10-22 中国银行股份有限公司 一种Redis多实例的监控***及方法
CN114500114A (zh) * 2022-04-14 2022-05-13 之江实验室 一种网络操作***中应用的拟态数据库交互方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《Leveraging SONiC Functionalities in Disaggregated Network Switches》;Ali AlSabeh 等;《IEEE》;20200811;第1-4页 *
拟态防御Web服务器设计与实现;仝青等;《软件学报》;20170430(第04期);第883-897页 *

Also Published As

Publication number Publication date
CN114780569A (zh) 2022-07-22
US11860893B1 (en) 2024-01-02
WO2023093184A1 (zh) 2023-06-01
US20230418836A1 (en) 2023-12-28

Similar Documents

Publication Publication Date Title
CN114780569B (zh) 一种拟态redis数据库的输入输出代理方法和装置
US20190179821A1 (en) Method and system for accessing out-of-chain data based on consortium block chain
US20230106118A1 (en) Distributed processing of transactions in a network using timestamps
US10621651B2 (en) Automatic recharge system and method, and server
US11601501B2 (en) High-throughput algorithm for multiversion concurrency control with globally synchronized time
CN111314799A (zh) 终端***构架、通信***及通信方法、存储介质
CN111491012B (zh) SaaS多租户数据隔离访问方法、装置、电子设备及存储介质
US10360057B1 (en) Network-accessible volume creation and leasing
CN112087401B (zh) 分布式存储中实现服务质量的方法和装置
CN113342711A (zh) 页表更新方法、装置及相关设备
Zheng et al. A multi-tenant framework for cloud container services
CN114995948A (zh) 下载安全容器镜像文件的方法、装置、设备及***
CN110096543B (zh) 应用程序的数据操作方法、装置、服务器和介质
CN113377752B (zh) 数据的清洗方法、装置、***及计算机可读存储介质
US20050132237A1 (en) Method, apparatus and program storage device for providing a remote power reset at a remote server through a network connection
US11507512B2 (en) Fault tolerant cluster data handling
CN107133105B (zh) 超融合***、基于超融合***的数据处理方法
JP5464449B2 (ja) 障害によるリブートを考慮した処理部間の不整合検出方法並びに共有装置及びクラスタシステム
US12041128B2 (en) High-throughput algorithm for multiversion concurrency control with globally synchronized time
US11960510B2 (en) Data movement from data storage clusters
CN110990458B (zh) 分布式数据库***、接口通信中间件
CN116431658A (zh) 基于租户id的租户管理方法、装置及计算机可读介质
CN110209464A (zh) 虚拟机的纳管方法、存储介质及管理平台
CN115906118A (zh) 一种多数据源认证方法、装置、电子设备及存储介质
CN115955477A (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