System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及互联网,尤其涉及数据获取方法及相关产品。
技术介绍
1、高并发环境下,大量的外部请求涌向数据源(如数据库db)以求获取数据,这致使db容易因负载过大而崩溃,为解决这一问题,分布式缓存机制应运而生。简而言之,分布式缓存是一个在不同服务器之间共享数据的系统,如果应用程序需要的数据已经被分布在服务器集群共用的缓存上,则不需要再访问db或其他数据源,在缓存中搜索数据并返回给应用程序即可,从而大大减少了db的i/o负载。
2、然而现有方式中,应用程序的线程所请求的数据不在缓存中时,分布式缓存系统需要针对每个请求都做一遍,从db中查询出所需数据返回给应用程序的操作,又因db部署在磁盘上而对数据的处理速度慢,这导致了业务突发高峰期时,分布式缓存系统对各请求的响应效率被大大降低。
3、针对于此,迫切需要提供有效的解决方案。
技术实现思路
1、本申请实施例提供了数据获取方法及相关产品,用于提高分布式缓存系统对并发的数据获取请求的响应效率。
2、本申请实施例第一方面提供一种数据获取方法,包括:
3、针对多个客户端在预设时段内向分布式缓存发起的相同数据获取线程,若所述数据获取线程请求获取的目标数据不在所述分布式缓存内,将至少两个所述数据获取线程分配给同一目标服务器;
4、从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,运行所述数据查询线程到数据源中查找所述目标数据,并将查到的所述目标数据写入所述目标服
5、将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程。
6、可选地,所述从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,包括:
7、驱动所述目标服务器分配到的至少两个所述数据获取线程抢夺资源锁,并将首个抢到所述资源锁的所述数据获取线程作为数据查询线程。
8、可选地,所述从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,包括:
9、比较所述目标服务器分配到的各所述数据获取线程的等级,并将所述等级排在首位的所述数据获取线程作为数据查询线程。
10、可选地,所述将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程,包括:
11、设置所述目标服务器的内存处于数据共享模式;
12、将所述目标服务器的内存中存有的所述目标数据,同时分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程。
13、可选地,所述将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程,包括:
14、设置所述目标服务器的内存处于数据共享模式;
15、按所述目标服务器中各所述数据获取线程间的等级比较结果,将所述内存存有的所述目标数据先后分享给所述目标服务器中的其他所述数据获取线程。
16、可选地,将查到的所述目标数据写入所述目标服务器的内存之后,所述方法还包括:
17、将所述目标服务器的内存中存有的所述目标数据写入所述分布式缓存;
18、通知所述目标服务器分配到的其他所述数据获取线程中的部分线程从所述内存中获取所述目标数据,另一部分线程从所述分布式缓存中获取所述目标数据。
19、可选地,将查到的所述目标数据写入所述目标服务器的内存之后,所述方法还包括:
20、将所述目标服务器的内存中存有的所述目标数据写入所述分布式缓存,所述分布式缓存通过所述目标服务器和除所述目标服务器之外的其他服务器构成;
21、若所述其他服务器同样分配有所述数据获取线程,指示所述其他服务器端的所述数据获取线程从所述分布式缓存中获取所述目标数据。
22、本申请实施例第二方面提供一种电子设备,包括:
23、中央处理器,存储器以及输入输出接口;
24、所述存储器为短暂存储存储器或持久存储存储器;
25、所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
26、本申请实施例第三方面提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
27、本申请实施例第四方面提供一种包含指令或计算机程序的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
28、从以上技术方案可以看出,本申请实施例至少具有以下优点:
29、面对多个数据获取线程预获得同一数据的请求,本申请实施例将多个数据获取线程分配给同一目标服务器,及选择其中一线程作为数据查询线程从数据源中加载目标数据到目标服务器的内存,可避免不同服务器的多个同需求线程去重复查询数据源造成资源损耗。此外,促使目标服务器的内存将目标数据共享给同属于该目标服务器的数据获取线程,可减少(如同一服务器的)多个线程重复查询分布式缓存的次数和耗时,提高大量请求并发获取数据时的响应效率。
本文档来自技高网...【技术保护点】
1.一种数据获取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,包括:
3.根据权利要求1所述的方法,其特征在于,所述从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,包括:
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程,包括:
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程,包括:
6.根据权利要求1至3中任一项所述的方法,其特征在于,将查到的所述目标数据写入所述目标服务器的内存之后,所述方法还包括:
7.根据权利要求1至3中任一项所述的方法,其特征在于,将查到的所述目标数据写入所述目标服务器的内存之后,所述方法还包括:
8.一种
9.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至7中任意一项所述的方法。
10.一种包含指令或计算机程序的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求1至7中任意一项所述的方法。
...【技术特征摘要】
1.一种数据获取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,包括:
3.根据权利要求1所述的方法,其特征在于,所述从所述目标服务器分配到的至少两个所述数据获取线程中选择一个作为数据查询线程,包括:
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询线程之外的其他所述数据获取线程,包括:
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述目标服务器的内存中存有的所述目标数据,分享给所述目标服务器中除所述数据查询...
【专利技术属性】
技术研发人员:郭强,
申请(专利权)人:腾讯音乐娱乐科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。