一种分布式高并发的消息匹配方法与流程

文档序号:28728650发布日期:2022-01-29 16:09阅读:63来源:国知局

1.本发明涉及高并发服务端技术领域,更具体地说,本发明涉及一种分布式高并发的消息匹配方法。


背景技术:

2.在同时或者极短时间内,有大量请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应反馈,服务端比如同时开启进程数,能同时运行的线程数、网络连接数、cpu运算、i/o、内存都是有限,所以服务端能同时处理请求也是有限的。高并发本质就是资源的有限性,如:系统在线人数10w,并不意味系统并发用户是10w,可能存在10w用户同时在首页查看静态文章,并未对服务器进行发送请求那么高并发数是根据系统真实用户数并发送请求需要服务端耗费资源进行处理的请求且服务端只能开启100个线程,恰好1个线程处理一个请求需要耗时1s,那么服务端1s只能处理100个请求。
3.其数据库在较大数据的访问下,数据大量读取,使其数据存入压力同步增大,对于数据的安全性无法得到有效的保障,多余请求无法处理,作为数据的高并发而言,其数据的处理已经无法实现实时的处理,同时其在大量数据的持续积压下,其数据库在持续的高访问量下,对于数据库服务器的压力冲击很大,响应速度也会下降,致使处理器针对于高并发的消息匹配效率进一步受到制约,故而需要对此优化处理。


技术实现要素:

