[發明專利]一種Go語言下的數據任務處理系統及方法在審
| 申請號: | 202010618682.8 | 申請日: | 2020-07-01 |
| 公開(公告)號: | CN111782369A | 公開(公告)日: | 2020-10-16 |
| 發明(設計)人: | 周正德;賈德星;余杭卿;邢政 | 申請(專利權)人: | 浪潮云信息技術股份公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/50 |
| 代理公司: | 濟南信達專利事務所有限公司 37100 | 代理人: | 姜明 |
| 地址: | 250100 山東省濟南市高*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 go 語言 數據 任務 處理 系統 方法 | ||
本發明公開了一種Go語言下的數據任務處理系統及方法,本發明的系統包括Goroutine池,所述Goroutine池包括狀態機、Worker、Balancer和Monitor。本發明的方法包括S1、搭建Goroutine池;S2、啟動Goroutine池,程序產生的數據任務送入至Goroutine池,并在數據任務隊列進行等待,判斷Goroutine池中是否存在可用的Worker,當Goroutine池存在可用Worker時,從數據任務隊列中依順序提取數據任務分配給該Worker進行處理;S3、當數據任務隊列中的數據任務達到設定閾值時,Balancer對Worker進行擴容;S4、Worker處理完當前數據任務后恢復至可用狀態,所有可用狀態的Worker放回至Goroutine池等待接收下一數據任務。本發明限制了Goroutine生成數量,充分復用Goroutine,減少Goroutine創建/銷毀對性能的損耗,減輕Runtime調度壓力,提升應用程序的性能。
技術領域
本發明涉及計算機領域,具體地說是一種Go語言下的數據任務處理系統及方法。
背景技術
Go是一個開源的編程語言,它簡潔而高效。得益于其并發機制,用它編寫的程序能夠非常有效地利用多核計算機。Go代碼編譯成機器碼不僅非常迅速,還具有方便的垃圾回收機制和強大的運行時反射機制。Goroutine是Go并發模型中最基本的執行單元,所有的Goroutine并發運行在同一地址空間,而且在多線程操作系統上可實現多路復用,若一個線程阻塞,比如線程在等待I/O,那么其它的線程會運行它。同時,Goroutine是輕量級的,創建它的所有消耗幾乎就只有棧空間的分配。而且棧最開始是非常小的,僅在需要時才會隨著堆空間的分配和釋放而變化。
Go采用GPM調度模型,Go程序的并發編程中,可以任意地起成千上萬個Goroutine來執行任務,但即便每個Goroutine只分配2KB的內存,如果對其數量不加控制,就會對垃圾回收造成極大的負擔,內存占用提高會導致頻繁地進行垃圾回收,依然會產生性能瓶頸。
發明內容
本發明的目的是針對以上不足,提供一種Go語言下的數據任務處理系統及方法,限制Goroutine的創建數量,減輕Runtime調度壓力以及緩解內存壓力,提升應用程序的性能。
本發明所采用技術方案是:
一種Go語言下的數據任務處理系統,包括Goroutine池,所述Goroutine池包括狀態機、Worker、Balancer和Monitor,其中:
所述狀態機用于控制Goroutine池的狀態;
所述Worker用于處理數據任務請求;
所述Balancer用于根據不同策略,對Worker進行擴縮容;
所述Monitor用于收集Goroutine池的運行數據,用于指導Goroutine池的擴縮容,同時作為Metric數據提供給外部系統用于監控和分析。
作為優選的,本發明的系統所述狀態機對Goroutine池的控制狀態包括起始狀態、初始化狀態、運行狀態、平衡狀態和停止狀態,其中:
Goroutine池處于起始狀態時,Goroutine池啟動,但尚未初始化,不能接受數據處理;
Goroutine池處于初始化狀態時,Goroutine池處于初始化過程中,初始化過程用于完成對Worker Map初始化、設置Worker的最小數量、設置各種超時實現以及擴容倍數;
Goroutine池處于運行狀態時,接收數據,調度Worker運行指定函數處理數據請求任務;
Goroutine池處于平衡狀態時,Goroutine池根據擴/縮容增量參數對Worker數量進行動態調整;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浪潮云信息技術股份公司,未經浪潮云信息技術股份公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010618682.8/2.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





