System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理,特别是涉及一种基于复合线程模型的远程服务方法、装置及可读存储介质。
技术介绍
1、远程过程调用(remote procedure call,rpc)是规模系统的分布式架构关键组件。处理并发是框架的基本要求,其并发的核心是其线程模型。由于编码难度和可维护性,用户的使用方式大都是以多线程反应器为核心的混合异步线程模型,模型中的同步部分用于进一步简化编程模型的复杂度。这种模型的问题是,系统并发但是并发度不高时,当事件分发器(event dispatcher)把任务递给业务(worker)线程时,用户逻辑将从一个核心跳到另一个核心(系统唤醒),并等待相应的缓存同步过来,速度并不很快(3-20us)。
2、尽管多线程反应器在某些场景下线程切换耗费了时间,但绝大多数rpc所使用的框架仍然是以多线程反应器模型为核心,更具体的原因是微秒(3-20us)级别的响应优化收益和带来功能限制所产生的损失不成正比。然而,在专用的rpc场景下,较低并发度的场景中,多线程反应器存在的响应延迟问题成为性能瓶颈。
技术实现思路
1、在本实施例中提供了一种基于复合线程模型的远程服务方法、装置及可读存储介质,以解决相关技术中存在的专用的rpc场景下,较低并发度场景中,多线程反应器存在的响应延迟问题。
2、第一个方面,在本实施例中提供了一种基于复合线程模型的远程服务方法,所述方法应用于计算机设备上安装的客户端程序,所述计算机设备上还安装有服务端程序,所述方法包括:
4、在注册成功且所述线程模型为连接独占多线程模型的情况下,接收所述服务端程序发送的至少一个通信连接,所述通信连接的数量与所述计算机设备的cpu核心数量对应;
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、第二个方面,在本实施例中提供了一种基于复合线程模型的远程服务装置,所述装置应用于计算机设备上安装的客户端程序,所述计算机设备上还安装有服务端程序,所述装置包括:
30、注册模块,用于向所述服务端程序发送注册请求和预先确定的线程模型,所述线程模型包括连接独占多线程模型和多线程反应器模型;
31、连接模块,用于在注册成功且所述线程模型为连接独占多线程模型的情况下,接收所述服务端程序发送的至少一个通信连接,所述通信连接的数量与所述计算机设备的cpu核心数量对应;
32、收发模块,用于基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果。
33、第三个方面,在本实施例中提供了一种可读存储介质,其上存储有程序,所述程序被处理器执行时实现第一个方面所述的基于复合线程模型的远程服务方法的步骤。
34、与相关技术相比,在本实施例中提供的基于复合线程模型的远程服务方法,通过客户端程序向服务端程序发送注册请求和预先确定的线程模型,根据业务场景选择对应的线程模型,以降低响应延迟;在注册成功且线程模型为连接独占多线程模型的情况下,通过接收服务端程序发送的至少一个通信连接,且通信连接的数量与计算机设备的cpu核心数量对应,实现服务请求的多线程并发处理,通过连接绑定减少并发竞争,提高远程服务的响应效率;通过基于至少一个通信连接,或基于多线程反应器模型对应的通信连接,向服务端程序发送至少一个服务请求,并接收对应的响应结果,最终确定该服务请求对应的线程模型,并基于该线程模型发送请求和接收响应,解决了相关技术中存在的专用rpc场景下多线程反应器存在的响应延迟问题。
35、本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请本文档来自技高网...
【技术保护点】
1.一种基于复合线程模型的远程服务方法,其特征在于,所述方法应用于计算机设备上安装的客户端程序,所述计算机设备上还安装有服务端程序,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果包括:
3.根据权利要求2所述的方法,其特征在于,所述基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果包括:
4.根据权利要求2所述的方法,其特征在于,所述基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果包括:
5.根据权利要求1所述的方法,其特征在于,在所述接收对应的响应结果之后,所述方法还包括:
6.根据权利要求2所述的方法,其特征在于,在所述基于所述通信连接,向所述服务端程序发送对应的服务请求之后,所述方法还包括:
7.根据权利要求6所
8.根据权利要求7所述的方法,其特征在于,所述对所述服务端程序的共享内存写入状态进行轮询,读取所述服务请求对应的响应结果包括:
9.一种基于复合线程模型的远程服务装置,其特征在于,所述装置应用于计算机设备上安装的客户端程序,所述计算机设备上还安装有服务端程序,所述装置包括:
10.一种可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现权利要求1至8中任一项所述的基于复合线程模型的远程服务方法的步骤。
...【技术特征摘要】
1.一种基于复合线程模型的远程服务方法,其特征在于,所述方法应用于计算机设备上安装的客户端程序,所述计算机设备上还安装有服务端程序,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果包括:
3.根据权利要求2所述的方法,其特征在于,所述基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果包括:
4.根据权利要求2所述的方法,其特征在于,所述基于所述至少一个通信连接,或基于所述多线程反应器模型对应的通信连接,向所述服务端程序发送至少一个服务请求,并接收对应的响应结果包括:
5.根据权利要求1所述的方法,其特征在于,在...
【专利技术属性】
技术研发人员:李成,
申请(专利权)人:杭州长川科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。