CN102024032A - 一种基于Erlang的分布式数据缓存和持久化的方法和系统 - Google Patents
一种基于Erlang的分布式数据缓存和持久化的方法和系统 Download PDFInfo
- Publication number
- CN102024032A CN102024032A CN 201010566752 CN201010566752A CN102024032A CN 102024032 A CN102024032 A CN 102024032A CN 201010566752 CN201010566752 CN 201010566752 CN 201010566752 A CN201010566752 A CN 201010566752A CN 102024032 A CN102024032 A CN 102024032A
- Authority
- CN
- China
- Prior art keywords
- data
- persistence
- service
- buffer memory
- node
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及网路游戏领域,公开了一种基于Erlang的分布式数据缓存和持久化的方法和系统。所述方法为:在业务逻辑和数据库之间设置代理层,所有对于数据库的操作请求都发往所述代理层,代理层进行分析和排序后,再依照某种时间和空间策略对数据进行持久化,持久化策略以Erlang进程的形式运行,持久化以后将数据写入数据库;在代理层内集合缓存控制逻辑,负责一切数据缓存的操作。本发明提供的方法大大减少了数据同步所占用的资源,提升了系统性能,降低了业务逻辑的复杂度,降低了系统的维护成本。
Description
技术领域
本发明涉及网路游戏领域,具体地说是一种实现分布式数据缓存和持久化的方法和系统。
背景技术
Erlang程序语言是由爱立信公司开发并公开的函数式程序语言,成功应用于电信领域。Erlang语言本身对并行计算和分布式有很好的支持,分布式-Erlang被设计用于运行在分布式环境下,一个Erlang虚拟机被成为Erlang节点,一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)。Erlang程序以轻量级进程为基本单位在Erlang虚拟机节点(node)上执行,而每个节点作为一个操作系统进程独立执行,在集群中可以有任意多个节点,每个节点有唯一的名字,节点间的底层通信由Erlang虚拟机负责。Erlang语言提供的数据持久化工具是Mnesia数据库,Mnesia是Erlang语言开发环境提供的数据库,Mnesia内建了对于分布式环境的支持,程序员可以通过简单的配置搭建起多机多节点分布式的Mnesia数据库,各节点间的数据同步则可交由Mnesia去负责。
对于一个高性能的服务器应用来说,设计的可扩展性非常重要,集群是最常见的一种设计方式。如何解决分布式的数据访问与持久化,是系统的核心设计问题之一。
最显而易见的方法是利用Mnesia数据库的特性,对于一个数据表来说,只需要在每个节点加载一份持久化表的镜像就可以实现分布式访问,而任何对数据的修改都会自动被同步到集群中。
Mnesia所提供的这种自动化数据同步服务使用方便,但是其通用的设计也牺牲了很多性能和资源。Mnesia把表数据同步给集群中每一个节点,程序员无法控制这个同步操作的范围,由于很多时候并不是每个节点都需要这个表的最新数据,所以这种无差别、不可控的同步操作往往会带来不必要的资源消耗,在某些对实时性要求比较高的应用中,比如网络游戏的服务器端软件,这种性能损失是不可接受的。
另外,对于高性能系统来说,数据缓存不可或缺,然而独立的缓存机制有这些问题:
1、将缓存操作细节暴露给业务逻辑,会增加业务逻辑的复杂度;
2、传统的缓存是被动的,业务逻辑无法获知缓存数据的变化;
3、由于每个对缓存的访问是独立和分散的,在特定情况下,缓存数据未命中会引起瞬间大量的持久数据IO操作,形成风暴,严重影响系统的性能。
发明内容
为了解决上述问题,本发明提供了一种实现基于Erlang的分布式数据缓存和持久化的方法。
本发明中将负责数据持久化的节点称作持久化节点,负责执行业务逻辑的节点称作业务节点。
所述方法为:在业务逻辑和数据库之间设置代理层,所有对于数据库的操作请求都发往所述代理层,对数据库进行扩展,所述代理层进行分析和排序后,再依照某种时间和空间策略对数据进行持久化,持久化策略以Erlang进程的形式运行,持久化以后将数据写入数据库;在所述代理层内集合缓存控制逻辑,负责一切数据缓存的操作。
代理层的数据接口分析每一个数据操作:对于查询操作,直接使用数据缓存中的数据,如果缓存未命中则从持久化数据源加载;对于写操作,更新缓存中的数据,并将数据操作通知到持久化策略。
缓存控制逻辑负责对缓存的访问,比如缓存数据加载、读取、删除和改写。实际使用的存储方式可以是支持集群访问的方式,如Mnesia表,或者是节点内访问的高效存储方式,比如ETS(ETS是Erlang虚拟机提供的一种简单的节点内键-值数据存储/查询服务)或进程字典。更换不同的存储方式只需要更换缓存控制逻辑的实现即可
进一步:所述持久化策略接收数据接口模块对数据记录的操作,对多次相同的操作进行合并,保持不同类型操作间的顺序正确,并按照某种时间或空间策略进行持久化。
可选的:所述缓存数据库为ETS,所述缓存为节点内缓存,持久化策略记录操作,并按照某种时间或空间策略汇总同步给持久数据源写入磁盘。
可选的:所述缓存为最终一致性缓存,在持久化节点进行同步服务,把磁盘表的变化同步给各业务节点,同步服务是一个进程或进程池,同步服务维护数据记录的订阅列表。
可选的,所述缓存的实现为集群访问,持久化策略进程把操作记录序列异步发往持久化服务进程,持久化服务进程接收操作记录并更新磁盘表。
可选的:所述缓存控制操作非持久化Mnesia表的数据,所述持久化策略通过订阅Mnesia非持久化表的数据更新事件来记录对数据的操作,对多次相同的操作进行合并,保持不同类型操作间的顺序正确,并按照某种时间或空间策略进行持久化。
可选的,所述缓存的实现为节点内Mnesia缓存和更新订阅,缓存用Mnesia非持久化表实现;每个业务节点自行在本地加载持久化缓存表的数据,缓存控制逻辑操作本节点的缓存表,其节点间的数据同步由Mnesia负责;系统根据某种策略为所述缓存表建立持久化策略进程。
本发明的另一目的是提供一种性能高、维护成本低、运行快的基于Erlang的分布式数据缓存和持久化系统。
所述系统包括:
业务逻辑模块,实际业务逻辑;
数据接口模块,业务逻辑模块通过所述数据接口模块访问系统中的数据,实现数据库的接口;
持久化策略,Erlang进程,接收对数据记录的操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程;
非持久化表,内存表,作为节点内数据缓存;
持久化服务模块,运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入持久化表;
持久化表,存放持久化的数据。
本发明还提供了一种性能高、维护成本低、运行快的基于Erlang的分布式数据缓存和持久化系统,所述系统包括:
业务逻辑:实际业务逻辑;
数据接口模块:Erlang模块,业务逻辑模块通过所述数据接口模块访问系统中的数据,在非持久化节点上,数据接口模块将最新数据更新到本节点的对应Mnesia非持久化表中;
持久化策略:Erlang进程,每个非持久化表对应一个持久化策略进程,所述进程通过订阅Mnesia非持久化表的数据更新事件来记录对数据的操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程;
非持久化表:Mnesia内存表,作为节点内数据缓存,为本节点的业务逻辑提供高速的数据读取服务;
持久化服务模块:运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入Mnesia持久化表;
持久化表:Mnesia磁盘表,存放持久化的数据。
本发明提供的基于Erlang的分布式数据缓存和持久化的方法,在业务节点和数据库之间设置代理层,实质上是对原有的数据库进行扩展,并且通过在中间层增加了程序员对数据库行为的控制力。通过这个代理层数据变化只会在必要的范围内进行同步,大大减少了数据同步所占用的资源,提升了系统性能;代理层内的缓存逻辑使得业务逻辑不再需要关心数据的存放位置,不再需要知道数据的存放和读取流程,降低了业务逻辑的复杂度,业务逻辑可以获知缓存数据的变化,使得系统稳定,降低了系统的维护成本。
附图说明
图1为本发明实施例1所提供方案的示意图;
图2为实施例1提供的系统的框架图;
图3为实施例2所提供方案的示意图;
图4为实施例3所提供方案的示意图;
图5为实施例4所提供方案的示意图;
图6为实施例4多提供系统的框架图;
图7为实施例5所提供方案的示意图。
具体实施方式
集群中存在持久化节点和非持久化节点:持久化节点负责把数据持久化到磁盘上;非持久化节点负责业务逻辑的处理。
为了控制数据同步的范围,本方法是在业务逻辑和数据库之间增加代理层,所有对于数据库的操作请求都发往该代理层,对数据库进行扩展,代理层对所有请求进行分析和排序后,再依照设定的某个时间(定期/队列)或空间(集中/分布)策略对数据进行持久化,持久化以后将数据写入数据库;并且在代理层内集合缓存控制逻辑,负责一切数据缓存的操作。
代理层的数据接口与业务逻辑实现数据的交互,可以进行数据的查询、增加、删除和接口的改写。而持久化策略接收数据接口对数据记录的操作,比如对数据记录的增加、改写、删除操作,可以对多次相同的操作进行合并,定期将合并后的操作序列发送至持久化节点上的持久化服务进程。
缓存的实际实现可以有很多种,可以是第三方的内存键-值存储软件,例如memcached,也可以是此例中Erlang提供的、集成在Erlang运行环境中的数据库Mnesia、ETS。根据具体对缓存访问特性的具体需求,可以有不同几种具体设计方案。
以下为在网络游戏服务端软件中使用所述方法和系统的例子。
实施例1:
如图1所示,本实施例提供的是节点内缓存情况下的方案:
在这个方法中,缓存使用节点内访问的实现,比如ETS.每个业务节点有独立的一份缓存,其数据根据需要独立加载。
具体方案为:
1、业务逻辑发起对某个缓存数据记录的访问;
2、缓存控制从本机缓存取数据记录,如果未命中则从持久数据中加载;
3、缓存控制返回访问结果,数据访问完成;
4、对于写操作,持久化策略记录本次操作,并按照某种时间空间策略汇总同步给持久数据源写入磁盘;
5、当业务逻辑不再需要访问这个数据记录,需要强制本节点的持久化策略立即将此数据记录相关的操作记录同步给持久数据源,然后通知缓存控制逻辑使本节点对应的缓存记录失效,具体做法可以是做无效标记,或者从本机缓存中删除。
这个方案适合各业务节点缓存数据没有交集的情况,一个记录的有效镜像任意时刻只能存在于一个节点中。当另一个节点需要此记录时,需要使旧镜像无效化.具体做法可以是把旧镜像删除,或者停止业务逻辑对其的访问。
此方案的性能由有效缓存镜像在节点间移动的平均频率决定,移动频率越高命中率越低;对于一个缓存的数据记录,业务逻辑从设计上需要确保任意时刻只有一个业务节点需要访问它,以避免命中率过低。
如图2所示,本实施例中实现所述方法的具体的系统包括:
业务逻辑模块,实际业务逻辑(不属于本发明保护的范围);
数据接口模块,Erlang模块,实现对缓存的访问,业务逻辑模块通过此模块访问系统中的数据.在非持久化节点上,此模块会将最新数据更新到本节点对应的非持久化表中;
持久化策略,Erlang进程,接收对数据记录的增加,改写,删除操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程;
非持久化表,内存表,作为节点内数据缓存,为本节点的业务逻辑提供高速的数据读取服务;具体来说可以是ETS或者进程字典;
持久化服务模块,运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入持久化表;
持久化表,磁盘表,存放持久化的数据。
实施例2:
如图3所示,本实施例提供的是最终一致性缓存情况下的方案:当集群中缓存镜像的实时一致性要求不高时,同时需要最大化业务节点访问缓存的速度时,在实施例1的基础上有下述优化方案:
在这个方案中,持久化节点需要实现同步服务,负责把磁盘表的变化同步给各业务节点。同步服务可以是一个进程或进程池,同步服务维护数据记录的订阅列表。
具体方案为:
1、业务逻辑发起对某个缓存数据记录的访问;
2、缓存控制从本机缓存取数据记录,如果未命中则从持久数据中加载,并向同步服务订阅此镜像的数据变动;后者把该节点加入此数据记录的订阅列表中;
3、业务节点访问节点内缓存的数据镜像;
4、业务节点的持久化策略进程把业务逻辑产生的数据改写操作发给同步服务;
5、在完成业务节点持久化策略发来的数据操作后,同步服务把数据变化通知给订阅列表中的业务节点;
6、业务节点接到通知后使本节点对应的数据镜像无效,使本节点下一次对此记录的访问未命中。
在这个方案中一个数据记录可能有多个缓存镜像,这些镜像分布在不同的业务节点上,任意时刻其镜像可能不一致,对于每一次改写操作来说,缓存数据满足最终一致性要求。
此方案适用于业务节点对缓存的访问速度要求很苛刻,但是并不要求缓存数据在任一时刻都和磁盘数据一致的情况。
实现本方案的系统如实施例1所述。
实施例3:
如图4所示,本实施例提供的是集群访问的缓存情况下的方案:
具体方案为:
1、业务节点上的业务逻辑调用代理层的数据接口来访问某个数据表T;
2、数据接口调用缓存控制逻辑来请求数据;
3、缓存控制逻辑操作非持久化表的数据;根据所使用的具体缓存可以更换不同的实现,默认使用Mnesia非持久化表,访问逻辑直接用Mnesia提供的接口;对于Mnesia非持久化表来说,Mnesia负责在集群中定位和数据传送;
4、写操作,数据接口模块把本次操作包装成操作日志(Erlang tuple),异步发给本节点内的持久化策略进程;
5、数据接口返回结果,业务逻辑的数据访问请求完成;
6、持久化策略进程将操作日志记录在进程字典中;
7、当记录的日志序列达到某个预设的个数,或者当计时器到时时,持久化策略进程把操作记录序列异步发往持久化服务进程,后者注册Global名,其在集群中的定位由Erlang虚拟机负责;
8、持久化服务进程接收操作记录并更新磁盘表。
各模块初始化时试图在集群中创建所需要的非持久化表,Mnesia保证集群中此表唯一,如果已被创建则自动忽略此操作;如果成功创建则立即从对应的持久化表加载数据,这里不需要考虑持久化表的物理位置,Mnesia负责底层的通信;对与每个新创建的非持久化表,建立一个持久化策略进程,该进程订阅此表的所有数据改写事件。
在这种实现中,数据的读写操作仅发生在缓存上,持久化策略也是异步的,次数也能够被控制,系统中数据访问的性能开销被大大减少。利用这种节点内缓存和异步持久化的设计,在相同条件下系统的平均负载比使用Mnesia的分布式同步机制时降低了30%到40%。
本实施例方案实现所对应的系统如图2所示,其区别点在于:
非持久化表为Mnesia内存表,作为节点内数据缓存,为本节点的业务逻辑提供高速的数据读取服务;
持久化服务模块,运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入持久化表;
持久化表为Mnesia磁盘表,存放持久化的数据。
数据接口模块实现了Mnesia数据库的接口,业务逻辑模块通过此模块访问系统中的数据.在非持久化节点上,此模块会将最新数据更新到本节点的对应Mnesia非持久化表中。
当然此方案中,也可以是非持久化表用Mnesia数据库,持久化表用外部 数据库,比如MySQL(开源数据库)。
实施例4:
如图5所示,本实施例提供的方法是实施例3提供的方法的优化方案,如果采用Mnesia数据库,则可以做以下优化:每个非持久化表对应一个持久化策略进程,此进程通过订阅Mnesia非持久化表的数据更新事件来记录对数据的增加、改写、删除操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程。
具体是:
1、业务节点上的业务逻辑调用代理层的数据接口来访问某个数据表T;
2、数据接口调用缓存控制逻辑来请求数据;
3、缓存控制逻辑操作非持久化表的数据;访问逻辑直接用Mnesia提供的接口;对于Mnesia非持久化表来说,Mnesia负责在集群中定位和数据传送;
4、数据接口返回结果,业务逻辑的数据访问请求完成;
5、当非持久化表完成数据更改,自动将本次数据改动的细节发给对应的持久化策略进程;
6、持久化策略进程将操作日志记录在进程字典中;
7、当记录的日志序列达到某个预设的个数,或者当计时器到时时,持久化策略进程把操作记录序列异步发往持久化服务进程,后者注册Global名,其在集群中的定位由Erlang虚拟机负责;
8、持久化服务进程接收操作记录并更新磁盘表。
在这个方案中,缓存表使用Mnesia非持久化表,持久化策略被移动到缓存服务中,作为独立进程和缓存表位于同一个节点内;利用Mnesia数据库的事件订阅服务,持久化策略可以收到缓存表中数据变化的事件,不再需要数据接口来做这一个通知;每个缓存表由1个持久化策略进程来处理。这个方案利用Mnesia提供的服务,进一步简化系统的逻辑。
相对应地,本实施例提供的系统也有所改变,如图6所示:
业务逻辑模块,实际业务逻辑(不属于本发明保护的范围);
数据接口模块,Erlang模块,实现了Mnesia数据库的接口,业务逻辑模块通过此模块访问系统中的数据.在非持久化节点上,此模块会将最新数据更新到本节点的对应Mnesia非持久化表中;
持久化策略:Erlang进程,每个非持久化表对应一个持久化策略进程;此进程通过订阅Mnesia非持久化表的数据更新事件来记录对数据的增加,改写,删除操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程;
非持久化表,Mnesia内存表,作为节点内数据缓存,为本节点的业务逻辑提供高速的数据读取服务;
持久化服务模块,运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入Mnesia持久化表;
持久化表,Mnesia磁盘表,存放持久化的数据。
实施例5:
在实施例4的方案中存在业务节点对远程缓存表的访问,当需要每个业务节点都能最快速访问缓存表,则可以有以下变化:
如图7所示,在这个方案中,缓存用Mnesia非持久化表实现;每个业务节点自行在本地加载持久化缓存表的数据,缓存控制逻辑只操作本节点的缓存表,其节点间的数据同步由Mnesia负责;系统根据某种策略为此缓存表建立持久化策略进程.
由于每个Mnesia缓存表的访问都发生在本节点内部,缓存的访问速度达到最大化;但是由于集群数据同步交给了Mnesia数据库,所以在高压力下此设计本身存在性能隐患,为了解决这个问题,需要在业务逻辑内对数据改写的频率做控制。
具体做法可以是业务逻辑中做细粒度的缓存(比如用进程字典记录数据及其改写状态),利用某种时间或空间策略将数据改写请求压缩和打包(比如设定改写x次就将最终值写入数据代理),降低其频率,从而减轻底层Mnesia集群同步带来的压力.
这种受控的请求会延迟数据变化在集群中的同步,使各个节点中的缓存表数据出现不完全一致的情况,因此这个方案适用于缓存表的一个数据记录不会同时被多个节点访问,或者对其一致性要求不高的情况。在这种情况下此设计用各节点内的缓存表提升了缓存访问性能,用Mnesia的订阅能力简化了持久化流程。
实施例6:
上述的几种方案可以同时存在于一个系统中,针对缓存数据的特征,采用不同的方案实现缓存和持久化,才能使系统整体性能最优。
针对不同数据访问需求设计的数据代理层提高了系统数据访问的性能;集成缓存逻辑降低了系统的维护成本。
以上对本发明实施例所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只适用于帮助理解本发明实施例的原理;同时,对于本领域的一般技术人员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述方法是在业务逻辑和数据库之间设置代理层,所有对于数据库的操作请求都发往所述代理层,对数据库进行扩展,所述代理层进行分析和排序后,再依照某种时间和空间策略对数据进行持久化,持久化策略以Erlang进程的形式运行,持久化以后将数据写入数据库;
在所述代理层内集合缓存控制逻辑,负责一切数据缓存的操作。
2.如权利要求1所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述代理层的数据接口与业务逻辑实现数据的交互,进行数据的查询、增加、删除和接口的改写。
3.如权利要求2所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述持久化策略接收数据接口模块对数据记录的操作,对多次相同的操作进行合并,保持不同类型操作间的顺序正确,并按照某种时间或空间策略进行持久化。
4.如权利要求3所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述缓存的实现为ETS,所述缓存为节点内缓存,持久化策略记录操作,并按照某种时间或空间策略汇总同步给持久数据源写入磁盘。
5.如权利要求4所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述缓存为最终一致性缓存,在持久化节点进行同步服务,把磁盘表的变化同步给各业务节点,同步服务是一个进程或进程池,同步服务维护数据记录的订阅列表。
6.如权利要求3所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述缓存的实现为集群访问,持久化策略进程把操作记录序列异步发往持久化服务进程,持久化服务进程接收操作记录并更新磁盘表。
7.如权利要求2所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述缓存控制操作非持久化Mnesia表的数据,所述持久化策略通过订阅Mnesia非持久化表的数据更新事件来记录对数据的操作,对多次相同的操作进行合并,保持不同类型操作间的顺序正确,并按照某种时间或空间策略进行持久化。
8.如权利要求7所述的一种基于Erlang的分布式数据缓存和持久化方法,其特征在于:所述缓存的实现为节点内Mnesia缓存和更新订阅,缓存用Mnesia非持久化表实现;每个业务节点自行在本地加载持久化缓存表的数据,缓存控制逻辑操作本节点的缓存表,其节点间的数据同步由Mnesia负责;系统根据某种策略为所述缓存表建立持久化策略进程。
9.一种基于Erlang的分布式数据缓存和持久化的系统,其特征在于:所述系统包括:
业务逻辑模块:实际业务逻辑;
数据接口模块:Erlang模块,业务逻辑模块通过所述数据接口模块访问系统中的数据,在非持久化节点上,数据接口模块将最新数据更新到本节点对应的非持久化表中;
持久化策略:Erlang进程,接收对数据记录的操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程;
非持久化表:内存表,作为节点内数据缓存,为本节点的业务逻辑提供高速的数据读取服务;
持久化服务模块,运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入持久化表;
持久化表,存放持久化的数据。
10.一种基于Erlang的分布式数据缓存和持久化的系统,其特征在于:所述系统包括:
业务逻辑:实际业务逻辑;
数据接口模块:Erlang模块,业务逻辑模块通过所述数据接口模块访问系统中的数据,在非持久化节点上,数据接口模块将最新数据更新到本节点的对应Mnesia非持久化表中;
持久化策略:Erlang进程,每个非持久化表对应一个持久化策略进程,所述进程通过订阅Mnesia非持久化表的数据更新事件来记录对数据的操作,对多次相同的操作进行合并,保持操作的顺序,定期将合并后的操作序列发送至持久化节点上的持久化服务进程;
非持久化表:Mnesia内存表,作为节点内数据缓存,为本节点的业务逻辑提供高速的数据读取服务;
持久化服务模块:运行在持久化节点上的服务进程,接收其他节点发来的数据操作序列,并将数据改动定期写入Mnesia持久化表;
持久化表:Mnesia磁盘表,存放持久化的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010566752 CN102024032A (zh) | 2010-11-29 | 2010-11-29 | 一种基于Erlang的分布式数据缓存和持久化的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010566752 CN102024032A (zh) | 2010-11-29 | 2010-11-29 | 一种基于Erlang的分布式数据缓存和持久化的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102024032A true CN102024032A (zh) | 2011-04-20 |
Family
ID=43865329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010566752 Pending CN102024032A (zh) | 2010-11-29 | 2010-11-29 | 一种基于Erlang的分布式数据缓存和持久化的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102024032A (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425462A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN103607476A (zh) * | 2013-12-05 | 2014-02-26 | 上海普坤信息科技有限公司 | 海量消息的分布式多阶段持久化的系统及方法 |
CN103856353A (zh) * | 2014-03-06 | 2014-06-11 | 上海爱数软件有限公司 | 一种业务日志数据访问与统计分析的方法及装置 |
US8898121B2 (en) | 2012-05-29 | 2014-11-25 | International Business Machines Corporation | Merging entries in a deduplication index |
CN104750740A (zh) * | 2013-12-30 | 2015-07-01 | 北京新媒传信科技有限公司 | 数据更新的方法及装置 |
CN104866339A (zh) * | 2015-04-27 | 2015-08-26 | 努比亚技术有限公司 | Fota数据的分布式持久化管理方法、系统和装置 |
US9177028B2 (en) | 2012-04-30 | 2015-11-03 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
CN105550319A (zh) * | 2015-12-12 | 2016-05-04 | 天津南大通用数据技术股份有限公司 | 一种集群一致性服务高并发下持久化的优化方法 |
CN105549909A (zh) * | 2015-12-12 | 2016-05-04 | 天津南大通用数据技术股份有限公司 | 一种集群序列类一致性信息持久化的优化方法 |
CN105718291A (zh) * | 2016-01-25 | 2016-06-29 | 山东蓝创网络技术有限公司 | 一种混合桌面应用的多级缓存加速方法 |
CN105741010A (zh) * | 2016-01-13 | 2016-07-06 | 天津中科智能识别产业技术研究院有限公司 | 一种面向灾害数据处理模型 |
CN105912653A (zh) * | 2016-04-08 | 2016-08-31 | 广东凯通软件开发有限公司 | 数据快速订阅方法及装置 |
CN106682193A (zh) * | 2016-12-29 | 2017-05-17 | 北京奇虎科技有限公司 | 基于缓存的数据持久化存储方法及装置 |
US9659060B2 (en) | 2012-04-30 | 2017-05-23 | International Business Machines Corporation | Enhancing performance-cost ratio of a primary storage adaptive data reduction system |
CN106775498A (zh) * | 2017-01-23 | 2017-05-31 | 深圳国泰安教育技术股份有限公司 | 一种缓存数据同步方法及系统 |
CN107220348A (zh) * | 2017-05-27 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种基于Flume与Alluxio的数据收集方法 |
CN107704573A (zh) * | 2017-09-30 | 2018-02-16 | 山东浪潮通软信息科技有限公司 | 一种与业务耦合的智能缓存方法 |
CN107786668A (zh) * | 2017-11-09 | 2018-03-09 | 成都知道创宇信息技术有限公司 | 一种基于cdn网络的权重缓存网站方法 |
CN107818019A (zh) * | 2016-09-12 | 2018-03-20 | 北京百度网讯科技有限公司 | 用于机器人操作系统的数据同步方法和装置 |
CN108123979A (zh) * | 2016-11-30 | 2018-06-05 | 天津易遨在线科技有限公司 | 一种在线交流服务器集群架构 |
CN108241671A (zh) * | 2016-12-26 | 2018-07-03 | 北京京东尚科信息技术有限公司 | 业务处理方法和装置 |
CN108804579A (zh) * | 2018-05-24 | 2018-11-13 | 北京奇艺世纪科技有限公司 | 应用服务系统及数据一致性控制方法 |
WO2019015490A1 (zh) * | 2017-07-19 | 2019-01-24 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备及系统 |
CN109840789A (zh) * | 2017-11-27 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 基于实体门店的互联网导购与分佣系统 |
CN110019345A (zh) * | 2017-12-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置、系统及介质 |
CN110363180A (zh) * | 2019-07-24 | 2019-10-22 | 厦门云上未来人工智能研究院有限公司 | 一种统计陌生人人脸重复出现的方法和装置以及设备 |
CN111475316A (zh) * | 2020-04-14 | 2020-07-31 | 中国人民解放军战略支援部队信息工程大学 | 拟态构造云服务系统持久化操作方法、装置、设备和系统 |
CN112685335A (zh) * | 2020-12-28 | 2021-04-20 | 湖南博匠信息科技有限公司 | 数据存储系统 |
CN112835917A (zh) * | 2021-01-28 | 2021-05-25 | 山东浪潮通软信息科技有限公司 | 一种基于血缘关系分布的数据缓存方法、系统 |
CN113641689A (zh) * | 2021-07-22 | 2021-11-12 | 上海云轴信息科技有限公司 | 基于轻量级数据库的数据处理方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239661A1 (en) * | 2006-03-28 | 2007-10-11 | Sun Microsystems, Inc. | Systems and methods for a distributed in-memory database and distributed cache |
CN101329685A (zh) * | 2008-07-30 | 2008-12-24 | 烽火通信科技股份有限公司 | 一种家庭网关上内存数据库的实现方法 |
-
2010
- 2010-11-29 CN CN 201010566752 patent/CN102024032A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239661A1 (en) * | 2006-03-28 | 2007-10-11 | Sun Microsystems, Inc. | Systems and methods for a distributed in-memory database and distributed cache |
CN101329685A (zh) * | 2008-07-30 | 2008-12-24 | 烽火通信科技股份有限公司 | 一种家庭网关上内存数据库的实现方法 |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9177028B2 (en) | 2012-04-30 | 2015-11-03 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
US9659060B2 (en) | 2012-04-30 | 2017-05-23 | International Business Machines Corporation | Enhancing performance-cost ratio of a primary storage adaptive data reduction system |
US9767140B2 (en) | 2012-04-30 | 2017-09-19 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
CN103425462B (zh) * | 2012-05-14 | 2016-12-14 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN103425462A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
US8898121B2 (en) | 2012-05-29 | 2014-11-25 | International Business Machines Corporation | Merging entries in a deduplication index |
US9305005B2 (en) | 2012-05-29 | 2016-04-05 | Interational Business Machines Corporation | Merging entries in a deduplication index |
CN103607476B (zh) * | 2013-12-05 | 2017-05-17 | 上海普坤信息科技有限公司 | 海量消息的分布式多阶段持久化的系统及方法 |
CN103607476A (zh) * | 2013-12-05 | 2014-02-26 | 上海普坤信息科技有限公司 | 海量消息的分布式多阶段持久化的系统及方法 |
CN104750740A (zh) * | 2013-12-30 | 2015-07-01 | 北京新媒传信科技有限公司 | 数据更新的方法及装置 |
CN103856353B (zh) * | 2014-03-06 | 2018-01-26 | 上海爱数信息技术股份有限公司 | 一种业务日志数据访问与统计分析的方法及装置 |
CN103856353A (zh) * | 2014-03-06 | 2014-06-11 | 上海爱数软件有限公司 | 一种业务日志数据访问与统计分析的方法及装置 |
CN104866339A (zh) * | 2015-04-27 | 2015-08-26 | 努比亚技术有限公司 | Fota数据的分布式持久化管理方法、系统和装置 |
CN104866339B (zh) * | 2015-04-27 | 2019-08-16 | 努比亚技术有限公司 | Fota数据的分布式持久化管理方法、系统和装置 |
CN105550319A (zh) * | 2015-12-12 | 2016-05-04 | 天津南大通用数据技术股份有限公司 | 一种集群一致性服务高并发下持久化的优化方法 |
CN105549909B (zh) * | 2015-12-12 | 2019-03-12 | 天津南大通用数据技术股份有限公司 | 一种集群序列类一致性信息持久化的优化方法 |
CN105550319B (zh) * | 2015-12-12 | 2019-06-25 | 天津南大通用数据技术股份有限公司 | 一种集群一致性服务高并发下持久化的优化方法 |
CN105549909A (zh) * | 2015-12-12 | 2016-05-04 | 天津南大通用数据技术股份有限公司 | 一种集群序列类一致性信息持久化的优化方法 |
CN105741010A (zh) * | 2016-01-13 | 2016-07-06 | 天津中科智能识别产业技术研究院有限公司 | 一种面向灾害数据处理模型 |
CN105718291B (zh) * | 2016-01-25 | 2020-07-07 | 山东蓝创网络技术有限公司 | 一种混合桌面应用的多级缓存加速方法 |
CN105718291A (zh) * | 2016-01-25 | 2016-06-29 | 山东蓝创网络技术有限公司 | 一种混合桌面应用的多级缓存加速方法 |
CN105912653A (zh) * | 2016-04-08 | 2016-08-31 | 广东凯通软件开发有限公司 | 数据快速订阅方法及装置 |
CN107818019B (zh) * | 2016-09-12 | 2019-01-15 | 北京百度网讯科技有限公司 | 用于机器人操作系统的数据同步方法和装置 |
CN107818019A (zh) * | 2016-09-12 | 2018-03-20 | 北京百度网讯科技有限公司 | 用于机器人操作系统的数据同步方法和装置 |
CN108123979A (zh) * | 2016-11-30 | 2018-06-05 | 天津易遨在线科技有限公司 | 一种在线交流服务器集群架构 |
CN108241671A (zh) * | 2016-12-26 | 2018-07-03 | 北京京东尚科信息技术有限公司 | 业务处理方法和装置 |
CN106682193A (zh) * | 2016-12-29 | 2017-05-17 | 北京奇虎科技有限公司 | 基于缓存的数据持久化存储方法及装置 |
CN106775498B (zh) * | 2017-01-23 | 2020-05-12 | 深圳国泰安教育技术有限公司 | 一种缓存数据同步方法及系统 |
CN106775498A (zh) * | 2017-01-23 | 2017-05-31 | 深圳国泰安教育技术股份有限公司 | 一种缓存数据同步方法及系统 |
CN107220348A (zh) * | 2017-05-27 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种基于Flume与Alluxio的数据收集方法 |
WO2019015490A1 (zh) * | 2017-07-19 | 2019-01-24 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备及系统 |
CN107704573A (zh) * | 2017-09-30 | 2018-02-16 | 山东浪潮通软信息科技有限公司 | 一种与业务耦合的智能缓存方法 |
CN107786668A (zh) * | 2017-11-09 | 2018-03-09 | 成都知道创宇信息技术有限公司 | 一种基于cdn网络的权重缓存网站方法 |
CN109840789A (zh) * | 2017-11-27 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 基于实体门店的互联网导购与分佣系统 |
CN110019345A (zh) * | 2017-12-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置、系统及介质 |
CN108804579B (zh) * | 2018-05-24 | 2021-04-30 | 北京奇艺世纪科技有限公司 | 应用服务系统及数据一致性控制方法 |
CN108804579A (zh) * | 2018-05-24 | 2018-11-13 | 北京奇艺世纪科技有限公司 | 应用服务系统及数据一致性控制方法 |
CN110363180A (zh) * | 2019-07-24 | 2019-10-22 | 厦门云上未来人工智能研究院有限公司 | 一种统计陌生人人脸重复出现的方法和装置以及设备 |
CN111475316A (zh) * | 2020-04-14 | 2020-07-31 | 中国人民解放军战略支援部队信息工程大学 | 拟态构造云服务系统持久化操作方法、装置、设备和系统 |
CN111475316B (zh) * | 2020-04-14 | 2023-01-24 | 中国人民解放军战略支援部队信息工程大学 | 拟态构造云服务系统持久化操作方法、装置、设备和系统 |
CN112685335A (zh) * | 2020-12-28 | 2021-04-20 | 湖南博匠信息科技有限公司 | 数据存储系统 |
CN112685335B (zh) * | 2020-12-28 | 2022-07-15 | 湖南博匠信息科技有限公司 | 数据存储系统 |
CN112835917A (zh) * | 2021-01-28 | 2021-05-25 | 山东浪潮通软信息科技有限公司 | 一种基于血缘关系分布的数据缓存方法、系统 |
CN113641689A (zh) * | 2021-07-22 | 2021-11-12 | 上海云轴信息科技有限公司 | 基于轻量级数据库的数据处理方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102024032A (zh) | 一种基于Erlang的分布式数据缓存和持久化的方法和系统 | |
US11882054B2 (en) | Terminating data server nodes | |
CN101493826B (zh) | 基于web应用的数据库系统及其数据管理方法 | |
CN103930875B (zh) | 用于加速业务数据处理的软件虚拟机 | |
US20200084274A1 (en) | Systems and methods for efficient distribution of stored data objects | |
CN102523285B (zh) | 一种基于对象分布式文件系统的存储缓存方法 | |
CN102741843B (zh) | 从数据库中读取数据的方法及装置 | |
US20170220271A1 (en) | Thread groups for pluggable database connection consolidation in numa environment | |
CN102063406B (zh) | 用于多核处理器的网络共享Cache及其目录控制方法 | |
CN103246612B (zh) | 一种数据缓存的方法及装置 | |
US20110072217A1 (en) | Distributed Consistent Grid of In-Memory Database Caches | |
CN101887398B (zh) | 一种动态提高服务器输入输出吞吐量的方法和系统 | |
JP2013037718A (ja) | メモリページ管理 | |
CN100437590C (zh) | 预取对象的方法 | |
CN104471523B (zh) | 计算机系统及其控制方法 | |
CN104679898A (zh) | 一种大数据访问方法 | |
JP2001508208A (ja) | データ共用方法およびコンピュータアーキテクチャ | |
CN103246616A (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
CN103617131A (zh) | 一种实现数据缓存的方法 | |
Morari et al. | Scaling irregular applications through data aggregation and software multithreading | |
CN111930740A (zh) | 一种游戏数据的处理方法、装置、服务器及存储介质 | |
CN102163231A (zh) | 数据收集方法和装置 | |
CN109710668B (zh) | 一种多源异构数据访问中间件构建方法 | |
CN102521028B (zh) | 一种分布式环境下的事务内存系统 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20110420 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |