Erlang是我非常喜欢的一门编程语言,当然曾经也怀疑过Erlang是不是太老了、是不是过时了。尤其当golang刚出来的那段时间。不过感谢自己的坚持,也感谢What's App的成功,让我坚持了下来。
我一直坚信,热部署是很重要的存在。函数式语言的无状态、无锁并发特性非常适合做分布式的服务。
现实和理想之间的差距还是有的,不大,也就孙猴子一个筋斗云的距离而已。看着Java,Cpp们拥簇日益剧增,而Erlang始终是个小众语言。甚至当Javascript都已经开始挑大梁、当主角的时候,Erlang还是那个Erlang,不温不火。
作为热爱Erlang的我来说,一直希望能为Erlang做出点贡献,为Erlang社区做出点贡献。这才有了前面的 Erlang那些事儿 文集,这才有了 使用Erlang搭建IM服务 这个文集。
这个文集的目标是在7月中旬之间更新完毕,会从存储访问、协议解析、客户端请求&返回、消息推送等几个层面描述IM的基础服务搭建。
由于业余时间推动这个事情的进展,因此不会涉及非常复杂的IM业务。只会涉及 点与点之间的即时聊天,离线消息获取,未读技术更新 这三块业务。至于群聊的话,将于7月中旬以后再做更新规划。
目录预告
- IM的业务规划、模块划分、技术选型
- 表结构设计、使用Erlang访问MySQL实现
- 使用Erlang访问Redis实现
- 网络协议设计 -- 包头
- 网络协议设计 -- 包体
- 网络协议设计 -- 业务相关
- 错误码设计
- 登陆流程
- 实时聊天流程
- 离线消息流程
- 未读计数流程
- 未读消息流程
工程目录搭建
我们使用rebar完成Erlang工程的初始化。
创建完成之后的目录如图所示:
Tips
- 关于Erlang安装、开发编辑器、Erlang语法等请阅读《Erlang编程指南》或移步我的文集:Erlang那些事儿
- 关于rebar,请阅读文章:https://github.com/rebar/rebar/wiki
- 源码地址: https://github.com/Allen5/im
网友评论