组合开发一个订阅发布通信库minimsg
曾經的付出
? 以前根據自己的喜好和項目,研究過opendds,編譯和使用都很復雜的東西,但是它是dds的一個標準。
? 以后學習Java,所以了解過netty,弄過dotnetty,但是官方都沒有管了。
? 接觸通信傳輸,UDP的使用很快,弄過一個udt.
? Java的mq都接觸過,還了解過nsq(go).
看見沒有,我對網絡通信很感興趣。
自己也寫過簡單的網絡通信,當然號稱高效通信。
當然還有正在使用的grpc庫。
看,我多么無聊。所以,我任然關注通信、數據庫、分布式。
最近又開始了
最近根據項目的問題和積累,又在準備一個訂閱發布庫,除了滿足一般的訂閱發布,還打算利用grpc模式進行批量傳輸,用一個訂閱來流傳輸。還支持一下ftp.
當然,作為一個不合格的碼農,是不愿意自己從底層做起的。所以悲劇,這次還是組合庫。
先看看我打算采用的原理圖:
1.訂閱方:
2.發布方
介紹
? 在說明庫使用之前,先給大家介紹一下組合的庫。
zmq
?具體請查找其它博文,我使用底層c++庫的方式,不使用netmq.以方便感興趣的小伙伴轉換其它語言。這是一個封裝socket的api庫,當然還遠遠不止,我就不介紹了,官網很齊備。
nanomsg
? 簡單說,zmq的作者覺得c++很不好用,有些問題不方便解決,所有用c語言替換zmq開發的,但是zmq已經有很多貢獻者了。它不支持udp。并且現在也不怎么支持維護了。
nng?
簡單說,它是下一代nanomsg。不知道作者又怎么了,覺得nanomsg也不好,又重新弄了一個c語言庫,正在發展維護。感興趣你們可以問問作者為啥這么折騰。
grpc
google的玩意,我就不多說了自己查閱。
ftpserver
?github上一個ftp服務端庫,我有使用例子。
berkeleydb
這是一個數據庫,用于處理文件記錄信息的,以前的文章中我提到過,該數據庫目前是開源的(因為被oracle收購,就不知道以后了,不過有其他替換)
我的開始
? 那么我怎么使用的呢?
我用zmq庫尋址,進行訂閱發布的地址處理。發布數據時用zmq庫更新發布列表。
用nng進行數據傳輸。
用grpc提供基于流的傳輸模式。
用ftp處理文件問題。
用berkeleydb記錄文件信息和處理一些緩存問題。
使用介紹
? ?為什么使用zmq?因為要全網更新主題發布地址,沒有中心節點,所以用組播的方式進行尋找,這類是很小的短消息,并且只是在應用軟件初期有變化,一旦穩定就沒有變化了。所以我使用zmq的組播協議尋址更新全局發布列表。zmq中集成了可靠組播協議pgm,我自己編譯通過。后面我整理文檔結構時會詳細介紹編譯和項目地址。
? 為什么使用nng?因為這次打算通信直接用tcp,不選擇其它協議,而且用c語言庫好直接編譯跨平臺庫。當然也可以直接用zmq,但是我還是打算用nng,畢竟它號稱下一代。
? ?grpc?本身流式接口,可以跨平臺,方便其它小伙伴修改轉其它語言使用。
?
該項目正在開發中,還沒有發布。
地址:https://github.com/jinyuttt/MiniMsg.git
?
?
?
?
?
總結
以上是生活随笔為你收集整理的组合开发一个订阅发布通信库minimsg的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Abaqus启动失败 FlexNet L
- 下一篇: SCCM 2007 R2 setp by