TW202131171A - 程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質 - Google Patents

程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質 Download PDF

Info

Publication number
TW202131171A
TW202131171A TW110102727A TW110102727A TW202131171A TW 202131171 A TW202131171 A TW 202131171A TW 110102727 A TW110102727 A TW 110102727A TW 110102727 A TW110102727 A TW 110102727A TW 202131171 A TW202131171 A TW 202131171A
Authority
TW
Taiwan
Prior art keywords
task
running
task queue
user code
computing node
Prior art date
Application number
TW110102727A
Other languages
English (en)
Other versions
TWI786527B (zh
Inventor
李曉波
鄒雨竹
吳軍
Original Assignee
大陸商深圳市商湯科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商深圳市商湯科技有限公司 filed Critical 大陸商深圳市商湯科技有限公司
Publication of TW202131171A publication Critical patent/TW202131171A/zh
Application granted granted Critical
Publication of TWI786527B publication Critical patent/TWI786527B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Electrically Operated Instructional Devices (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)

Abstract

本發明公開了一種程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質。其中,程式設計平台包括服務節點、任務佇列、計算節點;所述方法包括:服務節點獲取用於表徵使用者終端的使用者代碼,並將使用者代碼作為運行任務放置於任務佇列中;計算節點監控任務佇列,以獲取運行任務;計算節點計算運行任務,得到計算結果;服務節點從計算節點獲取計算結果,並將計算結果回饋至使用者終端。

Description

程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質
本發明關於程式設計技術領域,特別是關於一種程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質。
隨著人工智慧的快速發展,各種依賴於代碼運行的系統也應運而生。不僅代碼越來越多樣化,而且對系統可以提供的功能提出越來越高的要求。
面對日益複雜的代碼,目前的程式設計平台中,Kernel(執行環境)等代碼的執行環境往往既要保持與使用者終端的連接關係,又要對使用者終端發出的代碼進行計算,導致系統能力不能滿足於代碼運行要求。
基於此,如何提高程式設計平台的使用者代碼運行的併發能力,成為亟待解決的問題。
本發明提供一種程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質。
本發明程式設計平台包括:服務節點、任務佇列、計算節點。本發明第一方面提供了一種程式設計平台的使用者代碼運行方法,包括:所述服務節點獲取用於表徵使用者終端的使用者代碼,並將所述使用者代碼作為運行任務放置於所述任務佇列中;所述計算節點監控所述任務佇列,以獲取所述運行任務;所述計算節點計算所述運行任務,得到計算結果;所述服務節點從所述計算節點獲取所述計算結果,並將所述計算結果回饋至所述使用者終端。
因此,服務節點實現與使用者終端的連接,並將使用者代碼放置於佇列中,由計算節點進行使用者代碼的計算,進而實現使用者代碼的運行。上述使用者代碼的運行過程中,服務節點與計算節點分離設置,使得使用者終端的連接與使用者代碼的計算分別由服務節點和計算節點完成,實現使用者代碼運行的非同步通信,提高系統的併發能力。
其中,所述計算節點的數量為至少兩個;所述計算節點監控所述任務佇列,以獲取所述運行任務,包括:至少兩個所述計算節點監控所述任務佇列,向所述任務佇列請求獲取所述運行任務;所述任務佇列將一個所述運行任務分配至一個所述計算節點。
因此,多個計算節點均監控到任務佇列中的一運行任務時,多個計算節點均通過向任務佇列請求獲取運行任務,而任務佇列將該運行任務分配至一個計算節點,通過任務佇列可完成運行任務的合理分配。
其中,所述任務佇列包括第一任務佇列和第二任務佇列,至少兩個所述計算節點包括第一計算節點和第二計算節點;所述將所述使用者代碼作為運行任務放置於任務佇列中,包括:根據所述使用者代碼的計算特徵,將所述使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中;所述計算節點監控所述任務佇列,包括:所述第一計算節點監控所述第一任務佇列,所述第二計算節點監控所述第二任務佇列。
因此,服務節點可基於使用者代碼的計算特徵對使用者代碼進行區分,分別放置於第一任務佇列或第二任務佇列中,使得不同計算節點監控不同任務佇列,從而針對使用者代碼不同的運行要求對使用者代碼進行區別處理。
其中,所述服務節點的數量為至少兩個;所述服務節點獲取用於表徵使用者終端的使用者代碼,包括:至少兩個所述服務節點通過反向代理被分配所述使用者代碼。
因此,本發明可提供至少兩個服務節點,並且服務節點通過反向代理被分配使用者代碼,從而實現多個服務節點接收到使用者終端發出的使用者代碼,提高併發處理能力。
其中,所述計算節點在完成對所述運行任務的計算後,釋放對應的計算資源並繼續監控所述任務佇列。
因此,計算節點完成計算後即釋放資源,繼續監控任務佇列,以獲取新的運行任務,計算節點執行完畢運行任務即釋放資源,使得計算和記憶體資源重複利用,充分並合理地利用硬體資源。
其中,所述程式設計平台還包括訊息佇列;所述服務節點從所述計算節點獲取所述計算結果,以將所述計算結果回饋至所述使用者終端,包括:所述計算節點將所述計算結果放置於所述訊息佇列;所述服務節點監控所述訊息佇列,以獲取所述計算結果,並將所述計算結果回饋至所述使用者終端。
因此,計算節點對任意使用者代碼對應的運行任務執行完畢後,均將計算結果統一放置於訊息佇列中,服務節點監控訊息佇列,即可得到計算節點的計算結果,使得計算結果也進行統一管理。
其中,所述服務節點在獲取所述計算結果之前,保持與所述使用者終端的會話連接。
因此,服務節點在獲取所述計算結果之前,一直保持與使用者終端的會話連接,也即保持服務節點與使用者終端的聯繫,方便將計算結果回饋回使用者終端。
本發明第二方面提供了一種程式設計平台的使用者代碼運行方法,該方法包括獲取用於表徵使用者終端的使用者代碼;將所述使用者代碼作為運行任務放置於任務佇列中,以由計算節點從所述任務佇列中獲取並計算所述運行任務;獲取所述計算節點的計算結果,並將所述計算結果回饋至所述使用者終端。
因此,服務節點用於與使用者終端連接,並將使用者終端發出的使用者代碼作為運行任務放置於任務佇列中,使得獨立於服務節點的計算節點從任務佇列中獲取並計算運行任務得到計算結果後,服務節點獲取計算節點的計算結果,並將計算結果回饋至使用者終端,實現使用者代碼的運行。
其中,所述將所述使用者代碼作為運行任務放置於任務佇列中,以由計算節點從所述任務佇列中獲取並計算所述運行任務,包括:根據所述使用者代碼的計算特徵,將所述使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中,以由第一計算節點從所述第一任務佇列中獲取並計算所述運行任務,或由第二計算節點從所述第二任務佇列中獲取並計算所述運行任務。
因此,服務節點可基於使用者代碼的計算特徵對使用者代碼進行區分,分別放置於第一任務佇列或第二任務佇列中,使得不同計算節點監控不同任務佇列,從而針對使用者代碼不同的運行要求對使用者代碼進行區別處理。
其中,所述獲取用於表徵使用者終端的使用者代碼,包括:通過反向代理被分配所述使用者代碼。
因此,服務節點通過反向代理被分配使用者代碼,從而合理分配服務節點接收到使用者終端發出的使用者代碼。
其中,所述方法包括:在獲取所述計算結果之前,保持與所述使用者終端的會話連接。
因此,服務節點在獲取所述計算結果之前,一直保持與使用者終端的會話連接,也即保持服務節點與使用者終端的聯繫,方便將計算結果回饋回使用者終端。
本發明第三方面提供了一種程式設計平台的使用者代碼運行方法,所述方法包括:監控任務佇列,以獲取運行任務;所述任務佇列中包括所述運行任務,所述運行任務對應所述使用者代碼;計算所述運行任務,得到計算結果。
因此,任務佇列中包括運行任務,而運行任務對應使用者代碼,於是計算節點監控包括運行任務的任務佇列,從而獲取到對應使用者代碼的運行任務,進而計算運行任務得到計算結果,實現運行任務的獲取與計算。
其中,程式設計平台的使用者代碼運行方法還包括:在完成對所述運行任務的計算後,釋放對應的計算資源並繼續監控所述任務佇列。
因此,計算節點完成計算後即釋放資源,繼續監控任務佇列,以獲取新的運行任務,進而使得使用者代碼可以在不同計算節點中執行,且計算節點執行完畢運行任務即釋放資源,使得計算和記憶體資源重複利用,充分並合理地利用硬體資源。
本發明第四方面提供了一種程式設計平台,該程式設計平台包括:服務節點、任務佇列、計算節點;所述服務節點配置為獲取用於表徵使用者終端的使用者代碼,並將所述使用者代碼作為運行任務放置於所述任務佇列中;所述計算節點配置為監控所述任務佇列,以獲取所述運行任務;所述計算節點還配置為計算所述運行任務,得到計算結果;所述服務節點還配置為從所述計算節點獲取所述計算結果,以將所述計算結果回饋至所述使用者終端。
其中,所述計算節點的數量為至少兩個;所述計算節點配置為監控所述任務佇列,以獲取所述運行任務時,至少兩個所述計算節點配置為監控所述任務佇列,向所述任務佇列請求獲取所述運行任務;所述任務佇列配置為將一個所述運行任務分配至一個所述計算節點。
其中,所述任務佇列包括第一任務佇列和第二任務佇列,至少兩個所述計算節點包括第一計算節點和第二計算節點;所述服務節點用於將所述使用者代碼作為運行任務放置於任務佇列中時,具體地,所述服務節點用於根據所述使用者代碼的計算特徵,將所述使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中;所述計算節點用於監控所述任務佇列,具體地,所述第一計算節點用於監控所述第一任務佇列,所述第二計算節點用於監控所述第二任務佇列。
其中,所述服務節點的數量為至少兩個;所述服務節點配置為獲取用於表徵使用者終端的使用者代碼時,至少兩個所述服務節點配置為通過反向代理被分配所述使用者代碼。
其中,所述計算節點配置為在完成所述運行任務的計算後,釋放對應的計算資源並繼續監控所述任務佇列。
其中,所述程式設計平台還包括訊息佇列;所述服務節點配置為從所述計算節點獲取所述計算結果,以將所述計算結果回饋至所述使用者終端時,所述計算節點配置為將所述計算結果放置於所述訊息佇列;所述服務節點配置為監控所述訊息佇列,以獲取所述計算結果,並將所述計算結果回饋至所述使用者終端。
其中,所述服務節點在獲取所述計算結果之前,還配置為保持與所述使用者終端的會話連接。
本發明第五方面提供了一種服務節點,包括接收單元、放置單元和獲取單元,所述接收單元配置為獲取用於表徵使用者終端的使用者代碼;所述放置單元配置為將所述使用者代碼作為運行任務放置於任務佇列中,以由計算節點從所述任務佇列中獲取並計算所述運行任務;所述獲取單元配置為獲取所述計算節點的計算結果,並將所述計算結果回饋至所述使用者終端。
其中,所述放置單元配置為將所述使用者代碼作為運行任務放置於任務佇列中,以由計算節點從所述任務佇列中獲取並計算所述運行任務時,還配置為根據所述使用者代碼的計算特徵,將所述使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中,以由第一計算節點從所述第一任務佇列中獲取並計算所述運行任務,或由第二計算節點從所述第二任務佇列中獲取並計算所述運行任務。
其中,所述接收單元配置為獲取用於表徵使用者終端的使用者代碼時,還配置為通過反向代理被分配所述使用者代碼。
其中,所述獲取單元在獲取所述計算結果之前,所述服務節點配置為保持與所述使用者終端的會話連接。
本發明第六方面提供了一種計算節點,包括監控單元和計算單元,所述監控單元配置為監控任務佇列,以獲取運行任務;其中所述任務佇列中包括所述運行任務,所述運行任務對應所述使用者代碼;所述計算單元配置為計算所述運行任務,得到計算結果。
其中,所述計算單元在完成所述運行任務的計算後,還配置為釋放對應的計算資源並繼續監控所述任務佇列。
本發明第七方面提供了一種電子設備,包括相互耦接的記憶體和處理器;所述處理器用於執行所述記憶體儲存的程式指令,以實現上述第一方面的程式設計平台的使用者代碼運行方法;和/或,以實現上述第二方面的程式設計平台的使用者代碼運行方法;和/或,以實現上述第三方面的程式設計平台的使用者代碼運行方法。
因此,服務節點用於實現與使用者終端的連接,並將使用者代碼放置於佇列中,由計算節點用於進行使用者代碼的計算,進而實現使用者代碼的運行。上述使用者代碼的運行過程中,服務節點與計算節點分離設置,使得使用者終端的連接與使用者代碼的計算分別由服務節點和計算節點完成,實現使用者代碼運行的非同步通信,提高系統的併發能力。
本發明第八方面提供了一種電腦可讀儲存介質,其上儲存有能夠被處理器運行的程式指令,程式指令用於實現上述第一方面的程式設計平台的使用者代碼運行方法;和/或,實現上述第二方面的程式設計平台的使用者代碼運行方法;和/或,實現上述第三方面的程式設計平台的使用者代碼運行方法。
因此,上述使用者代碼的運行過程中,服務節點用於實現與使用者終端的連接,而計算節點用於實現使用者代碼的計算,實現使用者代碼運行的非同步通信,提高系統的併發能力。
以下將參考附圖詳細說明本發明實施例的各種示例性實施例、特徵和方面。附圖中相同的附圖標記表示功能相同或相似的元件。儘管在附圖中示出了實施例的各種方面,但是除非特別指出,不必按比例繪製附圖。
下面結合說明書附圖,對本發明實施例的方案進行詳細說明。
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發明的一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。本文中術語“第一”、“第二”僅用於描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術特徵的數量。
在一些實施例中,隨著人工智慧的普及,機器學習和人工智慧程式設計教育也逐漸成為程式設計教育的一個重要組成部分。有別於常規的程式設計入門教育,人工智慧程式設計教育中學生執行的人工智慧代碼往往需要實現大量的計算,相應的資源開銷也較大,如(central processing unit,中央處理器)CPU/GPU(Graphics Processing Unit,圖形處理器)佔用率、記憶體空間等。在相關技術的程式設計教育平台中,為每一使用者創建一個獨立的Kernel,並留存於伺服器記憶體中,使得每一使用者在創建的獨立Kernel中進行程式設計實驗。這樣,由於人工智慧代碼需要的資源開銷大,導致每個Kernel佔用大量的CPU/GPU資源和記憶體空間,如果每個使用者的Kernel都常駐記憶體,則整體開銷巨大,資源利用率低下;而且每個使用者和Kernel是嚴格的一一對應關係,因此能夠同時進行線上程式設計學習的使用者數受限於伺服器所能支援的Kernel數量;由於每個使用者的Kernel進程的運行時環境是不變的,使得無法根據使用者代碼的資源佔用情況將其靈活調度到不同機器上去執行,在多機部署的情況下容易造成各資源配置的不合理,不利於提升系統併發能力。如此,在人工智慧線上程式設計教育中,使得伺服器成本開銷激增,難以推廣和普及。
基於此,本發明實施例提供一種程式設計平台的使用者代碼運行方法,通過構建一組平等的服務節點和一組平等的計算節點,在使用者提交代碼後,通過websocket(全雙工通信的協議)技術將使用者代碼傳送到任一服務節點。該服務節點創建一個運行任務並將其放入任務佇列並維持當前會話連接,任意計算節點從任務佇列中獲取到運行任務後,執行使用者代碼,並將執行結果即時通過任務佇列回饋給對應的服務節點,計算節點隨即釋放資源。服務節點則從任務佇列讀取執行結果並通過全雙工通信的協議即時推送回使用者終端,推送完畢後結束當前會話。其中,服務節點支援多工併發連接,計算節點支援單任務執行。
所述方法的實現流程如圖1所示,圖1是本發明實施例提供的程式設計平台的使用者代碼運行方法一實現流程示意圖。具體而言,本發明實施例方法包括以下步驟。
步驟S101:服務節點獲取用於表徵使用者終端的使用者代碼,並將使用者代碼作為運行任務放置於任務佇列中。
本發明實施例的程式設計平台包括服務節點、任務佇列以及計算節點。
服務節點可獲取多個使用者終端中任意一個使用者終端的使用者代碼,並且可同時獲取多個使用者終端的使用者代碼,支援多使用者終端的併發連接。服務節點可以由伺服器、電腦等任意具有處理能力的電子設備實現。其中,電子設備還可以用於執行其他功能,例如,電子設備還用於執行計算節點獲取的運行任務的計算,即,服務節點和計算節點可由同一電子設備實現或者由不同電子設備實現。服務節點接收使用者代碼的方式包括但不限於websocket通信技術、HTTP(Hyper Text Transfer Protocol,超文字傳輸協定)通信技術,在此不作具體限定。服務節點接收的使用者代碼的來源可多樣化,例如,使用者終端自帶的代碼編輯視窗獲取到使用者編輯的代碼,形成使用者代碼,亦或者使用者終端接收到與其連接的代碼編輯設備傳輸的使用者代碼等。
在本發明實施例中,服務節點的數量為至少兩個。服務節點獲取用於表徵使用者終端的使用者代碼時,至少兩個服務節點通過反向代理被分配使用者代碼。這些服務節點對前端應用開放服務,前端應用與服務節點之間採用全雙工通信的協定進行通信,服務節點接收反向代理伺服器分配的使用者終端的使用者代碼,其中,使用者終端的使用者代碼表徵該使用者終端的標識資訊,比如,表示該使用者終端的序號,或者該使用者終端的使用者帳號等。利用反向代理伺服器實現使用者終端與至少兩個服務節點之間的使用者代碼分配,當反向代理伺服器獲取到使用者終端的使用者代碼,即可將使用者代碼分配到至少兩個服務節點,使得每一服務節點通過反向代理被分配使用者代碼。同樣地,服務節點可同時接收多個使用者終端的使用者代碼,支援多使用者終端的併發連接。
服務節點接收到使用者代碼後,為每個使用者代碼創建一運行任務,並將運行任務放置於任務佇列中,從而任務佇列中包括服務節點投放的所有與使用者代碼一一對應的運行任務。排隊佇列可以為Redis(Remote Dictionary Server,遠端字典服務)清單等儲存系統、RabbitMQ(Message Queue,訊息佇列)等面向消息的中介軟體。
在本發明實施例中,根據使用者代碼的資源依賴需求,將使用者代碼對應的運行任務分離放置。具體地,任務佇列包括第一任務佇列和第二任務佇列,第一任務佇列和第二任務佇列中的運行任務被計算時將依賴於不同的代碼資源,例如,第一任務佇列中的運行任務依賴CPU代碼運行環境資源,而第二任務佇列中的運行任務依賴GPU代碼運行環境資源。第一任務佇列和第二任務佇列中的運行任務的分配取決於使用者代碼的計算特徵,也即,計算特徵用於指示使用者代碼歸屬於第一任務佇列或第二任務佇列。其中,計算特徵的表現形式包括但不限於使用者代碼中的預設位元長的字串標識、二進位碼等。從而,服務節點將使用者代碼作為運行任務放置於任務佇列中時,根據使用者代碼的計算特徵,將使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中。
在本發明實施例中,任務佇列可包括至少兩個子任務佇列,可預先建立服務節點與多個子任務佇列的關聯關係,服務節點獲取用於表徵使用者終端的使用者代碼,並將使用者代碼作為運行任務放置於不同的子任務佇列中,亦或者建立多個服務節點與多個子任務佇列的關聯關係,一部分服務節點將接收到的使用者代碼分配於與其建立關聯關係的一部分子任務佇列,另一部分服務節點將接收到的使用者代碼分配於與其建立關聯關係的另一部分子任務佇列,實現服務節點與任務佇列的對應關聯關係即可。
步驟S102:計算節點監控任務佇列,以獲取運行任務。
任務佇列中包括運行任務,從而計算節點監控任務佇列,檢測到任務佇列中包含該計算節點可執行的運行任務時,即可獲取到運行任務。計算節點從任務佇列中獲取運行任務的方式,包括但不限於任務佇列主動將運行任務分配至計算節點,或者計算節點向任務佇列請求獲取運行任務,任務佇列根據請求將運行任務分配至計算節點。
在本發明實施例中,計算節點的數量為至少兩個。計算節點監控任務佇列,以獲取運行任務時,至少兩個計算節點監控任務佇列,向任務佇列請求獲取運行任務;任務佇列將一個運行任務分配至一個計算節點,從而任務佇列完成運行任務的合理分配。任務佇列將運行任務分配至計算節點的規則可自訂設置,例如,預先儲存所有計算節點的優先等級,任務佇列同時收到多個計算節點對同一運行任務的獲取請求時,將運行任務分配至優先等級高的計算節點;或者將運行任務分配至預設時間內獲取運行任務最少的計算節點,在此不作具體限定。
在本發明實施例中,任務佇列包括第一任務佇列和第二任務佇列、計算節點包括第一計算節點和第二計算節點的情況下,計算節點監控任務佇列具體為第一計算節點監控第一任務佇列,第二計算節點監控第二任務佇列,從而實現不同計算節點分別監控不同任務佇列,方便管理,提高運行任務的獲取效率。其中,第一計算節點和第二計算節點可分別位於不同配置的伺服器上,從而分別擁有不同的計算和儲存資源,可實現不同使用者代碼的計算。對於使用者代碼的計算,可由計算特徵獲知使用者代碼被計算時所依賴的計算和儲存資源,也即,使用者代碼的計算特徵用於指示使用者代碼歸屬於第一任務佇列或第二任務佇列,進而指示使用者代碼被位於不同配置的伺服器上第一計算節點或第二計算節點計算。
進一步的,第一計算節點設置於CPU伺服器上,第二計算節點設置於GPU伺服器上;第一任務佇列包括依賴CPU代碼運行環境資源的運行任務,第二任務佇列包括依賴GPU代碼運行環境資源的運行任務;從而CPU伺服器上的第一計算節點監控第一任務佇列,獲得運行任務,而GPU伺服器上的第二計算節點監控第二任務佇列,獲得運行任務。
步驟S103:計算節點計算運行任務,得到計算結果。
計算節點利用所處伺服器上可利用的計算和記憶體資源,計算所獲得的運行任務,即可得到計算結果。計算節點在完成運行任務的計算後,釋放對應的計算資源並繼續監控任務佇列,也即,計算節點完成當前的運行任務的計算後即釋放資源,繼續監控任務佇列,以獲取新的運行任務,使得計算節點最大限度地複用計算和記憶體資源。其中,本發明不論計算節點可獲取任務佇列中任意運行任務,還是第一計算節點和第二計算節點分別獲取第一任務佇列和第二任務佇列的運行任務,同一計算節點均可在執行完畢運行任務時即釋放資源,不斷獲取新的運行任務,只要計算節點的計算和記憶體資源符合使用者代碼的運行環境資源即可。因此,使用者代碼可以在不同計算節點中執行,使得計算節點的計算和記憶體資源重複利用,充分並合理地利用伺服器的硬體資源。
呈前所述,服務節點根據使用者代碼的計算特徵將使用者代碼作為運行任務放置到第一任務佇列或第二任務佇列;第一計算節點和第二計算節點分別從第一任務佇列和第二任務佇列獲取運行任務;不同配置的伺服器上的第一計算節點和第二計算節點分別利用各自的計算和記憶體資源計算運行任務,得到計算結果。因此,任務佇列根據使用者代碼的實際需求將運行任務分發到計算節點運行,且計算節點歸屬於不同配置的伺服器,實現資源的合理利用。例如,第一任務佇列為CPU任務佇列,第二任務佇列為GPU任務佇列,第一計算節點和第二計算節點分別位於CPU伺服器和GPU伺服器上,第一計算節點從第一任務佇列獲取運行任務並計算,而第二計算節點從第二任務佇列獲取運行任務並計算。具體地,一使用者代碼的計算特徵指示對應的使用者代碼歸屬於第一任務佇列,第一計算節點從第一任務佇列獲取運行任務,利用CPU伺服器上的計算和記憶體資源計算運行任務,得到計算結果。CPU伺服器上的計算節點可以執行不依賴GPU伺服器資源的常規代碼,GPU伺服器上的計算節點可以執行包括但不限於神經網路模型訓練、影像處理等使用GPU伺服器資源的代碼。
步驟S104:服務節點從計算節點獲取計算結果,並將計算結果回饋至使用者終端。
計算節點計算運行任務得到計算結果後,服務節點即可從計算節點獲取計算結果,並將計算結果回饋至使用者終端。服務節點從計算節點獲取計算結果的方式包括但不限於獲取請求、訂閱等,在此不做具體限定。服務節點從計算節點獲取計算結果的方式為獲取請求時,服務節點監控計算節點,向計算節點發送獲取計算結果的獲取請求,對應的計算節點根據獲取請求回饋計算結果至服務節點。服務節點從計算節點獲取計算結果的方式為訂閱時,計算節點計算運行任務得到計算結果後,直接將計算結果回饋回服務節點。
在本發明實施例中,程式設計平台還包括訊息佇列,並且訊息佇列用於暫存計算節點計算運行任務得到的計算結果。訊息佇列可以為Redis清單等儲存系統、RabbitMQ等面向消息的中介軟體。面向消息的服務節點從計算節點獲取計算結果,以將計算結果回饋至使用者終端時,計算節點將計算結果放置於訊息佇列;服務節點監控訊息佇列,以獲取計算結果,並將計算結果回饋至使用者終端。服務節點從計算節點獲取計算結果,以將計算結果回饋至使用者終端時,服務節點從訊息佇列中訂閱到計算節點的計算結果,並通過websocket等通信技術將計算結果回饋至使用者終端。
本發明實施例中,服務節點獲取用於表徵使用者終端的使用者代碼後,即建立與使用者終端的會話連接;服務節點在獲取計算結果之前,保持與使用者終端的會話連接;服務節點獲取到計算節點的計算結果後,即斷開與相應使用者終端的會話連接。從而,服務節點在獲取所述計算結果之前,一直保持服務節點與使用者終端的聯繫,方便將計算結果回饋回使用者終端。使用者代碼的運行過程中,服務節點與計算節點分離設置,使用者終端的連接與使用者代碼的計算分別由服務節點和計算節點完成。其中,服務節點在與使用者終端維持會話的長連接的同時,計算節點完成運行任務的計算,釋放對應的計算資源並繼續監控任務佇列,使得計算節點不斷重複利用計算資源,使用者代碼的運行過程中不需要一直佔用計算節點,實現使用者代碼運行的非同步通信,提高系統的併發能力。計算節點獲取到運行任務並計算得到計算結果後,釋放對應的計算資源,並繼續獲取新的運行任務,使得計算節點的計算資源不被一直佔用,實現同一計算節點的計算資源得到重複利用,進而提高資源利用率。
通過上述方式,程式設計平台包括服務節點、任務佇列以及計算節點,從而服務節點和計算節點分離設置,服務節點獲取用於表徵使用者終端的使用者代碼,並將使用者代碼作為運行任務放置於任務佇列中;計算節點監控任務佇列,以獲取運行任務;計算節點計算運行任務,得到計算結果;服務節點從計算節點獲取計算結果,以將計算結果回饋至使用者終端,從而服務節點實現與使用者終端的連接,而計算節點實現使用者代碼的計算,進而實現使用者代碼的運行。另外,使用者代碼的運行過程中,服務節點與計算節點分離設置,使得使用者終端的連接與使用者代碼的計算分別由服務節點和計算節點完成,實現使用者代碼運行的非同步通信,提高系統的併發能力。
本發明還提供一種服務節點,同樣能夠執行程式設計平台的使用者代碼運行方法。請參閱圖2,圖2是本發明實施例提供的程式設計平台的使用者代碼運行方法另一實現流程示意圖。具體而言,本發明實施例方法包括以下步驟。
步驟S201:獲取用於表徵使用者終端的使用者代碼。
本發明實施例執行程式設計平台的使用者代碼運行方法為上述程式設計平台的使用者代碼運行方法任一實施例中的服務節點。程式設計平台包括服務節點、任務佇列以及計算節點。
服務節點可接收多個使用者終端中任意一個使用者終端的使用者代碼,並且可同時接收多個使用者終端的使用者代碼,支援多使用者終端的併發連接。服務節點接收使用者代碼的方式包括但不限於websocket通信技術、HTTP通信技術,在此不作具體限定。服務節點接收的使用者代碼的來源可多樣化。例如,使用者終端自帶的代碼編輯視窗獲取到使用者編輯的代碼,形成使用者代碼,亦或者使用者終端接收到與其連接的代碼編輯設備傳輸的使用者代碼等。
在本發明實施例中,服務節點通過反向代理被分配使用者代碼,使得使用者終端與服務節點不必建立一一對應的關聯關係,由反向代理伺服器進行使用者終端的使用者代碼的分配。
步驟S202:將使用者代碼作為運行任務放置於任務佇列中,以由計算節點從任務佇列中獲取並計算運行任務。
服務節點將使用者代碼作為運行任務放置於任務佇列中,使得任務佇列中的運行任務被統一分配,可通過排隊機制提升系統的併發回應能力。服務節點獲取到使用者終端的使用者代碼,並保持與使用者終端的會話連接,實現與使用者終端的連接即可,而對於使用者代碼,則將使用者代碼作為運行任務放置於任務佇列後,以由計算節點從任務佇列獲取並計算運行任務,使得使用者終端的連接與使用者代碼的計算分別由服務節點和計算節點完成,實現使用者代碼運行的非同步通信,提高系統的併發能力。
在本發明實施例中,任務佇列包括第一任務佇列和第二任務佇列,計算節點包括第一計算節點和第二計算節點。服務節點將使用者代碼作為運行任務放置於任務佇列中,以由計算節點從任務佇列中獲取並計算運行任務時,根據使用者代碼的計算特徵,將使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中,以由第一計算節點從第一任務佇列中獲取並計算運行任務,或由第二計算節點從第二任務佇列中獲取並計算運行任務。
其餘有關步驟S201和S202的描述可參閱上述步驟S101至步驟S103,在此不再贅述。
步驟S203:獲取計算節點的計算結果,並將計算結果回饋至使用者終端。
計算節點得到計算結果後,服務節點即可從計算節點獲取計算結果,並將計算結果回饋至使用者終端。在本發明實施例中,程式設計平台還包括訊息佇列,並且訊息佇列用於暫存計算節點計算運行任務得到的計算結果。服務節點從計算節點獲取計算結果,以將計算結果回饋至使用者終端時,服務節點監控訊息佇列,以獲取計算結果,並將計算結果回饋至使用者終端。其中,服務節點獲取的計算結果是計算節點將計算結果放置於訊息佇列的。
本發明實施例中,服務節點獲取用於表徵使用者終端的使用者代碼後,即建立與使用者終端的會話連接;服務節點在獲取計算結果之前,保持與使用者終端的會話連接;服務節點獲取到計算節點的計算結果後,即斷開與相應使用者終端的會話連接。從而,服務節點在獲取所述計算結果之前,一直保持服務節點與使用者終端的聯繫,方便將計算結果回饋回使用者終端。
通過上述方式,服務節點獲取用於表徵使用者終端的使用者代碼;將使用者代碼作為運行任務放置於任務佇列中,以由計算節點從任務佇列中獲取並計算運行任務;獲取計算節點的計算結果,並將計算結果回饋至使用者終端,實現使用者代碼的運行。服務節點用於與使用者終端連接,並將使用者終端發出的使用者代碼作為運行任務放置於任務佇列中,使得獨立於服務節點的計算節點從任務佇列中獲取並計算運行任務得到計算結果後,服務節點獲取計算節點的計算結果,並將計算結果回饋至使用者終端,實現使用者代碼的運行。
本發明還提供一種計算節點,同樣能夠執行程式設計平台的使用者代碼運行方法。請參閱圖3,圖3是本發明實施例提供的程式設計平台的使用者代碼運行方法再一實現流程示意圖。具體而言,本發明實施例方法包括以下步驟。
步驟S301:監控任務佇列,以獲取運行任務。
本發明實施例執行程式設計平台的使用者代碼運行方法為上述程式設計平台的使用者代碼運行方法任一實施例中的計算節點。任務佇列中包括運行任務,並且運行任務對應使用者代碼。
計算節點監控包括運行任務的任務佇列,從任務佇列中獲取與使用者代碼一一對應的運行任務。
計算節點包括第一計算節點和第二計算節點,並且第一計算節點和第二計算節點分別位於CPU伺服器和GPU伺服器上,從而第一計算節點監控任務佇列中的依賴CPU伺服器中的計算和記憶體資源的運行任務,而第二計算節點監控任務佇列中的依賴GPU伺服器中的計算和記憶體資源的運行任務。具體地,任務佇列可包括第一任務佇列和第二任務佇列,第一計算節點和第二計算節點分別監控第一任務佇列和第二任務佇列,以獲取運行任務。
也即,使用者代碼與任務佇列相對應,本發明實施例的計算節點為第一計算節點時,從第一任務佇列中獲取CPU伺服器中的計算和記憶體資源的運行任務;計算節點為第二計算節點時,從第二任務佇列中獲取GPU伺服器中的計算和記憶體資源的運行任務。
步驟S302:計算運行任務,得到計算結果。
計算節點利用所歸屬的伺服器上的計算和記憶體資源計算運行任務,得到計算結果。計算節點在完成運行任務的計算後,釋放對應的計算資源並繼續監控任務佇列,也即,計算節點完成當前的運行任務的計算後即釋放資源,繼續監控任務佇列,以獲取新的運行任務,使得計算節點最大限度地複用計算和記憶體資源。
通過上述方式,監控任務佇列,以獲取運行任務;任務佇列中包括運行任務,運行任務對應使用者代碼;計算運行任務,得到計算結果,實現有序進行計算節點運行任務的獲取。任務佇列中包括運行任務,而運行任務對應使用者代碼,於是計算節點監控包括運行任務的任務佇列,從而獲取到對應使用者代碼的運行任務,進而計算運行任務得到計算結果,實現運行任務的獲取與計算。
本發明還提供一種程式設計平台,如圖4所示,圖4是本發明實施例提供的程式設計平台的結構示意圖。具體而言,本發明實施例中程式設計平台40包括服務節點41、任務佇列42、計算節點43。服務節點41用於獲取用於表徵使用者終端的使用者代碼,並將使用者代碼作為運行任務放置於任務佇列42中;計算節點43用於監控任務佇列42,以獲取運行任務;計算節點43還用於計算運行任務,得到計算結果;服務節點41還用於從計算節點43獲取計算結果,以將計算結果回饋至使用者終端。
在本發明實施例中,計算節點43的數量為至少兩個;計算節點43用於監控任務佇列42,以獲取運行任務時,至少兩個計算節點43用於監控任務佇列42,向任務佇列42請求獲取運行任務;任務佇列42用於將一個運行任務分配至一個計算節點43。
在本發明實施例中,任務佇列42包括第一任務佇列和第二任務佇列,至少兩個計算節點43包括第一計算節點和第二計算節點;服務節點41用於將使用者代碼作為運行任務放置於任務佇列42中時,進一步用於根據使用者代碼的計算特徵,將使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中;計算節點43用於監控任務佇列42,具體地,第一計算節點監控第一任務佇列,第二計算節點監控第二任務佇列。
在本發明實施例中,服務節點41的數量為至少兩個;服務節點41用於獲取用於表徵使用者終端的使用者代碼時,至少兩個服務節點41通過反向代理被分配使用者代碼。
在本發明實施例中,計算節點43還用於在完成運行任務的計算後,釋放對應的計算資源並繼續監控任務佇列42。
在本發明實施例中,程式設計平台40還包括訊息佇列44;服務節點41用於從計算節點43獲取計算結果,以將計算結果回饋至使用者終端時,計算節點43還用於將計算結果放置於訊息佇列44;服務節點41還用於監控訊息佇列42,以獲取計算結果,並將計算結果回饋至使用者終端。
在本發明實施例中,服務節點41還用於在獲取計算結果之前,保持與使用者終端的會話連接。
圖4中的程式設計平台40中的服務節點41還用於執行程式設計平台的使用者代碼運行方法。具體地,如圖5所示,圖5是本發明程式設計平台服務節點41一實施例的結構示意圖。服務節點41包括接收單元411、放置單元412和獲取單元413。其中,接收單元411用於獲取用於表徵使用者終端的使用者代碼;放置單元412用於將使用者代碼作為運行任務放置於任務佇列中,以由計算節點從任務佇列中獲取並計算運行任務;獲取單元413用於獲取計算節點的計算結果,並將計算結果回饋至使用者終端。
在本發明實施例中,放置單元412用於將使用者代碼作為運行任務放置於任務佇列中,以由計算節點從任務佇列中獲取並計算運行任務時,還用於根據使用者代碼的計算特徵,將使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中,以由第一計算節點從第一任務佇列中獲取並計算運行任務,或由第二計算節點從第二任務佇列中獲取並計算運行任務。
在本發明實施例中,接收單元411用於獲取用於表徵使用者終端的使用者代碼時,通過反向代理被分配使用者代碼。
在本發明實施例中,獲取單元413用於在獲取計算結果之前,服務節點41保持與使用者終端的會話連接。
圖4中的程式設計平台40的計算節點43還用於執行程式設計平台的使用者代碼運行方法。具體地,如圖6所示,圖6是本發明程式設計平台計算節點43一實施例的結構示意圖。計算節點43包括監控單元431和計算單元432,監控單元431用於監控任務佇列,以獲取運行任務,其中,任務佇列中包括運行任務,運行任務對應使用者代碼;計算單元432用於計算運行任務,得到計算結果。
在本發明實施例中,計算單元432用於完成運行任務的計算後,計算節點43釋放對應的計算資源並繼續監控任務佇列。
為進一步說明本發明的程式設計平台,請參閱圖7所示,圖7是本發明實施例提供的程式設計平台的另一結構示意圖。
本發明實施例中程式設計平台70包括服務節點71、任務佇列72、計算節點73和訊息佇列74,任務佇列72包括第一任務佇列721和第二任務佇列722,計算節點73包括第一計算節點731和第二計算節點732,第一計算節點731位於CPU伺服器701上,而第二計算節點732位於GPU伺服器702上。
具體應用時,服務節點71可接收多個使用者終端中任意一個使用者終端的使用者代碼,並且可同時接收多個使用者終端的使用者代碼,實現獲取用於表徵使用者終端的使用者代碼;服務節點71與使用者終端進行websocket連接,即服務節點71通過websocket通信方式獲取使用者終端的使用者代碼。將使用者代碼作為運行任務放置於任務佇列72時,若根據使用者代碼的計算特徵,判定使用者代碼歸屬於第一任務佇列721並將利用CPU伺服器701的代碼運行資源,則將該使用者代碼作為運行任務放置於第一任務佇列721中,第一計算節點731監控第一任務佇列721獲取並計算運行任務,得到計算結果;或者,若根據使用者代碼的計算特徵,判定使用者代碼歸屬於第二任務佇列722並將利用GPU伺服器702的代碼運行資源,則將該使用者代碼作為運行任務放置於第二任務佇列722中,第二計算節點732監控第二任務佇列722獲取並計算運行任務,得到計算結果;第一計算節點731和第二計算節點732均將計算結果放置於訊息佇列74中,服務節點71監控訊息佇列74,以獲取計算結果,並將計算結果回饋至對應的使用者終端。本發明實施例中有關服務節點71、任務佇列72、計算節點73和訊息佇列74的描述,可參閱上述程式設計平台一實施例,在此不再贅述。
通過上述方式,服務節點將接收到的使用者代碼作為運行任務分別放置於不同任務佇列;然後不同伺服器上的計算節點分別監控不同任務佇列,獲取對應的運行任務,從而利用不同的計算和儲存資源計算運行任務,得到計算結果,並且計算節點均將計算結果統一放置於訊息佇列;最後,服務節點從訊息佇列獲取到計算節點的計算結果,並將計算結果回饋至使用者終端。整個使用者代碼的運行過程中,服務節點與計算節點分離設置,使得使用者終端的連接與使用者代碼的計算分別由服務節點和計算節點完成,計算節點的計算資源可不斷重複利用,並且不同的計算節點對應不同的訊息佇列、從而獲取依賴不同計算和儲存資源的使用者代碼進行計算,實現使用者代碼運行的非同步通信,提高系統的併發能力。
在本發明實施例中,程式設計平台可以為線上程式設計教育平台、人工智慧平台。例如,程式設計平台為線上程式設計教育平台,其面向學校或培訓機構等,使用者終端為訪問線上程式設計教育平台的學生終端,實現使用者代碼的運行。線上程式設計教育平台包括服務節點、任務佇列和計算節點,其中任務佇列為redis清單。學生通過學生終端的程式設計介面輸入使用者代碼,服務節點可接收學生終端的使用者代碼,並且可同時接收多個學生終端的使用者代碼,實現接收線上程式設計教育平台中學生髮出的使用者代碼;服務節點將使用者代碼作為運行任務放置於為任務佇列的redis清單中。計算節點監控redis列表,以獲取運行任務;並計算運行任務,得到計算結果。服務節點從計算節點獲取計算結果,以將計算結果回饋至學生終端。
在本發明實施例中,程式設計平台為線上程式設計教育平台,使用者終端為訪問線上程式設計教育平台的學生終端。線上程式設計教育平台包括服務節點、任務佇列、計算節點和訊息佇列,其中,任務佇列為redis清單且包括第一任務佇列和第二任務佇列;計算節點包括第一計算節點和第二計算節點;訊息佇列為RabbitMQ。線上程式設計教育平台的服務節點根據使用者代碼的計算特徵,判定使用者代碼歸屬於第一任務佇列並將利用CPU伺服器的代碼運行資源,則將該使用者代碼作為運行任務放置於第一任務佇列中,第一計算節點監控第一任務佇列獲取並計算運行任務,得到計算結果;或者,服務節點根據使用者代碼的計算特徵,判定使用者代碼歸屬於第二任務佇列並將利用GPU伺服器的代碼運行資源,則將該使用者代碼作為運行任務放置於第二任務佇列中,第二計算節點監控第二任務佇列獲取並計算運行任務,得到計算結果;第一計算節點和第二計算節點均將計算結果放置於訊息佇列RabbitMQ中,服務節點監控RabbitMQ,以獲取計算結果,並將計算結果回饋至對應的學生終端。
通過上述方式,面向學校或培訓機構等,線上程式設計教育平台可滿足更多數量的學生在線上程式設計教育平台上同時進行線上程式設計學習,實現充分利用算力資源,節約成本。
請參閱圖8,圖8為本發明電子設備一實施例的框架示意圖。具體而言,本發明實施例中電子設備800包括相互耦接的記憶體810和處理器820。其中,記憶體810用於儲存的程式指令以及處理器820處理時所需儲存的資料。
處理器820控制記憶體810及其自身以實現上述程式設計平台的使用者代碼運行方法任一實施例的步驟。處理器820還可以稱為CPU(Central Processing Unit,中央處理單元)。處理器820可能是一種積體電路晶片,具有信號的處理能力。處理器820還可以是通用處理器、數位訊號處理器(Digital Signal Processor,DSP)、專用積體電路(Application Specific Integrated Circuit,ASIC)、現場可程式設計閘陣列(Field-Programmable Gate Array,FPGA)或者其他可程式設計邏輯器件、分立門或者電晶體邏輯器件、分立硬體元件。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。另外,處理器820可以由多個成電路晶片共同實現。
請參閱圖9,圖9是本發明儲存裝置一實施例的框架示意圖。本發明儲存裝置900儲存有能夠被處理器運行的程式指令901,程式指令901用於實現上述任一程式設計平台的使用者代碼運行方法的實施例中步驟。
該儲存裝置900具體可以為U盤、移動硬碟、唯讀記憶體(ROM,Read-Only Memory)、隨機存取記憶體(RAM,Random Access Memory)、磁碟或者光碟等可以儲存程式指令901的介質(包括易失性儲存介質或非易失性儲存介質),或者也可以為儲存有該程式指令901的伺服器,該伺服器可將儲存的程式指令901發送給其他設備運行,或者也可以自運行該儲存的程式指令901。
在本發明所提供的幾個實施例中,應該理解到,所揭露的方法和裝置,可以通過其它的方式實現。例如,以上所描述的裝置實施方式僅僅是示意性的,例如,模組或單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些介面,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施方式方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以儲存在一個電腦可讀取儲存介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存介質中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或處理器(processor)執行本發明各個實施方式方法的全部或部分步驟。而前述的儲存介質包括:U盤、移動硬碟、唯讀記憶體(ROM,Read-Only Memory)、隨機存取記憶體(RAM,Random Access Memory)、磁碟或者光碟等各種可以儲存程式碼的介質。
工業實用性 本發明公開了一種程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質。其中,程式設計平台包括服務節點、任務佇列、計算節點;程式設計平台的使用者代碼運行方法包括:服務節點獲取用於表徵使用者終端的使用者代碼,並將使用者代碼作為運行任務放置於任務佇列中;計算節點監控任務佇列,以獲取運行任務;計算節點計算運行任務,得到計算結果;服務節點從計算節點獲取計算結果,以將計算結果回饋至使用者終端。
40:程式設計平台 41:服務節點 411:接收單元 412:放置單元 413:獲取單元 42:任務佇列 43:計算節點 431:監控單元 432:計算單元 44:訊息佇列 70:程式設計平台 701:CPU伺服器 702:GPU伺服器 71:服務節點 72:任務佇列 721:第一任務佇列 722:第二任務佇列 73:計算節點 731:第一計算節點 732:第二計算節點 74:訊息佇列 800:電子設備 810:記憶體 820:處理器 900:儲存裝置 901:程式指令 S101~S104,S201~S203,S301~S302:步驟
此處的附圖被併入說明書中並構成本說明書的一部分,這些附圖示出了符合本發明的實施例,並與說明書一起用於說明本發明實施例的技術方案。 圖1是本發明實施例提供的程式設計平台的使用者代碼運行方法一實現流程示意圖; 圖2是本發明實施例提供的程式設計平台的使用者代碼運行方法另一實現流程示意圖; 圖3是本發明實施例提供的程式設計平台的使用者代碼運行方法再一實現流程示意圖; 圖4是本發明實施例提供的程式設計平台的結構示意圖; 圖5是本發明實施例提供的程式設計平台服務節點41的結構示意圖; 圖6是本發明實施例提供的程式設計平台計算節點43的結構示意圖; 圖7是本發明實施例提供的程式設計平台的另一結構示意圖; 圖8是本發明實施例提供的電子設備的框架示意圖; 圖9是本發明實施例提供的儲存裝置的框架示意圖。
S101~S104:步驟

Claims (15)

  1. 一種程式設計平台的使用者代碼運行方法,所述程式設計平台包括:服務節點、任務佇列、計算節點;所述方法包括: 所述服務節點獲取用於表徵使用者終端的使用者代碼,並將所述使用者代碼作為運行任務放置於所述任務佇列中; 所述計算節點監控所述任務佇列,以獲取所述運行任務; 所述計算節點計算所述運行任務,得到計算結果; 所述服務節點從所述計算節點獲取所述計算結果,並將所述計算結果回饋至所述使用者終端。
  2. 根據請求項1所述的方法,其中,所述計算節點的數量為至少兩個;所述計算節點監控所述任務佇列,以獲取所述運行任務,包括: 至少兩個所述計算節點監控所述任務佇列,向所述任務佇列請求獲取所述運行任務; 所述任務佇列將一個所述運行任務分配至一個所述計算節點。
  3. 根據請求項1所述的方法,其中,所述任務佇列包括第一任務佇列和第二任務佇列,至少兩個所述計算節點包括第一計算節點和第二計算節點; 所述將所述使用者代碼作為運行任務放置於任務佇列中,包括: 根據所述使用者代碼的計算特徵,將所述使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中; 所述計算節點監控所述任務佇列,包括: 所述第一計算節點監控所述第一任務佇列,所述第二計算節點監控所述第二任務佇列。
  4. 根據請求項1或2所述的方法,其中,所述服務節點的數量為至少兩個;所述服務節點獲取用於表徵使用者終端的使用者代碼,包括: 至少兩個所述服務節點通過反向代理被分配所述使用者代碼。
  5. 根據請求項1至3任一項所述的方法,其中,所述計算節點在完成對所述運行任務的計算後,釋放對應的計算資源並繼續監控所述任務佇列。
  6. 根據請求項1至3任一項所述的方法,其中,所述程式設計平台還包括訊息佇列;所述服務節點從所述計算節點獲取所述計算結果,並將所述計算結果回饋至所述使用者終端,包括: 所述計算節點將所述計算結果放置於所述訊息佇列; 所述服務節點監控所述訊息佇列,以獲取所述計算結果,並將所述計算結果回饋至所述使用者終端。
  7. 根據請求項6所述的方法,其中,所述服務節點在獲取所述計算結果之前,保持與所述使用者終端的會話連接。
  8. 一種程式設計平台的使用者代碼運行方法,所述方法包括: 獲取用於表徵使用者終端的使用者代碼; 將所述使用者代碼作為運行任務放置於任務佇列中,以由計算節點從所述任務佇列中獲取並計算所述運行任務; 獲取所述計算節點的計算結果,並將所述計算結果回饋至所述使用者終端。
  9. 根據請求項8所述的方法,其中,所述將所述使用者代碼作為運行任務放置於任務佇列中,以由計算節點從所述任務佇列中獲取並計算所述運行任務,包括: 根據所述使用者代碼的計算特徵,將所述使用者代碼作為運行任務放置於第一任務佇列或第二任務佇列中,以由第一計算節點從所述第一任務佇列中獲取並計算所述運行任務,或由第二計算節點從所述第二任務佇列中獲取並計算所述運行任務。
  10. 根據請求項8或9所述的方法,其中,所述獲取用於表徵使用者終端的使用者代碼,包括: 通過反向代理被分配所述使用者代碼。
  11. 根據請求項8或9所述的方法,其中,所述方法包括:在獲取所述計算結果之前,保持與所述使用者終端的會話連接。
  12. 一種程式設計平台的使用者代碼運行方法,所述方法包括: 監控任務佇列,以獲取運行任務;所述任務佇列中包括所述運行任務,所述運行任務對應所述使用者代碼; 計算所述運行任務,得到計算結果。
  13. 根據請求項12所述的方法,其中,所述方法包括:在完成對所述運行任務的計算後,釋放對應的計算資源並繼續監控所述任務佇列。
  14. 一種電子設備,包括相互耦接的記憶體和處理器; 所述處理器用於執行所述記憶體儲存的程式指令,以實現請求項1至7任一項所述的方法;和/或,以實現請求項8至11任一項所述的方法;和/或,以實現請求項12或13所述的方法。
  15. 一種電腦可讀儲存介質,儲存有能夠被運行以實現如請求項1至7中任一項所述程式設計平台的使用者代碼運行方法的電腦程式;和/或,儲存有能夠被運行以實現如請求項8至11中任一項所述程式設計平台的使用者代碼運行方法的電腦程式;和/或,儲存有能夠被運行以實現如請求項12或13所述程式設計平台的使用者代碼運行方法的電腦程式。
TW110102727A 2020-02-14 2021-01-25 程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質 TWI786527B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010093681.6A CN111427551A (zh) 2020-02-14 2020-02-14 编程平台的用户代码运行方法及平台、设备、存储介质
CN202010093681.6 2020-02-14

Publications (2)

Publication Number Publication Date
TW202131171A true TW202131171A (zh) 2021-08-16
TWI786527B TWI786527B (zh) 2022-12-11

Family

ID=71547088

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110102727A TWI786527B (zh) 2020-02-14 2021-01-25 程式設計平台的使用者代碼運行方法、電子設備和電腦可讀儲存介質

Country Status (6)

Country Link
JP (1) JP2022522609A (zh)
KR (1) KR20210105378A (zh)
CN (1) CN111427551A (zh)
SG (1) SG11202108352TA (zh)
TW (1) TWI786527B (zh)
WO (1) WO2021159831A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427551A (zh) * 2020-02-14 2020-07-17 深圳市商汤科技有限公司 编程平台的用户代码运行方法及平台、设备、存储介质
CN113157420A (zh) * 2021-04-27 2021-07-23 上海临视人工智能科技有限公司 跨平台分布式任务调度系统及调度方法
CN113905083A (zh) * 2021-10-15 2022-01-07 上海商汤临港智能科技有限公司 用户代码运行方法及装置、电子设备和存储介质
CN115460194A (zh) * 2022-08-20 2022-12-09 杭州沧浪健康管理有限公司 小程序构建上传方法、装置及计算机设备、存储介质
CN116560658B (zh) * 2023-06-29 2024-02-06 睿思芯科(深圳)技术有限公司 基于云技术的芯片集成开发系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467387B2 (en) * 2002-05-31 2008-12-16 International Business Machines Corporation Method for off-loading user queries to a task manager
CN100547973C (zh) * 2007-05-23 2009-10-07 华中科技大学 一种基于对等网络的高性能计算系统
JP2009258803A (ja) * 2008-04-11 2009-11-05 Hitachi Ltd 対話処理システム及び対話処理方法
US9778961B2 (en) * 2015-09-14 2017-10-03 Qualcomm Incorporated Efficient scheduling of multi-versioned tasks
EP3491805B1 (en) * 2016-09-07 2020-10-14 Cloud of Things, Ltd System and method for configuration of a connected device connection
WO2018108035A1 (zh) * 2016-12-13 2018-06-21 腾讯科技(深圳)有限公司 信息处理以及虚拟资源交换方法、装置及设备
CN106874109A (zh) * 2016-12-29 2017-06-20 朗新科技股份有限公司 一种分布式作业分发处理方法及系统
CN106874067B (zh) * 2017-01-24 2020-10-02 华南理工大学 基于轻量级虚拟机的并行计算方法、装置及系统
CN108228349A (zh) * 2017-12-26 2018-06-29 北京市商汤科技开发有限公司 用于处理任务的方法、系统和存储介质
CN108182111B (zh) * 2018-01-23 2022-07-15 百度在线网络技术(北京)有限公司 任务调度系统、方法和装置
US11017107B2 (en) * 2018-03-06 2021-05-25 Amazon Technologies, Inc. Pre-deployment security analyzer service for virtual computing resources
CN109246151B (zh) * 2018-11-05 2021-03-30 国家电网有限公司 一种输电线路视频智能巡检分析调度方法
CN110032364B (zh) * 2019-04-11 2023-08-15 上海商汤智能科技有限公司 数据处理方法、装置、电子设备和计算机存储介质
CN110275778B (zh) * 2019-06-14 2021-07-27 上海商汤智能科技有限公司 在线程序运行方法、装置、电子设备和计算机存储介质
CN110516738B (zh) * 2019-08-23 2022-09-16 佳都科技集团股份有限公司 一种分布式比对聚类方法、装置、电子设备及存储介质
CN111427551A (zh) * 2020-02-14 2020-07-17 深圳市商汤科技有限公司 编程平台的用户代码运行方法及平台、设备、存储介质

Also Published As

Publication number Publication date
CN111427551A (zh) 2020-07-17
KR20210105378A (ko) 2021-08-26
WO2021159831A1 (zh) 2021-08-19
SG11202108352TA (en) 2021-09-29
TWI786527B (zh) 2022-12-11
JP2022522609A (ja) 2022-04-20

Similar Documents

Publication Publication Date Title
WO2021159831A1 (zh) 编程平台的用户代码运行方法及平台、节点、设备、介质
KR102681644B1 (ko) 블록체인 메시지 처리 방법 및 장치, 컴퓨터 및 판독 가능한 저장 매체
US9075659B2 (en) Task allocation in a computer network
CN103971316B (zh) 计算机系统及其绘图处理方法
US8612615B2 (en) Systems and methods for identifying usage histories for producing optimized cloud utilization
US8239868B2 (en) Computer system, servers constituting the same, and job execution control method and program
US20050188087A1 (en) Parallel processing system
US9424096B2 (en) Task allocation in a computer network
CN109117252B (zh) 基于容器的任务处理的方法、系统及容器集群管理系统
US9104488B2 (en) Support server for redirecting task results to a wake-up server
CN104123265A (zh) 一种众核间通信方法及系统
CN111078404B (zh) 一种计算资源确定方法、装置、电子设备及介质
CN114237937A (zh) 一种多线程的数据传输方法和装置
CN115543615A (zh) 一种资源分配方法、装置、电子设备及存储介质
CN109729113A (zh) 管理专用处理资源的方法、服务器系统和计算机程序产品
CN109428926B (zh) 一种调度任务节点的方法和装置
CN112104679B (zh) 处理超文本传输协议请求的方法、装置、设备和介质
CN102891851A (zh) 虚拟桌面访问控制方法、设备及系统
CN104809026B (zh) 一种使用远程节点借用cpu计算资源的方法
CN110532060A (zh) 一种混合网络环境数据采集方法及系统
CN110290206B (zh) 一种用于网吧环境的分布式计算系统及方法
CN114579250A (zh) 一种构建虚拟集群的方法、装置及存储介质
CN108347341A (zh) 一种用于调整虚拟机加速能力的加速能力调整方法及装置
CN104735134B (zh) 一种用于提供计算服务的方法和装置
CN117632457A (zh) 一种加速器调度方法及相关装置

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees