日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

AeroFS 开源 SSMP 协议,包含 Java 和 Go 实现

發布時間:2025/3/17 java 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AeroFS 开源 SSMP 协议,包含 Java 和 Go 实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AeroFS 團隊今天開源了 SSMP 協議,SSMP 也就是 Stupid-Simple Messaging Protocol,里面包含協議規范,Go 實現,Java 實現和服務器加載測試工具。

XMPP 歷史

XMPP 在 AeroFS 有一段很長的歷史了,是 AeroFS 過去 5 年點對點覆蓋網絡的關鍵組件。AeroFS 用 XMPP 來發現點,跨 LAN 域多播,通過可靠服務作為一個信號頻道來建立點對點連接。

一方面,XMPP 可以完成工作。另一方面,XMPP 非常復雜冗長,還有很重的擴展。

ejabberd 可以完美的支持 XMPP 和 XMPP 的各種擴展。非常穩定,但是非常占內存,每個用戶常占內存大約為 500kB,而我們其他服務的用戶數量在不斷增長。

CPU 使用也是非常高,而 AeroFS 團隊希望能有一個低流量的服務。更糟糕的是,有一段時間內存泄露非常嚴重,每天要依靠 cron 作業來重啟一次。

SSMP 產生

AeroFS 在尋找各種解決方案,準備起草一份簡單的規范協議。

像 MQTT 和 STOMP 協議都非常不錯,但是還不夠簡單。EventSource 規范已經非常接近目標,而且過去也被驗證是很不錯的。不幸的是,不能允許請求和時間在同一個連接上交叉。

最終規范看起來大部分來自流行的基于文本的協議,比如 HTTP,SMTP 和 STOMP,但是很明顯更小更簡單了,因為有著更短的 ABNF 語法:

message = ( request | response | event ) LF request = "LOGIN" SP id SP id [ SP payload ]| "CLOSE"| "PING"| "PONG"| forwardable response = code [ SP payload ] event = "000" SP id SP ( forwardable | "PING" | "PONG" ) forwardable = "SUBSCRIBE" SP id [ SP "PRESENCE" ]| "UNSUBSCRIBE" SP id| "UCAST" SP id SP payload| "MCAST" SP id SP payload| "BCAST" SP payload| compat compat = verb [ SP id ] [ SP payload ] code = 3DIGIT verb = 1*UPALPHA id = 1*ID payload = 1*PAYLOAD ID = UPALPHA | LOALPHA | DIGIT| "." | ":" | "@" | "/" | "_" | "-" | "+" | "=" | "~" PAYLOAD = <any 8-bit value, except US-ASCII LF> UPALPHA = <any US-ASCII uppercase letter "A".."Z"> LOALPHA = <any US-ASCII lowercase letter "a".."z"> DIGIT = <any US-ASCII digit "0".."9"> SP = <US-ASCII SP, space (32)> LF = <US-ASCII LF, linefeed (10)>

AeroFS 團隊把它命名為 "Stupid-Simple Messaging Protocol" (SSMP)。

顧名思義,SSMP 相比其他開放消息協議是非常簡單,非常易懂的。比如消息確認和通配符訂閱。AeroFS 團隊主要的設計目標是:

基于文本,容易調試單個連接中可以交叉 請求/應答 和服務器事件足夠簡單,在幾小時內可以使用任何一種編程語言編寫簡單但是完整高效的客戶端或者服務器

使用 Go 編寫的參考實現就是幾個小時就完成了主要的部分,而且可以很快的集成到現有的系統,通過 gockerize 工具

另一個實現使用 Java 編寫,現在在 AeroFS 桌面客戶端實現。

SSMP 成果

一點也不意外的是,Java 編寫的新服務器和之前 Go 編寫的服務器一樣:

更小,代碼更容易維護降低內存占用降低磁盤占用降低 CPU 使用

很明顯,這些改進并不是因為語言的選擇,而是因為更加簡單的設計。但是,從 Go 實現的 SSMP 和 Java 實現的 SSMP 來看,Go 的代碼相對容易維護,可讀性更高。

SSMP 開源

AeroFS 把 SSMP 開源,發布到社區:

協議規范lipwig,使用 Go 實現的手冊基于 Netty 的另一種 Java 實現Go 編寫的服務器加載測試工具

— Hugues & the AeroFS Team.

文章轉載自 開源中國社區[https://www.oschina.net]

總結

以上是生活随笔為你收集整理的AeroFS 开源 SSMP 协议,包含 Java 和 Go 实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。