一、绪论   

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. spoj 78

    数学  组合 隔板法 #include <iostream> #include <cstring> #include <cstdio> #include <s ...

  2. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  3. Unity3D脚本中文系列教程(五)

    http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii Unit ...

  4. POJ 1363 Rails(栈)

    思路:将出车站的顺序存入数组train,由于入车站的顺序是固定的,为1~N,所以用P表示进站的车,初始为1. 接下来举例说明吧: 原来入站顺序:    1 2 3 4 5 读入的出战顺序: 3 4 2 ...

  5. APT攻击

    http://netsecurity.51cto.com/art/201211/363040.htm

  6. hdu 1329 Hanoi Tower Troubles Again!

    找规律的题目an=an-1+(i+i%2)/2*2; ;}

  7. Android sqlite cursor的遍历

    查询并获得了cursor对象后,用while(corsor.moveToNext()){}遍历,当corsor.moveToNext()方法调用,如果发现没有对象,会返回false public Li ...

  8. MongoDB安装(Linux)

    下载文件 http://downloads.mongodb.org/linux/mongodb-linux-i686-static-2.5.0.tgz 解压: tar -zxvf mongodb-li ...

  9. 用static关键字修饰类

    Java里面static一般用来修饰成员变量或函数.但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以.被static修饰的内部类可以直接作为一个普通类来使用,而 ...

  10. parent children

    class parent{ protected static int count=0; public parent() { count++; } } public class child extend ...