開發分布式WebIm 1(設想)

2022-01-13 20:17:45 字數 1169 閱讀 3148

開發乙個手機im系統的想法有很久了,最先我定位於基於xmpp協議的實現方式,為此我安裝了openfire和spark,搭建了一套完善的系統用於研究,spark的debug模式對我分析xmpp協議起到了重要的作用,隨後我又安裝了agsxmpp sdk,在一番折騰下我終於完成了agsxmpp示例客戶端與spark客戶端的通訊(openfire有些地方不是100%實現了xmpp協議)。有興趣的朋友可以看我《agsxmpp與openfire聯通》這篇文章。後來我又用過ejabberd作為伺服器,ejabberd挺好的,沒怎麼擺弄就能順利的和我的客戶端相連。但下面這些問題始終無法解決,讓我退卻了,

1.基於xmpp協議的伺服器都不提供使用者花名冊的功能,用其變通方式的花名冊功能效率太低。

2.erlang語言我研究了兩天好不容易看懂了乙個遍歷程式,再往下看我就失去了興趣。

3.手機上只能基於電信的cdma連線,聯通的gprs只能用ip方式連線,移動就乾脆無法連線。

於是自主開發乙個基於分布式的webim就緩緩的萌發於我的腦海中。

隨後我在網上查閱了大量的資料,隨著乙個問題又乙個問題的提出與解決,一張又一張的流程圖做出來。我腦海中的方案逐漸清晰,這裡我把一些心得寫一下,希望和朋友們分享。

1.comet

comet是一種伺服器推技術,我看了很多的介紹,大把大把的框架和協議基本把我繞暈了,我打過一陣退堂鼓,但是comet最大的優勢是節約頻寬,設想一下ajax技術輪詢伺服器:3s一次連線,用基於utf-8的編碼來傳送乙個http頭加內容估計是200byte,8個小時的流量是:200*20*60*8=1,920,000byte,乙個月就是60m,太恐怖了,這樣的軟體肯定沒人用了。不得已逼得我繼續研究comet,後來我發現comet就是伺服器端hold一段時間,保持和客戶端的連線而已,一句sleep就搞定了。當然comet是乙個整體的瀏覽器解決方案,而我只是借用其中的http用於通訊,這點還是不同的。

2.iis最大連線數

3.web園

想要體會3967個連線同時執行嗎?開啟iis-應用程式池-屬性-效能-web園,把預設的1改成100,馬上執行was,效能計數器上顯示的是3966個連線,再開啟乙個ie頁面,資料緩緩的顯示出來,ie進度條被hold住,說明伺服器端沒有釋放連線,同時效能計數器上顯示的是3967個連線,測試成功了!

for(

inti=0

;i<

100;i++)

4.remoting

開發分布式WebIm 2(概述)

1.業務分離的設計 分布式的優點是能用大量的廉價伺服器組建成乙個巨大的系統,價效比很高。簡單的說就是把業務模組盡可能的縮小的乙個原子級別,然後從系統中剝離出來單獨執行,當把系統中所有的業務一一剝離後,分布式系統也就搭建成功一半了。剩下的就是高效的處理每個業務的資料流。乙個簡單的im系統我大概分為4個...

java分布式開發,什麼是分布式開發

就是同乙個服務,把資料庫的不同部分分開建立到不同的伺服器上。以緩解資料庫大量資料訪問的壓力。很多大公司的業務量比較大,每天的訪問量都達到幾百萬上千萬,甚至上億的訪問量,在訪問量不是很大的情況下,是可以通過提高單台伺服器的配置來滿足需求的。但是當單臺伺服器已經滿足不了需求的時候就需要做分布式處理了。畢...

分布式隨筆1 分布式概述

分布式,好寬泛的話題,來來咱扯兩句。你乙個人再強壯,也扛不了100袋大公尺,單機的資源也很有限,大 的大資料量 高併發以及各種業務需求 童鞋們的web應用,伺服器 rdb mq 服務 快取以及各類基礎設施,更別說還有安全 大資料方面的需求 於是,我們常見的面向服務的dubbo springcloud...