开发社交应用的利器——Ejabberd 一瞥-阿里云开发者社区

开发者社区> 数据库> 正文

开发社交应用的利器——Ejabberd 一瞥

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/44899559 Erlang在社交应用中的地位突显,自己搭一个大容量高并发的IM服务器变得不那么遥不可及了。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/44899559

Erlang在社交应用中的地位突显,自己搭一个大容量高并发的IM服务器变得不那么遥不可及了。Ejabberd 正是这样一个不错的选择,至少是一个很棒的参考。对于一个4核16G内存的服务器,单个Ejabberd节点可以支持30万的IM用户。

 

ejabberd是基于Jabber/XMPP协议的即时通讯服务器,由GPLv2授权(免费和开放源码),采用Erlang/OTP开发。它的特点是跨平台,容错,集群和模块化。

 

XMPP是由IETF制定的一个可扩展的即时消息通信协议。XMPP基本有两部分组成,一部分是它的核心协议,还有一部分是扩展协议。其中核心协议主要由RFC-6120、RFC-6121、RFC-6122组成。还有一堆的扩展协议,具体可以参见XMPP官网扩展协议列表部分。一般会使用到的扩展协议包括XEP-0160 XEP-0013离线消息处理、XEP-0045多用户聊天、XEP-0096文件传输。Smack是Java语言写的XMPP Library,貌似Java中较好的XMPP客户端了。

 

Ejabberd 的系统架构如图所示:(http://docs.ejabberd.im/architect/

 

 

Ejabberd 支持的主要功能有:

l  点对点消息One-to-onemessaging

l  存储转发Store-and-forward(offline messages)

l  通讯录和状态显示

l  群聊

l  消息备档管理

l  在线状态扩展:Personal Event Protocol (PEP)和输入状态指示

l  隐私设定

l  支持vCards的用户资料

l  基于 BOSH 和 websockets的web支持

l  面向移动设备的流式管理(aka XEP-0198)

l  消息发送回执(akaXEP-184)

l  最后的消息活动

l  命令行管理工具…...

 

Ejabberd既可以使用Mnesia作为数据库,也可以是Mysql等。基于良好的可扩展性,ejabberd同样支持SIP和WebRTC。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章