本发明涉及分布式数据共享技术,特别涉及一种基于消息中间件实现的数据对象共享的方法。
背景技术:
1、一般的分布式系统中数据对象共享的方法有:(1)数据对象生产服务a通过网络把数据对象拷贝分享到其他会用到此对象的服务b,在数据对象产生变更时服务a通过全量或增量的方式把数据推送到服务b;(2)数据对象生产服务a把数据对象直接存储在内存缓存中,使用此数据对象的服务b每次都从内存缓存加载,服务b不缓存数据对象。
2、但是这两种方案依然存在着较大问题,方案1适合在一个服务创建并修改数据对象其他服务只读这个数据对象的情况,如果多个服务需要竞争修改同一个数据对象时会出现脏数据覆盖的情况,可靠性得不到保证,而且服务启动或扩容时需要把所有共享数据对象加载到新扩容的服务节点上造成启动慢、内存高,方案2每次都从内存缓存中加载数据,对性能要求高的系统中就不是很合适,因此,本申请提供了一种基于消息中间件实现的数据对象共享的方法来满足需求。
技术实现思路
1、本发明要解决的技术问题是提供一种基于消息中间件实现的数据对象共享的方法以解决现有的分享效率较低以及服务扩容比较麻烦的问题。
2、为解决上述技术问题,本发明提供如下技术方案:
3、一种基于消息中间件实现的数据对象共享的方法,包括以下步骤:包括以下步骤:
4、s1,消息中间件服务端启动时从持久化数据中加载所有数据到内存;
5、s2,消息中间件客户端通过网络连接到服务端;
6、s3,消息中间件处理接收到的网络事件,包括读、写、订阅数据;
7、s4,写入数据时要通过该数据对应的版本来判定是否写入合法,写入成功后给订阅该数据的客户端发布推送;
8、在一种可能的实现方式中,所述s1中的消息中间件具有以下特性:可选开启数据持久化能力;有集群功能,通过自动选举方式选出主节点;有读写分离能力,在并发写入时具有脏数据裁判写失败能力;有发布/订阅数据变更能力;由客户端/服务端2部分组成,客户端服务端之间通过定制的验证、读写、发布订阅协议格式通信,服务a通过消息中间件客户端从服务端加载数据到本地内存,消息中间件客户端自动维护数据对象的更新,服务a更改本地数据时自动写入到消息中间件服务端进行数据可修改判定,成功写入服务端时通知其他有订阅该数据的服务b、c、d。
9、在一种可能的实现方式中,所述s3还包括以下步骤:
10、s31、服务a通过消息中间件客户端读取数据对象到内存,并对该对象发起订阅;
11、s32、消息中间件客户端收到服务端发布数据对象变更时自动更新本地内存;
12、s33、服务a修改本地数据对象时通过消息中间件同步更新消息中间件服务端,并返回成功失败。
13、在一种可能的实现方式中,所述s4还包括以下步骤:
14、s41、消息中间件服务端停止时,通知各在线的消息中间件客户端开始停服;
15、s42、消息中间件客户端确认停服并写入所有修改;
16、s43、消息中间件服务端做数据持久化操作。
17、本发明与现有技术相比,至少具有如下有益效果:
18、通过在消息中间件服务端启动时从持久化数据中加载所有数据到内存;并将消息中间件客户端通过网络连接到服务端,随后将消息中间件处理接收到的网络事件,包括读、写、订阅数据,同时将写入数据时要通过该数据对应的版本来判定是否写入合法,写入成功后给订阅该数据的客户端发布推送,此设计可以解决现有的分布式系统中数据对象共享的方法的缺点,且保留了现有的分布式系统中数据对象共享的方法中的优点,并使数据共享更加稳定准确。
1.一种基于消息中间件实现的数据对象共享的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于消息中间件实现的数据对象共享的方法,其特征在于,所述s1中的消息中间件具有以下特性:可选开启数据持久化能力;有集群功能,通过自动选举方式选出主节点;有读写分离能力,在并发写入时具有脏数据裁判写失败能力;有发布/订阅数据变更能力;由客户端/服务端2部分组成,客户端服务端之间通过定制的验证、读写、发布订阅协议格式通信,服务a通过消息中间件客户端从服务端加载数据到本地内存,消息中间件客户端自动维护数据对象的更新,服务a更改本地数据时自动写入到消息中间件服务端进行数据可修改判定,成功写入服务端时通知其他有订阅该数据的服务b、c、d。
3.根据权利要求1所述的一种基于消息中间件实现的数据对象共享的方法,其特征在于,所述s3还包括以下步骤:
4.根据权利要求1所述的一种基于消息中间件实现的数据对象共享的方法,其特征在于,所述s4还包括以下步骤: