Ejabberd源码解析前奏--管理】的更多相关文章

一.ejabberdctl 使用ejabberdctl命令行管理脚本,你可以执行ejabberdctl命令和一些普通的ejabberd命令(后面会详细解说).这意味着你可以在一个本地或远程ejabberd服务器(通过提供参数 --node NODENAME)上启动.停止以及执行很多其它管理任务. ejabberdctl脚本可在文件 ejabberdctl.cfg 里配置. 这个文件包含每个可配置选项的详细信息. ejabberdctl脚本返回一个数字状态码. 成功显示为0, 错误显示为1, 其它…
一.基本配置     配置文件将在你第一次启动ejabberd时加载,从该文件中获得的内容将被解析并存储到内部的ejabberd数据库中,以后的配置将从数据库加载,并且任何配置文件里的命令都会被添加到数据库里. 需要注意的是:ejabberd从不编辑配置文件,因此,使用Web管理修改的配置被存储在数据库中, 而不是反射到配置文件.如果你想那些修改在ejabberd重启后还有效,你可以同时也修改配置文件或删除它的所有内容. 配置文件包含一系列Erlang条款.以‘%’标志开始的行被忽略.每个条款是…
一.如何工作 一个XMPP域是由一个或多个ejabberd节点伺服的. 这些节点可能运行在通过网络连接的不同机器上. 它们都必须有能力连接到所有其它节点的4369端口, 并且必须有相同的 magic cookie (见 Erlang/OTP 文档, 换句话说,在所有节点上,文件 ~ejabberd/.erlang.cookie 必须是相同的 ). 这是必须的,因为所有节点交换关于已连接的用户.s2s连接.已注册的服务等信息.每个 ejabberd 节点有如下四个模块: 1.Router    这…
一.绪论    Ejabberd是一个用Erlang/OTP写的开源即时通讯服务器,其是跨平台.分布式.容错且基于开放标准的实时通讯系统.Ejabberd是一个功能丰富的XMPP服务器,同时适合小规模和超大估摸部署,无论是否需要可伸缩性. 二.关键功能 1.跨平台 Ejabberd可以运行在Microsoft Windows和类Unix系统,例如Linux.FreeBSD和NetBSD. 2.分布式 可以在一个集群的机器上运行Ejabberd,并且所有的机器都服务于同一个或一些Jabbe域,当你…
一.防火墙设置    当你配置防火墙的时候,你需要注意以下 TCP 端口: 端口 描述 5222 用于 Jabber/XMPP 客户端连接的标准端口, 纯文本或 STARTTLS. 5223 Jabber 客户端使用旧的 SSL 方法连接的标准端口 . 5269 用于 Jabber/XMPP 服务器连接的标准端口. 4369 EPMD  监听Erlang节点名请求. 端口范围 用于两个Erlang节点之间的连接. 这个范围是可配置的(参见第二部分即epmd). 二.epmdepmd (Erlan…
一.日志文件 一个ejabberd节点写两个日志文件:    ejabberd.log ejabberd 服务日志, 由 ejabberd 节点汇报的消息erlang.log Erlang/OTP 系统日志, 由 Erlang/OTP 使用 SASL (系统架构支持库) 汇报的消息选项 loglevel 修改文件 ejabberd.log 的详细程度. 语法是:{loglevel, Level}. 可能的 Level 有:    0 没有ejabberd日志 (不推荐)1     Critica…
今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结合代码理解应该不难.更详细的信息请移步于苹果官方介绍URL Loading System,网上好多iOS网络编程的博客都翻译于此.因为目前iOS开发中,网络请求大部分使用NSURLSession,所以今天的博客我们就以NSURLSession展开.关于之前使用的NSURLConnection在此就不…
构建环境 macOS 10.13.6 JDK1.8 IntelliJ IDEA 2018.3.6 (Ultimate Edition) Spring v5.1.9.RELEASE Gradle 5.5.1.直接使用brew安装Gradle brew install gradle 源码构建 1.源码导入 2.阅读Spring源码下的 import-into-idea.md 文件可知 Precompile spring-oxm with ./gradlew :spring-oxm:compileTe…
这部分的内容主要包括Epoll/select的封装,在封装好相应函数后,再使用一个类来管理相应事件,实现的文件为pollmgr.{h, cc}. 事件函数封装 可看到pollmgr.h文件下定一个了一个虚基类aio_mgr class aio_mgr { public: ; ; ; ; virtual ~aio_mgr() {} }; 这便是具体事件类实现的基类,可看到文件末尾处的继承关系 class SelectAIO : public aio_mgr { public : SelectAIO…
今天要聊的话题可能被大家关注得不过,但是对于 Celery 来说确实很有用的功能,曾经我在工作中遇到这类情况,就是我们将所有的任务都放在同一个队列里面,然后有一天突然某个同学的代码写得不对,导致大量的耗时任务被同时塞进了消息队列里面,这就悲剧了,这直接导致了其他服务长时间不可用,例如发送登录短信验证码无法使用了,还有支付信息无法同步了等等,反正就是造成了一些不小的影响. 当时我们的处理方式就很被动,只能手动连接上 MQ,然后把消息卸掉,其实也就手动将这些消息抛弃掉,从而让其他业务的消息可能正常运…