專利名稱:一種并發請求處理方法、裝置及服務器的制作方法
技術領域:
本發明屬于電力系統通信技術領域,尤其涉及一種并發請求處理方法、裝置及服務器。
背景技術:
在電力系統的通信調度中,對于并發的客戶端業務請求,現有服務器端通常采取的策略是為每一個發起請求的客戶端分配一個單獨的線程,且該線程一直到該客戶端與服務器端停止通信后才能被回收,因此,要提高系統的并發業務處理能力,就必須在服務器端與客戶端之間創建大量的線程,而通常系統中已創建的大量線程利用率極低,大大耗費了有限的系統資源,同時,隨著線程數量的增加,在不同線程間切換的行為也提高了系統的 CPU占用率。
發明內容
本發明實施例的目的在于提供一種并發請求處理方法,旨在解決現有的電力系統在通信調度時為每個發起請求的客戶端分配一個單獨的線程,導致系統資源浪費的問題。本發明實施例是這樣實現的,一種并發請求處理方法,所述方法包括當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號,所述客戶端號用于唯一標識一客戶端;分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息;解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。本發明實施例的另一目的在于提供一種并發請求處理裝置,所述裝置包括客戶端號生成單元,用于當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號,所述客戶端號用于唯一標識一客戶端。信息表生成單元,用于分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息;業務數據處理單元,用于解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。本發明實施例的另一目的在于提供一種服務器,所述服務器包括如上所述的并發請求處理裝置。本發明實施例根據每個發起業務請求的客戶端在請求中所攜帶的套接字來為各個客戶端賦予不同的客戶端號,并為每個客戶端建立與該客戶端進行通信的規約信息表, 從而在并發的業務請求處理中將不同的客戶端加以區分,實現了對多個請求的并發處理。
圖1是本發明第一實施例提供的并發請求處理系統的系統結構框圖;圖2是本發明第二實施例提供的并發請求處理方法的實現流程圖;圖3是本發明第三實施例提供的并發請求處理方法的實現流程圖;圖4是本發明第四實施例提供的并發請求處理方法的實現流程圖。圖5是本發明第五實施例提供的并發請求處理裝置的結構圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。本發明實施例根據每個發起業務請求的客戶端在請求中所攜帶的套接字來為各個客戶端賦予不同的客戶端號,并為每個客戶端建立與該客戶端進行通信的規約信息表, 從而在并發的業務請求處理中將不同的客戶端加以區分,實現了對多個請求的并發處理。圖1示出了本發明第一實施例提供的并發請求處理系統的系統結構框圖,為了便于說明,僅示出了與本實施例相關的部分。參照圖1,該并發請求處理系統可以應用于電力系統中,用于電力系統的通信調度、控制,其包括服務器11,以及多個與服務器11連接的客戶端12。其中,客戶端12通過 TCP/IP通信協議與服務器11建立連接并進行通信,向服務器11發起業務請求,且該行為可以由一個或者多個客戶端12同時向服務器11發起。服務器11在接收到客戶端12的業務請求后,基于IEC 60870-5-104協議對相關的業務請求進行解析,并在業務應用層面將發起請求的不同客戶端12進行區分,通過電力系統中相應的傳感器子系統13獲取到客戶端 12所請求的相關業務數據后,根據每個客戶端的IEC 60870-5-104協議規約信息對業務數據進行封裝,再通過TCP/IP協議返回給各個客戶端12。上述關于并發請求處理系統的詳細描述將在后續實施例中進行說明,在此不再贅述。圖2示出了本發明第二實施例提供的并發請求處理方法的實現流程,其執行主體為并發請求處理系統中的服務器,其具體實現流程詳述如下在步驟S201中,當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號,所述客戶端號用于唯一標識一客戶端。由于針對每個客戶端,其發送的請求數據包中的套接字是唯一的,因此,通過關聯該套接字而生成的客戶端號也是與該客戶端一一對應的,用于區別于其他客戶端,以實現對業務請求的并發處理。在步驟S202中,分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息。當接收到來自一客戶端的請求數據包后,基于IEC 60870-5-104協議生成該客戶端的信息表,同時,該信息表是與其所歸屬的客戶端的客戶端號相關聯的,以區別于其他客戶端的信息表。在本實施例中,信息表按照IEC 60870-5-104協議中的相關規約記錄了與客戶端進行通信所需要的數據幀信息,例如發送幀數、接收幀數等等。通過為每個客戶端建立相應的信息表,在對該客戶端進行業務請求處理的時候,即可按照該信息表中記錄的數據幀信息來處理相應的業務數據請求。在步驟S203中,解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。本實施例通過不同的客戶端號來對并發請求的客戶端進行區分,并通過建立每個客戶端各自的信息表來實現一個線程異步并發地處理多個客戶端的業務請求,避免了多線程帶來的瓶頸問題,提高了服務器端的并發業務請求處理能力。作為本發明的一個實施例,在步驟S201之前,還需要接收來自客戶端的連接請求并進行相關的判定,圖3示出了本發明第三實施例提供的并發請求處理方法用于建立與客戶端連接的實現流程,詳述如下在步驟S301中,接收來自一個或多個客戶端的連接請求。在客戶端發送給服務器的連接請求中,包含了服務器用于接收客戶端數據的IP 地址和端口,以便客戶端發出的連接請求能夠準確地傳送到希望送達的服務器,且基于IEC 60870-5-104協議,其端口號固定,為M04。在步驟S302中,判斷每個客戶端的IP地址是否位于預設的IP范圍內,是則建立與該客戶端的連接,否則不建立與該客戶端的連接,終止執行步驟。在本實施例中,服務器根據其預先制定的安全策略來對每個發起連接請求的客戶進行IP地址判斷,判斷其IP地址是否處于安全策略所預設的IP范圍內,是則建立起與客戶端的連接,并執行步驟S201,否則不建立與該客戶端的連接。在步驟S303中,當與一個或多個客戶端建立連接后,通過select函數接收來自每個建立連接的客戶端的請求數據包。在本實施例中,服務器在與客戶端建立起連接之后,基于TCP/IP協議,通過 select函數來實現多路復用的輸入/輸出,此時,只需要單個線程即可同時接收來自多個客戶端發送的請求數據包,實現業務請求的并發接收。需要說明的是,接收請求數據包的動作必須在指定時間內完成,該指定時間根據客戶端數據包發送的間隔時間設置,例如,若客戶端數據包發送的間隔時間為200ms,則接收請求數據包的時間必須小于200ms,以便不影響對下一請求數據包的接收動作。圖4示出了本發明第四實施例提供的并發請求處理方法的實現流程,本實施例是對本發明第二實施例步驟S203的細化,其具體實現流程如下在步驟S401中,從請求數據包中解析出業務功能報文,并根據業務功能報文中的業務功能碼獲取相關的業務數據。上述步驟的執行基于IEC60870-5-104協議規約,其規定了相關業務功能的業務功能碼,因此,通過在業務功能報文中提取出業務功能碼,即可根據該業務功能碼由相應的傳感器子系統中獲取到所需的業務數據。作為本發明的一個實施例,在步驟S401之前,首先需要判斷當前是否有緊急的業務數據需要發送,例如一些突發的通信狀況,如線路故障、電流過流等,如果有,則在處理此次業務請求之前,先將上述狀況相關的業務數據發送給客戶端。在步驟S402中,根據與該客戶端的客戶端號關聯的信息表,對所述業務數據進行處理后發送至客戶端。當獲取到所需的業務數據后,即按照該客戶端的信息表來對業務數據進行組幀封裝,并發送至客戶端。在步驟S403中,根據下一次業務請求的規約信息,對信息表進行更新后保存。在本實施例中,每個客戶端的信息表均只在該客戶端首次連接服務器端時建立, 建立之后在每次業務請求過程中,只需要更新下一次業務請求時所需要的規約信息即可。 因此,在接收到來自一客戶端的請求數據包后,可以首先判斷該客戶端是否為首次連接,是則執行步驟S202,否則只需要從該客戶端已建立的信息表中讀取出之前保存的相關規約信息即可。在步驟S404中,當接收到客戶端的斷開連接請求時,釋放連接并刪除與該客戶端的客戶端號關聯的信息表。作為本發明的一個實施例,同時可以對根據該客戶端請求數據包中的套接字而生成的客戶端號進行刪除,以節約系統資源。圖5示出了本發明第五實施例提供的并發請求處理裝置的結構,為了便于說明, 僅示出了與本實施例相關的部分。參照圖5,該并發請求處理裝置運行于如圖1所示的并發請求處理系統的服務器中,可以是運行于服務器的硬件單元、軟件單元或者軟硬件結合的單元,其具體包括客戶端號生成單元51,當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號,所述客戶端號用于唯一標識一客戶端。信息表生成單元52,分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息;業務數據處理單元53,解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。其中,業務數據處理單元53具體包括業務數據獲取單元531,從請求數據包中解析出業務功能報文,并根據業務功能報文中的業務功能碼獲取相關的業務數據;業務數據發送單元532,根據與該客戶端的客戶端號關聯的信息表,對所述業務數據進行處理后發送至該客戶端;信息表更新單元533,根據下一次業務請求的規約信息,對信息表進行更新后保存;信息表讀取單元534,當接收到下一個請求數據包時,讀取更新后的信息表以進行業務數據處理。所述裝置還包括連接請求接收單元M,接收來自一個或多個客戶端的連接請求; 判斷單元55,判斷每個客戶端的IP地址是否位于預設的IP范圍內,是則建立與該客戶端的連接,否則終止執行步驟;連接建立單元56,通過select函數接收來自每個建立連接的客戶端的請求數據包。以及信息表刪除單元57,當接收到客戶端的斷開連接請求時,釋放連接并刪除與該客戶端的客戶端號關聯的信息表。
本發明實施例基于IEC 60870-5-104協議,根據每個發起業務請求的客戶端在請求中所攜帶的異步套接字來為各個客戶端賦予不同的客戶端號,并為每個客戶端建立各自的有關IEC 60870-5-104協議規約的信息表,從而在并發的業務請求處理中將不同的客戶端加以區分,實現了對多個請求的并發處理。以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種并發請求處理方法,其特征在于,所述方法包括當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號,所述客戶端號用于唯一標識一客戶端;分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息;解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。
2.如權利要求1所述的方法,其特征在于,在所述根據每個請求數據包中的套接字生成相應的客戶端號的步驟之前,所述方法還包括接收來自一個或多個客戶端的連接請求;判斷每個客戶端的IP地址是否位于預設的IP范圍內,是則建立與該客戶端的連接,否則終止執行步驟;通過select函數接收來自每個建立連接的客戶端的請求數據包。
3.如權利要求1所述的方法,其特征在于,所述解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理的步驟具體包括從請求數據包中解析出業務功能報文,并根據業務功能報文中的業務功能碼獲取相關的業務數據;根據與該客戶端的客戶端號關聯的信息表,對所述業務數據進行處理后發送至該客戶端;根據下一次業務請求的規約信息,對信息表進行更新后保存。
4.如權利要求3所述的方法,其特征在于,在所述根據下一次業務請求的規約信息,對信息表進行更新后保存的步驟之后,所述方法還包括當接收到下一個請求數據包時,讀取更新后的信息表以進行業務數據處理。
5.如權利要求1所述的方法,其特征在于,在解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理的步驟之后,所述方法還包括當接收到客戶端的斷開連接請求時,釋放連接并刪除與該客戶端的客戶端號關聯的信息表。
6.一種并發請求處理裝置,其特征在于,所述裝置包括客戶端號生成單元,用于當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號,所述客戶端號用于唯一標識一客戶端。信息表生成單元,用于分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息;業務數據處理單元,用于解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。
7.如權利要求6所述的裝置,其特征在于,所述裝置還包括連接請求接收單元,用于接收來自一個或多個客戶端的連接請求; 判斷單元,用于判斷每個客戶端的IP地址是否位于預設的IP范圍內,是則建立與該客戶端的連接,否則終止執行步驟;連接建立單元,用于通過select函數接收來自每個建立連接的客戶端的請求數據包。
8.如權利要求6所述的裝置,其特征在于,所述業務數據處理單元包括業務數據獲取單元,用于從請求數據包中解析出業務功能報文,并根據業務功能報文中的業務功能碼獲取相關的業務數據;業務數據發送單元,用于根據與該客戶端的客戶端號關聯的信息表,對所述業務數據進行處理后發送至該客戶端;信息表更新單元,用于根據下一次業務請求的規約信息,對信息表進行更新后保存; 信息表讀取單元,用于當接收到下一個請求數據包時,讀取更新后的信息表以進行業務數據處理。
9.如權利要求6所述的裝置,其特征在于,所述裝置還包括信息表刪除單元,用于當接收到客戶端的斷開連接請求時,釋放連接并刪除與該客戶端的客戶端號關聯的信息表。
10.一種服務器,其特征在于,所述服務器包括如權利要求6至9任一項所述的并發請求處理裝置。
全文摘要
本發明適用于電力系統通信技術領域,提供了一種并發請求處理方法、裝置及服務器,所述方法包括當接收到來自一個或多個客戶端的請求數據包時,根據每個請求數據包中的套接字生成相應的客戶端號;分別生成每個客戶端的信息表,所述信息表與該客戶端的客戶端號相關聯,用于記錄與該客戶端通信的規約信息;解析每個客戶端的請求數據包,并根據與該客戶端的客戶端號關聯的信息表分別進行相應的業務數據處理。本發明根據每個發起業務請求的客戶端在請求中所攜帶的套接字來為各個客戶端賦予不同的客戶端號,并為每個客戶端建立與該客戶端進行通信的規約信息表,從而在并發的業務請求處理中將不同的客戶端加以區分,實現了對多個請求的并發處理。
文檔編號H04L29/08GK102510398SQ201110329769
公開日2012年6月20日 申請日期2011年10月26日 優先權日2011年10月26日
發明者馬建春 申請人:航天科工深圳(集團)有限公司