技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于本地内存的消息限流方法、装置及设备与流程  >  正文

一种基于本地内存的消息限流方法、装置及设备与流程

  • 国知局
  • 2024-08-02 14:49:42

本技术涉及计算机,尤其涉及一种基于本地内存的消息限流方法、装置及设备。

背景技术:

1、针对大量接收或发送同一长链接消息的场景,多个客户端会在短时间内高频发送并接收长链接消息,造成前端接收数据过于频繁。由于客户端浏览器硬件性能的限制与前端页面渲染超时,会导致页面的卡顿。因此通常需要针对后端接收到的消息进行限流后再推送至前端。

2、目前对于分布式后端服务的限流方法主要依赖于远程字典服务(remotedictionary server,redis),基于分布式锁、令牌桶等方法,使每个服务器根据拿到的令牌数量来控制单位时间段内的执行次数。现有通过分布式锁、令牌桶的方法在并发场景下消耗的计算资源较大,会对分布式缓存造成较大的负载压力。

技术实现思路

1、有鉴于此,本技术提供了一种基于本地内存的消息限流方法、装置及设备,以便在实现消息限流的同时,降低计算资源的消耗。

2、第一方面,本技术提供了一种基于本地内存的消息限流方法,所述方法包括:

3、接收上游服务发送的消息发送请求,所述消息发送请求中包括待发送消息;

4、确定所述待发送消息的目标标识;

5、响应于所述历史键值对集合中包括与所述目标标识相匹配的目标键值对,获取所述目标键值对,所述目标键值对中的值value包括第一线程安全标识,所述第一线程安全标识表示是否获取到锁;

6、响应于所述第一线程安全标识表示为释放锁,基于乐观锁对所述第一线程安全标识进行处理,确定第二线程安全标识;

7、响应于所述第二线程安全标识表示为获取到锁,调用下游服务发送所述待发送消息。

8、在一种可能的实现方式中,所述value中还包括时间戳;在基于乐观锁对所述第一线程安全标识进行处理之前,所述方法还包括:

9、基于所述value中的时间戳和当前时间,确定限流时间间隔;

10、响应于所述限流时间间隔大于预设时间间隔,执行后续步骤。

11、在一种可能的实现方式中,所述方法还包括:

12、响应于所述历史键值对集合中不包括与所述目标标识相匹配的目标键值对,基于所述目标标识和表示释放锁的线程安全标识,确定所述待发送消息的键值对;

13、调用下游服务发送所述待发送消息。

14、在一种可能的实现方式中,所述基于所述目标标识和表示释放锁的线程安全标识,确定所述待发送消息的键值对,包括:

15、基于所述目标标识确定所述键值对的关键字key;

16、基于所述表示释放锁的线程安全标识和当前时间确定所述键值对的值value。

17、在一种可能的实现方式中,所述确定所述待发送消息的目标标识,包括:

18、基于一致性哈希算法对所述消息发送请求进行处理,确定所述目标标识。

19、在一种可能的实现方式中,所述基于乐观锁对所述第一线程安全标识进行处理,确定第二线程安全标识,包括:

20、基于所述乐观锁获取所述第一线程安全标识,当所述第一线程安全标识与预期值相同时,将所述第一线程安全标识修改为获取到锁的标识;当所述第一线程安全标识与预期值不同时,保持所述第一线程安全标识。

21、在一种可能的实现方式中,所述方法还包括:

22、获取所述历史键值对集合中每个历史键值对中的时间戳;

23、基于所述历史键值对的时间戳和当前时间,确定历史时间间隔;

24、当所述历史时间间隔大于预设值时,删除所述历史键值对。

25、在一种可能的实现方式中,所述目标键值对的结构为sync.map。

26、第二方面,本技术提供了一种基于本地内存的消息限流装置,所述装置包括:

27、接收模块,用于接收上游服务发送的消息发送请求,所述消息发送请求中包括待发送消息;

