訊息分片傳輸設計與實現

2021-10-03 06:31:26 字數 1896 閱讀 1808

一、資料傳送過程中存在的問題

傳送中無法取消檔案傳送

大檔案傳輸容錯率較低

同一連線無法實現檔案、普通資訊優先順序

二、分片資料傳輸流程

三、分片邏輯實現

根據檔案大小計算分片、並讀取資料到分片

分片資料固定格式打包傳送

分片資料解析與分片組裝

dispatcher排程邏輯調整

四、packet規則

五、分片訊息規則

幀大小 : 最大為2的16次方-1=65535(0占用乙個位元組,所以最大標識為65535),即幀的大小最大為65535

幀型別 :表明幀是否是首幀(如果為首幀,則根據型別建立對應的幀型別。如果不是,則直接新增資料)、取消幀等

幀標誌資訊:用於儲存加密的資訊,如加密的型別

對應包唯一標示 :正數,範圍為1~255(0一般不使用),比如頭幀packet攜帶的是1,資料幀也是1,那麼第二個packet來的時候攜帶的標示為2,資料幀也為2。當接收到標示為2時,則向相同的packet塞資料。此時,可以實現併發255個的訊息傳輸。

預留空間 : 對於可能性的擴充套件

資料區 :幀載體

六、packet新規則

packet包含包頭和包體,包頭為首幀,首幀為如圖所示的資料結構。

包頭的內容會新增到幀的資料區中,告訴packet的包體是多長,型別是什麼,包體的packetinfo是什麼。

包體包含很多幀。

七、幀frame資料結構

八、首幀資料內容

上半部分是每一幀的頭部部分

從data length開始,都屬於資料部分。

資料部分,首先使用5個位元組儲存資料的長度,1個位元組儲存資料的型別,256個位元組儲存headerinfo

九、基礎的類

frame :分片的類

abssendframe : 基礎傳送幀

abssendpacetframe : 基礎傳送packet幀

sendheaderframe : 傳送頭幀

sendentityframe :傳送實體幀

absreceiveframe : 基礎接收幀

receiveheaderframe :接收頭幀

receiveentityframe :接收實體幀

cancelsendframe :取消傳送的幀

asyncpacketreader : 管理packet的接收,實現分片的邏輯

asyncpacketwriter : 管理packet的接收,實現分片的邏輯

byteprioritynode : 帶優先順序的結點,可用於構成鍊錶

十、類圖

十一、將packet轉為frame的過程

單向資訊傳輸系統設計實現

這樣的系統,必然是真正的 機器視覺 系統,不僅包括影象演算法的處理,而且需要包括裝置的架設,並且結合多種技術 ocr,具有一定挑戰意義和現實意義。這裡做簡單實現。一 基於ocr的單向資訊傳輸系統。所謂單項資料傳輸,書中提到的方法是採用ascii碼進行分析。但是我認為採用ocr識別的話,如果能夠很好地...

漫遊Kafka設計篇之訊息傳輸的事務定義(5)

之前討論了consumer和producer是怎麼工作的,現在來討論一下資料傳輸方面。資料傳輸的事務定義通常有以下三種級別 最多一次 訊息不會被重 送,最多被傳輸一次,但也有可能一次不傳輸。最少一次 訊息不會被漏傳送,最少被傳輸一次,但也有可能被重複傳輸.精確的一次 exactly once 不會漏...

設計與實現

為了概念上的完整性,系統的設計必須有乙個人,最多2個人來完成,問題來了,有的人會認為,那其他人員幹什麼?創意都被這1 2個人壟斷,剩下的實現過程就很枯燥了.實際上,經驗已經表明,沒有規矩,不成方圓 最差的建築往往是那些預算遠遠超標的專案,因為這些專案一開始的概念就不完整.外部的體系結構的強制性 設計...