本發(fā)明屬于數(shù)據(jù)傳輸,具體涉及一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置。
背景技術(shù):
1、在有大帶寬通信需求的雷達(dá)通信系統(tǒng)中,使用dds(data?distribution?service)通信中間件的單線程進(jìn)行數(shù)據(jù)收發(fā)時(shí),通信中間件在單線程數(shù)據(jù)分發(fā)時(shí)的性能不足問題,其通過率可能滿足不了雷達(dá)應(yīng)用的高性能通信需求,
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明針對(duì)海量數(shù)據(jù)大帶寬通信需求,提出了一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,采用主題數(shù)據(jù)拆分并行發(fā)送、接收端零拷貝等策略,完成數(shù)據(jù)在標(biāo)準(zhǔn)以太網(wǎng)上的高速、實(shí)時(shí)分發(fā),支持高吞吐率雷達(dá)信息處理。
2、本發(fā)明的一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,包括6個(gè)組成模塊,分別是:初始化模塊(1)、創(chuàng)建主題模塊(2)、創(chuàng)建發(fā)布者模塊(3)、創(chuàng)建訂閱者模塊(4)、并行發(fā)數(shù)模塊(5)和并行收數(shù)模塊(6)。
3、使用這些模塊進(jìn)行數(shù)據(jù)分發(fā)的示意如圖1所示。在數(shù)據(jù)發(fā)布端,首先通過初始化模塊(1)完成必要的實(shí)體創(chuàng)建、內(nèi)存申請(qǐng)和并行度指定等工作;然后根據(jù)指定的并行度,通過創(chuàng)建主題模塊(2)創(chuàng)建指定數(shù)量的子主題;接下來(lái),在每個(gè)子主題下調(diào)用創(chuàng)建發(fā)布者模塊(3)創(chuàng)建發(fā)布者;之后就可以調(diào)用并行發(fā)數(shù)模塊(5)進(jìn)行并行發(fā)數(shù)了。
4、在數(shù)據(jù)訂閱端,各模塊的操作步驟與發(fā)布端相似,但要注意并行度必須與發(fā)布端相同。
5、本發(fā)明改善單線程數(shù)據(jù)收發(fā)吞吐率的一個(gè)關(guān)鍵,在于發(fā)布端要將主題t的數(shù)據(jù)包按并行度n拆分成n個(gè)子主題進(jìn)行發(fā)送,如圖2所示。創(chuàng)建發(fā)布者模塊(3)創(chuàng)建發(fā)送線程池,線程池的大小與并行度相等。線程池中的發(fā)送線程不會(huì)立即執(zhí)行發(fā)送任務(wù),而是在等待各自發(fā)送子任務(wù)中用于指示待發(fā)數(shù)據(jù)是否就緒的信號(hào)量,當(dāng)信號(hào)量可用時(shí),表示發(fā)送子任務(wù)中的數(shù)據(jù)已經(jīng)準(zhǔn)備好,才執(zhí)行發(fā)送動(dòng)作,發(fā)送完成后繼續(xù)等待下一次信號(hào)量就緒。發(fā)送子任務(wù)的規(guī)劃由并行發(fā)數(shù)模塊(5)完成。每當(dāng)?shù)絹?lái)一包待發(fā)送的數(shù)據(jù),該模塊會(huì)根據(jù)并行度n將數(shù)據(jù)包進(jìn)行任務(wù)拆分,使得每個(gè)子任務(wù)發(fā)送的長(zhǎng)度幾乎相等(最后一個(gè)子任務(wù)的數(shù)據(jù)長(zhǎng)度可能略小)。每個(gè)子任務(wù)都是一個(gè)形如“(tk,lenk,offsetk)”的三元組,其中k為子任務(wù)編號(hào),tk表示隸屬于子任務(wù)k的數(shù)據(jù)分片會(huì)以主題tk進(jìn)行發(fā)送,lenk表示子任務(wù)k將要發(fā)送的數(shù)據(jù)分片長(zhǎng)度,offsetk表示待發(fā)送的數(shù)據(jù)分片在原始數(shù)據(jù)包中的偏移量。每個(gè)發(fā)送線程在發(fā)送各自的數(shù)據(jù)分片時(shí),會(huì)將分片長(zhǎng)度和偏移量信息封裝到各自的數(shù)據(jù)包頭中,供接收端使用。
6、圖3示出了發(fā)送端的數(shù)據(jù)發(fā)送邏輯。
7、本發(fā)明改善單線程數(shù)據(jù)收發(fā)吞吐率的另一個(gè)關(guān)鍵,在于接收端根據(jù)并行度n進(jìn)行并行接收,在接收數(shù)據(jù)分片的同時(shí)完成原始數(shù)據(jù)包拼接,如圖4所示。創(chuàng)建訂閱者模塊(4)注冊(cè)收數(shù)回調(diào)函數(shù),每當(dāng)?shù)絹?lái)一個(gè)數(shù)據(jù)分片時(shí),該回調(diào)函數(shù)都會(huì)被調(diào)用。回調(diào)函數(shù)在收到數(shù)據(jù)分片時(shí),首先解出分片的長(zhǎng)度lenk和偏移量offsetk,之后根據(jù)偏移量將數(shù)據(jù)分片拷貝到最終數(shù)據(jù)接收緩沖區(qū)的相應(yīng)位置,最后發(fā)送表示該分片已完成接收的信號(hào)量,通知上層取走數(shù)據(jù)。
8、通過并行收數(shù)模塊(6)獲得主題t的原始數(shù)據(jù)包。該模塊所做的工作就是遍歷等待各分片信號(hào)量(共n個(gè))就緒,因?yàn)閿?shù)據(jù)接收回調(diào)函數(shù)在完成數(shù)據(jù)接收的同時(shí)已經(jīng)根據(jù)偏移量將各分片放置在正確的位置,所以當(dāng)各分片的信號(hào)量均就緒時(shí),實(shí)際的拼包動(dòng)作也已經(jīng)完成,并行收數(shù)模塊只需將數(shù)據(jù)接收緩沖區(qū)的首地址返回給應(yīng)用程序即完成數(shù)據(jù)的交付。并行收數(shù)模塊本身無(wú)需拷貝數(shù)據(jù)分片并拼包,這種零拷貝策略是dds數(shù)據(jù)分發(fā)吞吐率得以提高的一個(gè)重要原因。
9、圖5示出了接收端的數(shù)據(jù)接收邏輯。
10、本發(fā)明的有益效果在于
11、1、實(shí)現(xiàn)了大塊數(shù)據(jù)在以太網(wǎng)上的多核并行收發(fā)。
12、2、顯著提高dds通信中間件的數(shù)據(jù)分發(fā)速率。
1.一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,其特征在于:包括6個(gè)組成模塊,分別是:初始化模塊(1)、創(chuàng)建主題模塊(2)、創(chuàng)建發(fā)布者模塊(3)、創(chuàng)建訂閱者模塊(4)、并行發(fā)數(shù)模塊(5)和并行收數(shù)模塊(6);具體地,
2.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,其特征在于:
3.根據(jù)權(quán)利要求2所述的一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,其特征在于:創(chuàng)建發(fā)布者模塊(3)創(chuàng)建發(fā)送線程池,線程池的大小與并行度相等,線程池中的發(fā)送線程不會(huì)立即執(zhí)行發(fā)送任務(wù),,在等待各自發(fā)送子任務(wù)中用于指示待發(fā)數(shù)據(jù)是否就緒的信號(hào)量,當(dāng)信號(hào)量可用時(shí),表示發(fā)送子任務(wù)中的數(shù)據(jù)已經(jīng)準(zhǔn)備好,執(zhí)行發(fā)送動(dòng)作,發(fā)送完成后繼續(xù)等待下一次信號(hào)量就緒。
4.根據(jù)權(quán)利要求3所述的一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,其特征在于:發(fā)送子任務(wù)的規(guī)劃由并行發(fā)數(shù)模塊(5)完成;每當(dāng)?shù)絹?lái)一包待發(fā)送的數(shù)據(jù),并行發(fā)數(shù)模塊(5)根據(jù)并行度n將數(shù)據(jù)包進(jìn)行任務(wù)拆分,使得每個(gè)子任務(wù)發(fā)送的長(zhǎng)度幾乎相等,每個(gè)子任務(wù)都是一個(gè)三元組,以子任務(wù)編號(hào)為標(biāo)志,包括子任務(wù)主題、子任務(wù)數(shù)據(jù)分片長(zhǎng)度和偏移量;每個(gè)發(fā)送線程在發(fā)送各自的數(shù)據(jù)分片時(shí),會(huì)將數(shù)據(jù)分片長(zhǎng)度和偏移量信息封裝到各自的數(shù)據(jù)包頭中,供接收端使用。
5.根據(jù)權(quán)利要求4所述的一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,其特征在于:創(chuàng)建訂閱者模塊(4)注冊(cè)收數(shù)回調(diào)函數(shù),每當(dāng)?shù)絹?lái)一個(gè)數(shù)據(jù)分片時(shí),回調(diào)函數(shù)都會(huì)被調(diào)用,回調(diào)函數(shù)在收到數(shù)據(jù)分片時(shí),首先解出數(shù)據(jù)分片長(zhǎng)度和偏移量,之后根據(jù)偏移量將數(shù)據(jù)分片拷貝到最終數(shù)據(jù)接收緩沖區(qū)的相應(yīng)位置,最后發(fā)送表示該分片已完成接收的信號(hào)量,通知上層取走數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的一種基于數(shù)據(jù)分段的發(fā)布訂閱多線程并行傳輸裝置,其特征在于:通過并行收數(shù)模塊(6)獲得主題的原始數(shù)據(jù)包,遍歷等待各分片信號(hào)量就緒,因?yàn)閿?shù)據(jù)接收回調(diào)函數(shù)在完成數(shù)據(jù)接收的同時(shí)已經(jīng)根據(jù)偏移量將各分片放置在正確的位置,所以當(dāng)各分片的信號(hào)量均就緒時(shí),實(shí)際的拼包動(dòng)作也已經(jīng)完成,并行收數(shù)模塊只需將數(shù)據(jù)接收緩沖區(qū)的首地址返回給應(yīng)用程序即完成數(shù)據(jù)的交付,無(wú)需拷貝數(shù)據(jù)分片并拼包。