一、绪论   

Ejabberd是一个用Erlang/OTP写的开源即时通讯服务器,其是跨平台、分布式、容错且基于开放标准的实时通讯系统。Ejabberd是一个功能丰富的XMPP服务器,同时适合小规模和超大估摸部署,无论是否需要可伸缩性。

二、关键功能

1、跨平台

Ejabberd可以运行在Microsoft Windows和类Unix系统,例如Linux、FreeBSD和NetBSD。

2、分布式

可以在一个集群的机器上运行Ejabberd,并且所有的机器都服务于同一个或一些Jabbe域,当你需要更大容量的时候,你可以简单地增加一个廉价节点到集群里, 因此,不需要买一个昂贵的高端机器来支持上万个并发用户。

3、容错

可以布署一个Ejabberd集群,这样一个正常运行的服务的所有必需信息将被复制到所有节点. 这意味着如果其中一个节点崩溃了, 其它节点将无中断的继续运行. 另外, 也可以‘不停机’增加或更换节点。

4、易于管理

Ejabberd建立于开源的Erlang,所以不需要安装外部服数据库、外部web服务器, 除此以外,因为每个东西都已经包含在里面且处于开箱可用状态. 其管理上的好处包括:

(1)详尽的文档;

(2)便捷的安装程序,包括在Linux、Mac OS X以及Windows系统下;

(3)Web管理;

(4)共享名册组;

(5)命令行管理工具;

(6)可外部集成的验证机制;

(7)发送匿名消息的能力。

5、国际化

Ejabberd领导国际化,非常适合全球化,相关功能包括:

(1)翻译成25种语言;

(2)支持IDNA

6、开放标准

Ejabberd是一个完全支持XMPP标准的开源Jabber服务器:

(1)完全兼容XMPP;

(2)基于XML的协议;

(3)支持的协议很多。

三、额外功能

1、模块化

(1)只装载你想要的模块;

(2)用自定义模块扩展Ejabberd。

2、安全性

(1)支持c2s和s2s连接的SASL和STARTTLS;

(2)支持s2s连接的STARTTLS和Dialback;

(3)通过HTTPS安全访问进行Web管理。

3、数据库

(1)快速布署的内部数据库(Mnesia);

(2)原生的MySQL支持;

(3)原生的PostgreSQL支持;

(4)支持ODBC数据存储;

(5)支持Microsoft SQL Server。

4、验证

(1)内部验证;

(2)PAM、LDAP 和 ODBC;

(3)外部验证脚本。

5、其他

(1)支持虚拟主机;

(2)XML流压缩 (XEP-0138);

(3)统计 (XEP-0039);

(4)支持IPv6的c2s和s2s连接;

(5)支持集群和HTML日志的多用户聊天模块;

(6)基于用户vCards的用户目录;

(7)支持基于PubSub的个人事件发行-订阅组件;

(8)支持web客户端: HTTP轮询HTTP绑定(BOSH)服务;

(9)IRC网关;

(10)组件支持:安装特定网关之后和外部网络的接口,如 AIM, ICQ 和 MSN。

别看上面列的功能多,实际使用中你会发现都很好用

Ejabberd源码解析前奏--概述的更多相关文章

  1. Ejabberd源码解析前奏--管理

    一.ejabberdctl 使用ejabberdctl命令行管理脚本,你可以执行ejabberdctl命令和一些普通的ejabberd命令(后面会详细解说).这意味着你可以在一个本地或远程ejabbe ...

  2. Ejabberd源码解析前奏--配置

    一.基本配置     配置文件将在你第一次启动ejabberd时加载,从该文件中获得的内容将被解析并存储到内部的ejabberd数据库中,以后的配置将从数据库加载,并且任何配置文件里的命令都会被添加到 ...

  3. Ejabberd源码解析前奏--集群

    一.如何工作 一个XMPP域是由一个或多个ejabberd节点伺服的. 这些节点可能运行在通过网络连接的不同机器上. 它们都必须有能力连接到所有其它节点的4369端口, 并且必须有相同的 magic ...

  4. Ejabberd源码解析前奏--安全

    一.防火墙设置    当你配置防火墙的时候,你需要注意以下 TCP 端口: 端口 描述 5222 用于 Jabber/XMPP 客户端连接的标准端口, 纯文本或 STARTTLS. 5223 Jabb ...

  5. Ejabberd源码解析前奏--调试

    一.日志文件 一个ejabberd节点写两个日志文件:    ejabberd.log ejabberd 服务日志, 由 ejabberd 节点汇报的消息erlang.log Erlang/OTP 系 ...

  6. iOS开发之Alamofire源码解析前奏--NSURLSession全家桶

    今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结 ...

  7. Spring5源码解析-前奏:本地构建Spring5源码

    构建环境 macOS 10.13.6 JDK1.8 IntelliJ IDEA 2018.3.6 (Ultimate Edition) Spring v5.1.9.RELEASE Gradle 5.5 ...

  8. AspNetCore3.1_Secutiry源码解析_1_目录

    文章目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心项目 AspNetCore3.1_ ...

  9. Java并发包源码学习系列:阻塞队列实现之LinkedBlockingQueue源码解析

    目录 LinkedBlockingQueue概述 类图结构及重要字段 构造器 出队和入队操作 入队enqueue 出队dequeue 阻塞式操作 E take() 阻塞式获取 void put(E e ...

随机推荐

  1. [unity3d]手游资源热更新策略探讨

    原地址:http://blog.csdn.net/dingxiaowei2013/article/details/20079683 我们学习了如何将资源进行打包.这次就可以用上场了,我们来探讨一下手游 ...

  2. POJ 1716

    #include <iostream> #include <algorithm> #define MAXN 20005 using namespace std; int _m[ ...

  3. POJ 3278Catch That Cow

    http://poj.org/problem?id=3278 大意是说牛在原地不动,他在某点去抓牛,他有两种方式可以走,第一种走一步,往前往后都可,第二种是走现在所在点的两倍的数目.只要能够刚好到达牛 ...

  4. [SQL Server 系] -- 模糊查询

    SQL Server中的通配符有下面四种 通配符 说明 % 包含零个或多个字符的任意字符串 _(下划线) 任意单个字符 [ ] 任意在指定范围或集合中的单个字符 [^ ] 任意不在指定范围或集合中的单 ...

  5. struts2学习笔记(2)——简单的输入验证以及标签库的运用

    struts2自带了一些标签库,运用好这些标签库会减少开发周期. 1.struts2标签库是在哪定义的? struts2标签库定义在struts2-core-2.1.8.jar这个文件中,具体在这个j ...

  6. Ubuntu 启动栏添加eclipse图标

    sudo gedit /usr/share/applications/eclipse.desktop [Desktop Entry] Name=Eclipse Comment=c project ma ...

  7. cognos8.3 sample在DB2里的安装

    db2 create db c83 alias c83 using codeset UTF-8 territory CA 创建sample数据库 db2set db2codepage= db2 cha ...

  8. Compare_Connect_Letter

    题目描述: 比较两个数字mn和nm(如果mn<nm则m<n, 如果nm<mn则n<m,否则n=m) 连接这两个数字 如(mnnm) //比较两个数字mn和nm(如果mn< ...

  9. C# 使用ManualResetEvent 进行线程同步

    上一篇我们介绍了AutoResetEvent,这一篇我们来看下ManualResetEvent ,顾名思义ManualResetEvent  为手动重置事件. AutoResetEvent和Manua ...

  10. Android使用Fragment程序崩溃

    调用Fragment的Activity要继承并实现Fragment.OnFragmentInteractionListener