本技术涉及互联网,尤其涉及一种消息处理方法、装置、系统及介质。
背景技术:
1、由于丰富科学运算类库的存在,python语言越来越广泛的应用到人工智能、数据分析、交易系统等平台的件开发工具包(software development kit,sdk)开发中。sdk模块作为通常作为远程过程调用(remote procedure call,rpc)的服务端,在远程调用过程中必然涉及网络传输,在面临高并发的场景中,会涉及大量输入/输出(input/output,i/o)操作,该模块容易成为平台中的性能瓶颈。
2、现有技术中,常常利用多线程的方式实现大量i/o操作。
3、然而,线程运行方式。多核中央处理器(central processing unit,cpu)在线程切换时会产生不必要的开销;正在忙碌中的线程被换出,却切换到某个线程正在等待i/o的情况无法避免,出现许多无意义的切换;出现线程颠簸情况,对性能造成负面影响,从而降低了消息处理效率,因此,如何在大量i/o操作的场景下提高消息处理效率成为亟待解决的技术问题。
技术实现思路
1、本技术提供一种消息处理方法、装置、系统及介质,用以解决现有的消息处理效率较低的技术问题。
2、第一方面,本技术提供一种消息处理方法,应用于消息处理系统,所述消息处理系统包括:开发工具包sdk模块,所述sdk模块包括:守护线程,所述守护线程包括:多个协程,所述方法包括:
3、通过所述消息处理系统中的消息队列mq获取不同服务平台推送的第一报文;
4、通过所述多个协程分别异步监控所述消息队列,并获取所述消息队列中的第一报文;
5、针对每个协程,通过所述协程基于获取到的第一报文,对所述第一报文进行相应处理。
6、在第一方面一种可能的设计中,所述sdk模块还包括:主线程;
7、相应的,在所述消息队列获取不同服务平台推送的第一报文之前,所述方法还包括:
8、通过所述主线程接收多个消息请求;
9、利用所述主线程通过远程过程调用rpc,将所述多个消息请求分发给相应的服务平台。
10、在第一方面另一种可能的设计中,所述方法还包括:
11、针对每个服务平台,利用所述服务平台基于获取到的消息请求,对所述消息请求进行处理,得到所述第一报文;
12、通过所述服务平台将所述第一报文发送至所述mq。
13、在第一方面又一种可能的设计中,所述利用所述主线程通过远程过程调用rpc,将所述多个消息请求分发给相应的服务平台,包括:
14、针对每个消息请求,利用所述主线程通过所述rpc,将所述消息请求发送给与所述消息请求的消息类型一致的服务平台。
15、在第一方面又一种可能的设计中,在所述消息队列获取不同服务平台推送的第一报文之前,所述方法还包括:
16、针对至少一个服务平台,通过所述至少一个服务平台响应于各自的订阅请求,将所述订阅请求对应的第一报文发送至所述mq。
17、在第一方面又一种可能的设计中,所述通过所述协程基于获取到的第一报文,对所述第一报文进行相应处理,包括:
18、利用所述协程对所述第一报文进行解析处理,得到所述第一报文的消息类型;
19、利用所述协程基于所述消息类型,调用相应事件函数进行后续数据处理。
20、在第一方面又一种可能的设计中,所述守护线程中的协程的数量与业务需求相关。
21、第二方面,本技术提供一种消息处理装置,应用于消息处理系统,所述消息处理系统包括:开发工具包sdk模块,所述sdk模块包括:守护线程,所述守护线程包括:多个协程,所述装置包括:
22、第一处理模块,用于通过所述消息处理系统中的消息队列mq获取不同服务平台推送的第一报文;
23、第二处理模块,用于通过所述多个协程分别异步监控所述消息队列,并获取所述消息队列中的第一报文;
24、第三处理模块,用于针对每个协程,通过所述协程基于获取到的第一报文,对所述第一报文进行相应处理。
25、在第二方面一种可能的设计中,所述sdk模块还包括:主线程;
26、相应的,在所述消息队列获取不同服务平台推送的第一报文之前,所述第一处理模块,还用于:
27、通过所述主线程接收多个消息请求;
28、利用所述主线程通过远程过程调用rpc,将所述多个消息请求分发给相应的服务平台。
29、在第二方面另一种可能的设计中,所述第一处理模块,还用于:
30、针对每个服务平台,利用所述服务平台基于获取到的消息请求,对所述消息请求进行处理,得到所述第一报文;
31、通过所述服务平台将所述第一报文发送至所述mq。
32、在第二方面又一种可能的设计中,所述第一处理模块,利用所述主线程通过远程过程调用rpc,将所述多个消息请求分发给相应的服务平台,具体用于:
33、针对每个消息请求,利用所述主线程通过所述rpc,将所述消息请求发送给与所述消息请求的消息类型一致的服务平台。
34、在第二方面又一种可能的设计中,在所述消息队列获取不同服务平台推送的第一报文之前,所述第一处理模块,还用于:
35、针对至少一个服务平台,通过所述至少一个服务平台响应于各自的订阅请求,将所述订阅请求对应的第一报文发送至所述mq。
36、在第二方面又一种可能的设计中,所述三处理模块,具体用于:
37、利用所述协程对所述第一报文进行解析处理,得到所述第一报文的消息类型;
38、利用所述协程基于所述消息类型,调用相应事件函数进行后续数据处理。
39、在第二方面又一种可能的设计中,所述守护线程中的协程的数量与业务需求相关。
40、第三方面,本技术提供一种消息处理系统,包括:处理器,以及与所述处理器通信连接的存储器;
41、所述存储器存储计算机执行指令;
42、所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面所述的消息处理方法。
43、第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的消息处理方法。
44、第五方面,本技术提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面所述的消息处理方法。
45、本技术提供的消息处理方法、装置、系统及介质,应用于互联网技术领域中的消息处理系统,该消息处理系统包括:开发工具包sdk模块,sdk模块包括:守护线程,守护线程包括:多个协程,方法包括:通过消息处理系统中的消息队列mq获取不同服务平台推送的第一报文;通过多个协程分别异步监控消息队列,并获取消息队列中的第一报文;针对每个协程,通过协程基于获取到的第一报文,对第一报文进行相应处理。该技术方案中,通过多个协程的方式分担消息队列中的消息,以提升sdk运行效率。