使用者資訊用user1@ip1, user2@ip2表示。 後面的訊息儲存db是公共的。
1)使用者登入時主動拉取資訊, server將該使用者的離線資訊發給使用者
2)同server中, 不同使用者傳遞訊息時, server將收到的其他使用者發來的訊息直接儲存並發給該目標使用者、無需判斷傳送是否成功。 不成功則表示使用者連線異常了, 下次再連上時,目標使用者能主動拉取到。【保證了任何情況下不會丟掉訊息】
3)user1通過server1**給server2的user2時,server1收到時即儲存, 然後server1**給server2; 如果**成功,則由server2執行步驟2負責最終的投遞;server2投遞成功,user2就能看到最新;否則user2離線、下次再登陸依然能看到。【也保證了任何情況下不會丟掉訊息】
這種要求server之間能全互通、且全互連線了。 不支援server之間的多次relay、不支援第三方server。
可能問題:
1) 寫可能成為瓶頸。在db前端加cache、資料慢慢由cache寫到db中; 查詢時合併db結果和cache結果。
2)群聊、群通知(幾
十、幾百的規模)。server逐個給群中每個人發、或者發給其他server**。【資訊的儲存是以群為單位】
5)有可能有多次relay的需求? 或者relay之後的server也有儲存的需求? cache只是減少寫壓力; 讀依賴於mysql本身的快取機制。
每個模組負責自己的事情、把自己的事情做好, 能夠向外承諾模組自己的責任; 模組也能信任其他模組聲稱的職能。
模組間的功能和職責劃分明確, 否則模組之間互相不能信任,考慮的東西太多太複雜, 無法達成簡潔、清晰的設計。
略 仿xmpp
NSNotification系統通知優化
最近在github上看到了lrnotificationobserver這個專案,看了一下實現方式,作者通過arc機制例項化註冊物件子類與關聯物件的方法來管理註冊物件的生命週期。從而省去了系統通知移除的過程,本篇介紹該專案實現過程。註冊 nsnotificationcenter defaultcent...
iOS註冊系統通知
ios程式設計裡面,用到系統通知來接受事件是十分普遍的,最典型的就是鍵盤的通知事件。我們也可以自己定義通知的事件,讓系統來調去我們想要的函式。註冊通知 nsnotificationcenter defaultcenter addobserver self selector selector resp...
NSNotification系統通知優化
最近在github上看到了lrnotificationobserver這個專案,看了一下實現方式,作者通過arc機制例項化註冊物件子類與關聯物件的方法來管理註冊物件的生命週期。從而省去了系統通知移除的過程,本篇介紹該專案實現過程。註冊 nsnotificationcenter defaultcent...