4.为了克服现有技术的上述缺陷,本发明提供了一种分布式高并发的消息匹配方法,本发明所要解决的技术问题是:在高并发现象为出现时,目前的服务端难以有效实现不停机维护,同时针对于高并发状态下,难以有效的稳定处理,使其受到单核最大线程数制约,对于高并发的处理效率难以得到有效配合,且数据库的响应速度受到压力冲击大,造成响应减缓,制约消息匹配的效率的问题。
5.为实现上述目的,本发明提供如下技术方案:一种分布式高并发的消息匹配方法,包括以下步骤:
6.s1、通过murmurhash计算方式实现hash计算,建立基于处理器下层的访问数据缓存,通过java的treemap来实现缓存消息呈线性队列排列。
7.s2、建立基于处理器与mysql之间数据缓存的中间层,建立基于中间层位于mysql内的搜索引擎。
8.s3、所述处理器下层的线性队列数据缓存引入漏桶算法,实现突发流量的平滑限流策略。
9.s4、建立多个mysql下层的数据备份服务器,多个数据备份服务器均装载独立的mysql。
10.s5、在多个所述数据备份服务器所对应的mysql均建立中间层并与同一处理器连接。
11.s6、多个数据备份服务器的中间层之间互相检索,并保持缓存数据的差异性。
12.s7、所述平滑限流策略所拒绝的信息均引入备份处理器,实现数据限流的双桶分流处理。
13.作为本发明的进一步方案:所述备份处理器与主处理器对应的多个中间层连接,所述备份处理器的下层同步搭建次级线性队列数据缓存并引入漏桶算法。
14.作为本发明的进一步方案:所述缓存数据的差异性为基于缓存数据的不重复之上条件下进行优先级依次处理,以保持缓存容量处于最低百分之九十的占用且不清除。
15.作为本发明的进一步方案:所述漏桶算法包括以下步骤:
16.a:依据处理器下层的数据缓存设定线性队列数据缓存的最大容量。
17.b:依据处理器的最大并行处理量及速度设定处理器下层的最大数据缓存漏出速度。
18.c:依据数据缓存处理速度与时间间隔的乘积获取数据总处理量。
19.d:判断线性队列数据缓存容量余量,若未满则继续录入数据,若容量满后则拒绝数据录入,并使其数据存入备份处理器对应的次级线性队列数据缓存中进行同步处理。
20.作为本发明的进一步方案:所述memcache工作流程包括:
21.a:检查客户端的请求数据是否在memcache中。
22.b:如有,直接把请求数据返回,不再对数据库进行任何操作,如果请求的数据不在memcache中,则访问数据库,通过建立的搜索引擎从数据库中获取数据并返回给客户端,同时把数据缓存一份到memcache中。
23.作为本发明的进一步方案:
24.本发明的有益效果在于:所述中间层包括由livejournal的bradfitzpatrick开发出的分布式的高速缓存系统memcache。
25.本发明通过采用线性的消息队列排列方式,使其在出现数据无法即时处理的过程中实现数据的队列化依次处理,保障每个数据均能被处理,且配合漏桶算法的方式,使其处理器下层的缓存能够进行自适应分配,采用备份处理器并行处理余量的方式,使其在长时间的使用及调试状态下实现两个处理器的切换维护,同时在高并发消息的处理过程中同步处理,形成双桶策略,配合对数据库的多次备份服务器配合,使其数据不易丢失,且能够在多个中间层内部缓存数据不重复作用下提升两个处理器的数据读取速度,采用多个相同数据源同步读取不同数据的方式,实现高访问量的响应速度得到保障,对数据库适应高并发消息匹配的高读取状态下的稳定性有着决定性作用。
具体实施方式
26.下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.实施例1:
28.一种分布式高并发的消息匹配方法,包括以下步骤:
29.s1、通过murmurhash计算方式实现hash计算,建立基于处理器下层的访问数据缓
存,通过java的treemap来实现缓存消息呈线性队列排列。
30.s2、建立基于处理器与mysql之间数据缓存的中间层,建立基于中间层位于mysql内的搜索引擎。
31.s3、所述处理器下层的线性队列数据缓存引入漏桶算法,实现突发流量的平滑限流策略。
32.s4、建立多个mysql下层的数据备份服务器,多个数据备份服务器均装载独立的mysql。
33.s5、在多个所述数据备份服务器所对应的mysql均建立中间层并与同一处理器连接。
34.s6、多个数据备份服务器的中间层之间互相检索,并保持缓存数据的差异性。
35.s7、所述平滑限流策略所拒绝的信息均引入备份处理器,实现数据限流的双桶分流处理。
36.通过建立处理器下层的访问数据缓存,使其能够针对高并发消息有着很好的缓冲效果,同时建立线性队列策略方式,使其在高并发分布式环境下,可以异步处理请求,从而缓解系统的压力。
37.通过建立基于中间层并位于mysql内的搜索引擎,使其能够实现中间层中位于mysql数据库内的数据快速访问,同步进行中间层缓存数据的横向检索,使中间层缓存的数据量得到拓展,有利于提高整体数据的响应效率。
38.同步采用这种框架的模式,可以依据高并发的需求进行两个以上处理器的横向拓展,整体框架的性能变化更为多样化,能够依据需要扩展其高并发下的承受能力。
39.在其他实施例中,所述备份处理器与主处理器对应的多个中间层连接,所述备份处理器的下层同步搭建次级线性队列数据缓存并引入漏桶算法。
40.通过采用备份处理器与多个对应的中间层连接,使其备份处理器与主处理器形成在优先级明确条件下的资源共享,使其双核状态下的资源调取具备一定的保障性能;同时采用搭建次级线性队列数据缓存并引入漏桶算法的方式,使其形成与主链路相连接的分支,形成能够对请求数据进行高效处理的双桶策略,实现在非高并发状态下的单核即时处理,以及在高并发状态下持续到主线性队列满载后进行分支分流处理。
41.在其他实施例中,所述缓存数据的差异性为基于缓存数据的不重复条件下进行优先级依次处理,以以保持缓存容量处于最低百分之九十的占用且不清除。
42.在其他实施例中,所述漏桶算法包括以下步骤:
43.a:依据处理器下层的数据缓存设定线性队列数据缓存的最大容量;
44.b:依据处理器的最大并行处理量及速度设定处理器下层的最大数据缓存漏出速度;
45.c:依据数据缓存处理速度与时间间隔的乘积获取数据总处理量;
46.d:判断线性队列数据缓存容量余量,若未满则继续录入数据,若容量满后则拒绝数据录入,并使其数据存入备份处理器对应的次级线性队列数据缓存中进行同步处理。
47.通过采用漏桶算法,能强行限制数据的传输速率,使数据传输更为平稳,从而降低高并发条件下对服务端的压力,提高服务端的整体稳定性。
48.在其他实施例中,所述中间层包括由livejournal的bradfitzpatrick开发出的分
布式的高速缓存系统memcache。
49.在其他实施例中,所述memcache工作流程包括:
50.a:检查客户端的请求数据是否在memcache中;
51.b:如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcache中,则访问数据库,通过建立的搜索引擎从数据库中获取数据并返回给客户端,同时把数据缓存一份到memcache中。
52.通过设立中间层memcache以在内存里维护一个统一的巨大的hash表,能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结将数据调用到内存,然后从内存中读取,从而大大提高读取速度。
53.实施例2:
54.一种分布式高并发的消息匹配方法,包括以下步骤:
55.s1、通过murmurhash计算方式实现hash计算,建立基于处理器下层的访问数据缓存,通过java的treemap来实现缓存消息呈线性队列排列。
56.s2、建立基于处理器与mysql之间数据缓存的中间层,建立基于中间层位于mysql内的搜索引擎。
57.s3、所述处理器下层的线性队列数据缓存引入漏桶算法,实现突发流量的平滑限流策略。
58.s4、建立多个mysql下层的数据备份服务器,多个数据备份服务器均装载独立的mysql。
59.s5、在多个所述数据备份服务器所对应的mysql均建立中间层并与同一处理器连接。
60.s6、多个数据备份服务器的中间层之间互相检索,并保持缓存数据的差异性。
61.所述缓存数据的差异性为基于缓存数据的不重复之上条件下进行优先级依次处理,以保持缓存容量处于最低百分之九十的占用且不清除。
62.作为本发明的进一步方案:所述漏桶算法包括以下步骤:
63.a:依据处理器下层的数据缓存设定线性队列数据缓存的最大容量。
64.b:依据处理器的最大并行处理量及速度设定处理器下层的最大数据缓存漏出速度。
65.c:依据数据缓存处理速度与时间间隔的乘积获取数据总处理量。
66.d:判断线性队列数据缓存容量余量,若未满则继续录入数据,若容量满后则拒绝数据录入,并使其数据存入备份处理器对应的次级线性队列数据缓存中进行同步处理。
67.所述memcache工作流程包括:
68.a:检查客户端的请求数据是否在memcache中。
69.b:如有,直接把请求数据返回,不再对数据库进行任何操作,如果请求的数据不在memcache中,则访问数据库,通过建立的搜索引擎从数据库中获取数据并返回给客户端,同时把数据缓存一份到memcache中。
70.本发明的有益效果在于:所述中间层包括由livejournal的bradfitzpatrick开发出的分布式的高速缓存系统memcache。
71.实施例3:
72.一种分布式高并发的消息匹配方法,包括以下步骤:
73.s1、通过murmurhash计算方式实现hash计算,建立基于处理器下层的访问数据缓存,通过java的treemap来实现缓存消息呈线性队列排列。
74.s2、建立基于处理器与mysql之间数据缓存的中间层,建立基于中间层位于mysql内的搜索引擎。
75.s3、所述处理器下层的线性队列数据缓存引入漏桶算法,实现突发流量的平滑限流策略。
76.s4、所述平滑限流策略所拒绝的信息均引入备份处理器,实现数据限流的双桶分流处理。
77.所述备份处理器与主处理器对应的中间层连接,所述备份处理器的下层同步搭建次级线性队列数据缓存并引入漏桶算法。
78.作为本发明的进一步方案:所述漏桶算法包括以下步骤:
79.a:依据处理器下层的数据缓存设定线性队列数据缓存的最大容量。
80.b:依据处理器的最大并行处理量及速度设定处理器下层的最大数据缓存漏出速度。
81.c:依据数据缓存处理速度与时间间隔的乘积获取数据总处理量。
82.d:判断线性队列数据缓存容量余量,若未满则继续录入数据,若容量满后则拒绝数据录入,并使其数据存入备份处理器对应的次级线性队列数据缓存中进行同步处理。
83.所述memcache工作流程包括:
84.a:检查客户端的请求数据是否在memcache中。
85.b:如有,直接把请求数据返回,不再对数据库进行任何操作,如果请求的数据不在memcache中,则访问数据库,通过建立的搜索引擎从数据库中获取数据并返回给客户端,同时把数据缓存一份到memcache中。
86.本发明的有益效果在于:所述中间层包括由livejournal的bradfitzpatrick开发出的分布式的高速缓存系统memcache。
87.综上可知,本发明:在基于处理器下层实现缓存消息呈线性队列排列设立,与双桶策略的配合数据备份库多缓存节点读取并缓存不同数据的方式,其可采用任意方式单独采用,其整体的配合效果及性能较为突出,对于实现系统性的高并发消息应对匹配有着针对性的优化效果。
88.最后应说明的几点是:虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明的基础上,以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1