一種服務端線程的動態分配方法和設備的制造方法
【技術領域】
[0001] 本申請涉及互聯網領域,尤其是一種服務端線程的動態分配方法和設備。
【背景技術】
[0002] RPC(Remote Procedure Call,遠程過程調用)協議是一種進程之間的通信協議, 客戶端可以通過RPC協議請求服務器所提供的服務。
[0003] 具體的,服務器發布一個服務之后,客戶端根據調用參數向服務器發送RPC請求 消息,服務器在收到RPC請求消息之后,為該RPC請求消息啟動一個服務端線程,并通過該 服務端線程為客戶端提供服務,即服務端線程利用RPC請求消息中攜帶的調用參數為客戶 端提供服務,并通過RPC應答消息將服務結果返回給客戶端。客戶端在收到RPC應答消息 后,可以調用相應的服務。
[0004] 通常情況下,服務器會對外提供多個接口,每個接口對應一個服務,例如,服務器 對外提供接口 1和接口 2,客戶端可以通過接口 1調用服務器提供的服務1(如訂單查詢服 務),且客戶端可以通過接口 2調用服務器提供的服務2 (如訂單支付服務)。進一步的, 在同一時間段內,通常會有大量客戶端向服務器發送RPC請求消息,S卩服務器將收到大量 的RPC請求消息。基于此,由于服務器上能夠分配的服務端線程的數量有限,因此,服務器 在收到RPC請求消息后,首先判斷本服務器上是否有能夠分配的服務端線程;如果有,則為 RPC請求消息啟動一個服務端線程,并在RPC請求消息被該服務端線程處理完成之后,由服 務器釋放該服務端線程;如果沒有,則直接丟棄RPC請求消息。
[0005] 在上述方式下,如果接口1對應的接口響應時間很長,而接口2對應的接口響應時 間很短,且接口1對應有大量的RPC請求消息,則大量的服務端線程將用于處理接口1對應 的RPC請求消息,服務端線程無法被及時釋放,繼而導致接口2對應的RPC請求消息也無法 及時得到處理,即導致接口響應時間很短的接口 2也無法分配到更多的服務端線程,其服 務端線程的利用率很低。
【發明內容】
[0006] 本申請實施例提供一種服務端線程的動態分配方法和設備,以合理的為各接口分 配服務端線程,并提高服務端線程的利用率,提高消息處理效率。
[0007] 本申請實施例提供一種服務端線程的動態分配方法,所述方法包括:
[0008] 服務器利用各接口對應的接口信息分配各接口的第一服務端線程數量;
[0009] 所述服務器在接收到遠程過程調用RPC請求消息之后,確定所述RPC請求消息對 應的接口當前已經啟動的第二服務端線程數量;
[0010] 如果所述第二服務端線程數量小于所述接口對應的第一服務端線程數量,則所述 服務器為所述RPC請求消息啟動服務端線程;
[0011] 如果所述第二服務端線程數量等于所述接口對應的第一服務端線程數量,則所述 服務器拒絕為所述RPC請求消息啟動服務端線程。
[0012] 所述各接口對應的接口信息具體包括:所述各接口在指定時間段內對應的平均接 口響應時間,和/或,所述各接口在指定時間段內對應的RPC請求消息接收數量。
[0013] 所述服務器利用各接口對應的接口信息分配各接口的第一服務端線程數量的過 程,具體包括:
[0014] 所述服務器利用預設第一分配策略為各接口分配對應的第一服務端線程數量;其 中,所述預設第一分配策略具體為:當接口在指定時間段內對應的平均接口響應時間越小 時,則所述服務器為所述接口分配的第一服務端線程數量越多;當接口在指定時間段內對 應的平均接口響應時間越大時,則所述服務器為所述接口分配的第一服務端線程數量越 少;或者,
[0015] 所述服務器利用預設第二分配策略為各接口分配對應的第一服務端線程數量;其 中,所述預設第二分配策略具體為:當接口在指定時間段內對應的RPC請求消息接收數量 越多時,則所述服務器為所述接口分配的第一服務端線程數量越多;當接口在指定時間段 內對應的RPC請求消息接收數量越少時,則所述服務器為所述接口分配的第一服務端線程 數量越少;或者,
[0016] 所述服務器利用預設第三分配策略為各接口分配對應的第一服務端線程數量;其 中,所述預設第三分配策略具體為:當接口在指定時間段內對應的平均接口響應時間越小, 且所述接口在指定時間段內對應的RPC請求消息接收數量越多時,為所述接口分配的第一 服務端線程數量越多;當接口在指定時間段內對應的平均接口響應時間越大,且所述接口 在指定時間段內對應的RPC請求消息接收數量越少時,為所述接口分配的第一服務端線程 數量越少。
[0017] 當所述各接口對應的接口信息具體為:所述各接口在指定時間段內對應的平均接 口響應時間以及所述各接口在指定時間段內對應的RPC請求消息接收數量時,所述服務器 利用各接口對應的接口信息分配各接口的第一服務端線程數量的過程,具體包括:
[0018] 所述服務器利用如下公式為接口分配所述接口的第一服務端線程數量:
[0019]
[0020] 其中,所述N為所述服務器能夠分配的服務端線程總數,所述C為所述服務器提供 的接口總數,所述Rn為所述接口在指定時間段內對應的RPC請求消息接收數量,所述Rx為 第X個接口在指定時間段內對應的RPC請求消息接收數量,所述Tn為所述接口在指定時間 段內對應的平均接口響應時間,所述Τχ為第X個接口在指定時間段內對應的平均接口響應 時間。
[0021] 當所述各接口對應的接口信息具體為:所述各接口在指定時間段內對應的平均接 口響應時間以及所述各接口在指定時間段內對應的RPC請求消息接收數量時,所述服務器 利用各接口對應的接口信息分配各接口的第一服務端線程數量的過程,具體包括:
[0022] 當服務器從能夠分配的服務端線程中為各接口分配能夠競爭的服務端線程時,所 述服務器利用如下公式為接口分配所述接口的第一服務端線程數量:
[0023]
[0024] 其中,N為所述服務器能夠分配的服務端線程總數,S為能夠競爭的服務端線程的 總數量,C為所述服務器提供的接口總數,Rn為所述接口在指定時間段內對應的RPC請求消 息接收數量,Rx為第X個接口在指定時間段內對應的RPC請求消息接收數量,Tn為所述接 口在指定時間段內對應的平均接口響應時間,Τχ為第X個接口在指定時間段內對應的平均 接口響應時間。
[0025] 所述方法進一步包括:
[0026] 當所述服務器從能夠分配的服務端線程中為各接口分配能夠競爭的服務端線程, 且能夠競爭的服務端線程的總數量為S時,如果所述第二服務端線程數量等于所述接口對 應的第一服務端線程數量,則所述服務器確定當前已經啟動的能夠競爭的服務端線程的第 三服務端線程數量;
[0027] 如果所述第三服務端線程數量小于所述S,則所述服務器從能夠競爭的服務端線 程中為所述RPC請求消息啟動服務端線程;如果所述第三服務端線程數量等于所述S,則所 述服務器拒絕為所述RPC請求消息啟動服務端線程。
[0028] 本申請實施例提供一種服務器,所述服務器具體包括:
[0029] 分配模塊,用于利用各接口對應的接口信息分配所述各接口對應的第一服務端線 程數量;
[0030] 確定模塊,用于在接收到遠程過程調用RPC請求消息之后,確定所述RPC請求消息 對應的接口當前已經啟動的第二服務端線程數量;
[0031] 處理模塊,用于當所述第二服務端線程數量小于所述接口對應的第一服務端線程 數量時,則為所述RPC請求消息啟動服務端線程;
[0032] 當所述第二服務端線程數量等于所述接口對應的第一服務端線程數量時,則拒絕 為所述RPC請求消息啟動服務端線程。
[0033] 所述各接口對應的接口信息具體包括:所述各接口在指定時間段內對應的平均接 口響應時間,和/或,所述各接口在指定時間段內對應的RPC請求消息接收數量。
[0034] 所述分配模塊,具體用于利用預設第一分