0. 概述&目錄

Erlang是我非常喜歡的一門編程語(yǔ)言,當(dāng)然曾經(jīng)也懷疑過Erlang是不是太老了、是不是過時(shí)了。尤其當(dāng)golang剛出來(lái)的那段時(shí)間。不過感謝自己的堅(jiān)持,也感謝What's App的成功,讓我堅(jiān)持了下來(lái)。

我一直堅(jiān)信,熱部署是很重要的存在。函數(shù)式語(yǔ)言的無(wú)狀態(tài)、無(wú)鎖并發(fā)特性非常適合做分布式的服務(wù)。

現(xiàn)實(shí)和理想之間的差距還是有的,不大,也就孫猴子一個(gè)筋斗云的距離而已??粗鳭ava,Cpp們擁簇日益劇增,而Erlang始終是個(gè)小眾語(yǔ)言。甚至當(dāng)Javascript都已經(jīng)開始挑大梁、當(dāng)主角的時(shí)候,Erlang還是那個(gè)Erlang,不溫不火。

作為熱愛Erlang的我來(lái)說(shuō),一直希望能為Erlang做出點(diǎn)貢獻(xiàn),為Erlang社區(qū)做出點(diǎn)貢獻(xiàn)。這才有了前面的 Erlang那些事兒 文集,這才有了 使用Erlang搭建IM服務(wù) 這個(gè)文集。

這個(gè)文集的目標(biāo)是在7月中旬之間更新完畢,會(huì)從存儲(chǔ)訪問、協(xié)議解析、客戶端請(qǐng)求&返回、消息推送等幾個(gè)層面描述IM的基礎(chǔ)服務(wù)搭建。

由于業(yè)余時(shí)間推動(dòng)這個(gè)事情的進(jìn)展,因此不會(huì)涉及非常復(fù)雜的IM業(yè)務(wù)。只會(huì)涉及 點(diǎn)與點(diǎn)之間的即時(shí)聊天,離線消息獲取,未讀技術(shù)更新 這三塊業(yè)務(wù)。至于群聊的話,將于7月中旬以后再做更新規(guī)劃。

目錄預(yù)告

  1. IM的業(yè)務(wù)規(guī)劃、模塊劃分、技術(shù)選型
  2. 表結(jié)構(gòu)設(shè)計(jì)、使用Erlang訪問MySQL實(shí)現(xiàn)
  3. 使用Erlang訪問Redis實(shí)現(xiàn)
  4. 網(wǎng)絡(luò)協(xié)議設(shè)計(jì) -- 包頭
  5. 網(wǎng)絡(luò)協(xié)議設(shè)計(jì) -- 包體
  6. 網(wǎng)絡(luò)協(xié)議設(shè)計(jì) -- 業(yè)務(wù)相關(guān)
  7. 錯(cuò)誤碼設(shè)計(jì)
  8. 登陸流程
  9. 實(shí)時(shí)聊天流程
  10. 離線消息流程
  11. 未讀計(jì)數(shù)流程
  12. 未讀消息流程

工程目錄搭建

我們使用rebar完成Erlang工程的初始化。
創(chuàng)建完成之后的目錄如圖所示:

Erlang工程目錄結(jié)構(gòu)

Tips

  1. 關(guān)于Erlang安裝、開發(fā)編輯器、Erlang語(yǔ)法等請(qǐng)閱讀《Erlang編程指南》或移步我的文集:Erlang那些事兒
  2. 關(guān)于rebar,請(qǐng)閱讀文章:https://github.com/rebar/rebar/wiki
  3. 源碼地址: https://github.com/Allen5/im
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容