28、第一确定模块,用于确定所述待发送消息的目标标识;

29、获取模块,用于响应于所述历史键值对集合中包括与所述目标标识相匹配的目标键值对,获取所述目标键值对,所述目标键值对中的值value包括第一线程安全标识,所述第一线程安全标识表示是否获取到锁;

30、处理模块,用于响应于所述第一线程安全标识表示为释放锁,基于乐观锁对所述第一线程安全标识进行处理,确定第二线程安全标识;

31、调用模块,用于响应于所述第二线程安全标识表示为获取到锁,调用下游服务发送所述待发送消息。

32、在一种可能的实现方式中,所述value中还包括时间戳;在基于乐观锁对所述第一线程安全标识进行处理之前,所述装置还包括:第二确定模块,用于基于所述value中的时间戳和当前时间,确定限流时间间隔;响应于所述限流时间间隔大于预设时间间隔,执行后续步骤。

33、在一种可能的实现方式中,所述获取模块,还用于响应于所述历史键值对集合中不包括与所述目标标识相匹配的目标键值对,基于所述目标标识和表示释放锁的线程安全标识,确定所述待发送消息的键值对;

34、所述调用模块,还用于调用下游服务发送所述待发送消息。

35、在一种可能的实现方式中,所述获取模块,具体用于基于所述目标标识确定所述键值对的关键字key;基于所述表示释放锁的线程安全标识和当前时间确定所述键值对的值value。

36、在一种可能的实现方式中,所述第一确定模块,具体用于基于一致性哈希算法对所述消息发送请求进行处理,确定所述目标标识。

37、在一种可能的实现方式中,所述处理模块,具体用于基于所述乐观锁获取所述第一线程安全标识,当所述第一线程安全标识与预期值相同时,将所述第一线程安全标识修改为获取到锁的标识;当所述第一线程安全标识与预期值不同时,保持所述第一线程安全标识。

38、在一种可能的实现方式中,所述装置还包括:删除单元,用于获取所述历史键值对集合中每个历史键值对中的时间戳;基于所述历史键值对的时间戳和当前时间,确定历史时间间隔;当所述历史时间间隔大于预设值时,删除所述历史键值对。

39、在一种可能的实现方式中,所述目标键值对的结构为sync.map。

40、第三方面,本技术提供了一种基于本地内存的消息限流设备,所述设备包括:存储器以及处理器;

41、所述存储器用于存储相关的程序代码;

42、所述处理器用于调用所述程序代码,执行上述第一方面任意一种实现方式所述的基于本地内存的消息限流方法。

43、第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述第一方面任意一种实现方式所述的基于本地内存的消息限流方法。

44、由此可见,本技术具有如下有益效果:

45、在本技术的上述实现方式中,当上游服务需要将消息发送给下游服务时,可以对待发送的消息进行限流处理,只发送满足特定条件的消息。具体地,接收上游服务发送的消息发送请求,其中,该消息发送请求中包括待发送消息。确定待发送消息的目标标识,其中,该目标标识可以用于表示待发送消息的类型等。响应于历史键值对集合中包括与目标标识相匹配的目标键值对,获取目标键值对。其中,历史键值对集合中可以包括多个历史键值对,每个历史键值对可以对应于一条历史消息。目标键值对中的值value可以包括第一线程安全标识,第一线程安全标识可以表示是否获取到锁。响应于第一线程安全标识表示为释放锁,即锁还未被占用,则利用乐观锁对第一线程安全标识进行处理,确定第二线程安全标识。响应于第二线程安全标识表示为获取到锁,即抢占到待发送消息的锁,则可以调用下游服务发送待发送消息。通过本技术所提供的方法,可以利用本地存储的键值对和乐观锁对上游请求发送的消息进行限流处理,无需依赖分布式缓存,可以降低计算资源消耗,提高限流处理的负载能力。

本文地址:https://www.jishuxx.com/zhuanli/20240801/243983.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。