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

一.如何工作 一个XMPP域是由一个或多个ejabberd节点伺服的. 这些节点可能运行在通过网络连接的不同机器上. 它们都必须有能力连接到所有其它节点的4369端口, 并且必须有相同的 magic cookie (见 Erlang/OTP 文档, 换句话说,在所有节点上,文件 ~ejabberd/.erlang.cookie 必须是相同的 ). 这是必须的,因为所有节点交换关于已连接的用户.s2s连接.已注册的服务等信息.每个 ejabberd 节点有如下四个模块: 1.Router    这…
欢迎来我的 Star Followers 后期后继续更新Dubbo别的文章 Dubbo 源码分析系列之一环境搭建 博客园 Dubbo 入门之二 --- 项目结构解析 博客园 Dubbo 源码分析系列之三 -- 架构原理 博客园 Dubbo 源码解析四 -- 负载均衡LoadBalance 博客园 下面是个人博客地址,页面比博客园美观一些其他都是一样的 Dubbo 源码分析系列之一环境搭建" Dubbo 源码分析系列之一环境搭建 个人博客地址" Dubbo 入门之二 --- 项目结构解析…
一.ejabberdctl 使用ejabberdctl命令行管理脚本,你可以执行ejabberdctl命令和一些普通的ejabberd命令(后面会详细解说).这意味着你可以在一个本地或远程ejabberd服务器(通过提供参数 --node NODENAME)上启动.停止以及执行很多其它管理任务. ejabberdctl脚本可在文件 ejabberdctl.cfg 里配置. 这个文件包含每个可配置选项的详细信息. ejabberdctl脚本返回一个数字状态码. 成功显示为0, 错误显示为1, 其它…
1.[基础]redis能带给我们什么福利 Redis(Remote Dictionary Server)官网:https://redis.io/ Redis命令:https://redis.io/commands Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structur…
一.基本配置     配置文件将在你第一次启动ejabberd时加载,从该文件中获得的内容将被解析并存储到内部的ejabberd数据库中,以后的配置将从数据库加载,并且任何配置文件里的命令都会被添加到数据库里. 需要注意的是:ejabberd从不编辑配置文件,因此,使用Web管理修改的配置被存储在数据库中, 而不是反射到配置文件.如果你想那些修改在ejabberd重启后还有效,你可以同时也修改配置文件或删除它的所有内容. 配置文件包含一系列Erlang条款.以‘%’标志开始的行被忽略.每个条款是…
一.防火墙设置    当你配置防火墙的时候,你需要注意以下 TCP 端口: 端口 描述 5222 用于 Jabber/XMPP 客户端连接的标准端口, 纯文本或 STARTTLS. 5223 Jabber 客户端使用旧的 SSL 方法连接的标准端口 . 5269 用于 Jabber/XMPP 服务器连接的标准端口. 4369 EPMD  监听Erlang节点名请求. 端口范围 用于两个Erlang节点之间的连接. 这个范围是可配置的(参见第二部分即epmd). 二.epmdepmd (Erlan…
一.绪论    Ejabberd是一个用Erlang/OTP写的开源即时通讯服务器,其是跨平台.分布式.容错且基于开放标准的实时通讯系统.Ejabberd是一个功能丰富的XMPP服务器,同时适合小规模和超大估摸部署,无论是否需要可伸缩性. 二.关键功能 1.跨平台 Ejabberd可以运行在Microsoft Windows和类Unix系统,例如Linux.FreeBSD和NetBSD. 2.分布式 可以在一个集群的机器上运行Ejabberd,并且所有的机器都服务于同一个或一些Jabbe域,当你…
一.日志文件 一个ejabberd节点写两个日志文件:    ejabberd.log ejabberd 服务日志, 由 ejabberd 节点汇报的消息erlang.log Erlang/OTP 系统日志, 由 Erlang/OTP 使用 SASL (系统架构支持库) 汇报的消息选项 loglevel 修改文件 ejabberd.log 的详细程度. 语法是:{loglevel, Level}. 可能的 Level 有:    0 没有ejabberd日志 (不推荐)1     Critica…
系统:centos 6.9软件版本:redis-4.0.8,rubygems-2.7.7,gcc version 4.4.7 20120313,openssl-1.1.0h,zlib-1.2.11 yum install c++ gcc 1.安装redis tar -xf redis-4.0.8.tar.gz cd redis-4.0.8 make make install PREFIX=/redis-cluster 2.安装ruby和rubygems及相关组件(zlib和openssl) 安装…
一.spark简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,Spark 是一种与 hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载. 二.spark编译 为什么cdh提供了spark已经编译好的包,还要自己手工编译?因为从spark某个版本之后,就不再集成hadoop相关的jar包…
kafka源码编译安装 准备三台服务器 192.168.xxx.xxx 192.168.xxx.xxx 192.168.xxx.xxx 安装kafka前需先安装JDK和zookeeper如下步骤: JDK配置安装 官网地址(https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html) 下载文件到本地,通过远程工具上载文件到服务器自定义目录 解压文件到指定目录(所有节点机器都做,也可忽略后面做节点复制)…
今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结合代码理解应该不难.更详细的信息请移步于苹果官方介绍URL Loading System,网上好多iOS网络编程的博客都翻译于此.因为目前iOS开发中,网络请求大部分使用NSURLSession,所以今天的博客我们就以NSURLSession展开.关于之前使用的NSURLConnection在此就不…
一. 配置: 在tomcat目录下的conf/Server.xml配置文件中增加如下配置: <!-- Cluster(集群,族) 节点,如果你要配置tomcat集群,则需要使用此节点. className 表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递. channelSendOptions可以设置为2.4.8.10,每个数字代表一种方式 2 = Channel.SEND_OPTIONS_USE_ACK(确认发送) 4 = Channel.SEND_OPTIONS_SYN…
上一篇介绍了zookeeper的单机启动,集群模式下启动和单机启动有相似的地方,但是也有各自的特点.集群模式的配置方式和单机模式也是不一样的,这一篇主要包含以下内容: 概念介绍:角色,服务器状态 服务器组件启动 leader选举 概念介绍:角色,服务器状态 集群模式会有多台server,每台server根据不同的角色会有不同的状态,server状态的定义如下 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; } L…
想了想还是研究一下怎么源码安装pxc吧,毕竟很多组件都是源码安装的. 环境: yum install -y boost-devel libodb-boost-devel check-devel openssl-devel libaio-devel 安装scons 需要2.7+ 的Python wget https://nchc.dl.sourceforge.net/project/scons/scons/3.0.1/scons-3.0.1.tar.gz tar xf scons-3.0.1.ta…
在平时工作中,eureka作为一个集群时候,我们会配置多个peer ,假设当前有服务器eureka-A,eureka-B,eureka-C. 如果Eureka A的peer指向了B, B的peer指向了C,那么当服务向A注册时,B中会有该服务的注册信息,但是C中没有.也就是说,如果你希望只要向一台Eureka注册其它所有实例都能得到注册信息,那么就必须把其它所有节点都配置到当前Eureka的peer属性中.这一逻辑是在PeerAwareInstanceRegistryImpl#replicate…
dubbo集群概述 dubbo集群功能的切入点在ReferenceConfig.createProxy方法以及Protocol.refer方法中. 在ReferenceConfig.createProxy方法中,如果用户指定多个提供者url或注册中心url,那么会创建多个Invoker,然后用StaticDirectory将这多个Invoker封装在一起,然后用相应的Cluster实现类将这个静态的服务目录包装成一个Invoker,每种集群类都对应一种Invoker的集群包装类,例如,Failo…
构建环境 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…
zookeeper集群启动的时候,首先读取配置,接着开始选举,选举完成以后,每个server根据选举的结果设置自己的角色,角色设置完成后leader需要和所有的follower同步.上面一篇介绍了leader选举过程,这篇接着介绍启动过程中的leader和follower同步过程. 本文结构如下: 同步过程 总结 同步过程 设置server当前状态 server刚启动的时候都处于LOOKING状态,选举完成后根据选举结果和对应配置进入对应的状态,设置状态的方法是: private void se…
Clustering / High Availability This database supports a simple clustering / high availability mechanism. The architecture is: two database servers run on two different computers, and on both computers is a copy of the same database. If both servers r…
相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题.喜欢的同学可以收藏起来以备不时之需 SpringIOC源码解析(上) 本篇文章搭建了IOC源码解析的demo环境,启动这个环境即可开启阅读Spring源码的第一步 开始源码阅读时介绍了Spring容器中最经典的容器ClassPathXmlApplicationContext,这个容器是我们在学习Spring的时候最先接触的一个容器,它负责加载当前环境下的xml配置文件 紧接着介绍了bean…
t-io 集群解决方案以及源码解析 0x01 概要说明 本博客是基于老谭t-io showcase中的tio-websocket-showcase 示例来实现集群.看showcase 入门还是挺容易的,入坑(入门)请看老谭写的用t-io来写一个网页聊天室或客服是个怎样的体验. 要深入理解具体实现原理后续的业务扩展,把t-io玩6起来还需要耐心看看源码,看了之后我相信你一定会有收获的,祝你好运. 其实t-io 在2.4的版本中已加入的集群实现的逻辑代码,只是官方没有写文档以及完整的示例而已,在此不…
第一章.zookeeper概述 一.zookeeper 简介 zookeeper 是一个开源的分布式应用程序协调服务器,是 Hadoop 的重要组件. zooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务器,是 Google 的Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.集群管理等.ZooKeeper的目标就是封装复杂易出错的关键服务,将简单易用的接口和性能高…
kubernetes源码解析---- apiserver路由构建解析(1) apiserver作为k8s集群的唯一入口,内部主要实现了两个功能,一个是请求的路由和处理,简单说就是监听一个端口,把接收到的请求正确地转到相应的处理逻辑上,另一个功能就是认证及权限控制.本文主要对apiserver的路由构建过程进行解析. apiserver使用go-restful来构建REST-style Web服务,所以我们先来了解一下这个包的相关内容,以便更好地理解apiserver的源码. (kubernete…
设置ZooKeeper服务器地址列表源码解析及扩展 ZooKeeper zooKeeper = new ZooKeeper("192.168.109.130:2181",SESSION_TIMEOUT,new ZooKeeperFirstBlood()); 在创建zk连接的时候,必须要获取到zk服务器集群的地址,最简单的方式是在构造函数中传入ip:port,ip2:port2,...,ipn:portn的形式,优势是简单,劣势也很明显,扩展性不强,一旦zk集群发生变动,整个就gg了.…
欢迎来我的 Star Followers 后期后继续更新Dubbo别的文章 Dubbo 源码分析系列之一环境搭建 Dubbo 入门之二 --- 项目结构解析 Dubbo 源码分析系列之三 -- 架构原理 技术点 面试中Dubbo负载均衡常问的几点 常见负载均衡算法简介 Dubbo 官方文档介绍 Dubbo 负载均衡的策略 Dubbo 负载均衡源码解析 面试中Dubbo负载均衡常问的几点 谈谈dubbo中的负载均衡算法及特点 最小活跃数算法中是如何统计这个活跃数的 简单谈谈你对一致性哈希算法的认识…
知其然,还要知其所以然 ! 本篇介绍Spring-Session的整个实现的原理.以及对核心的源码进行简单的介绍! 实现原理介绍 实现原理这里简单说明描述: 就是当Web服务器接收到http请求后,当请求进入对应的Filter进行过滤,将原本需要由web服务器创建会话的过程转交给Spring-Session进行创建,本来创建的会话保存在Web服务器内存中,通过Spring-Session创建的会话信息可以保存第三方的服务中,如:redis,mysql等.Web服务器之间通过连接第三方服务来共享数…
第一章 第一个dubbo项目 第二章  dubbo内核之spi源码解析 2.1  jdk-spi的实现原理 2.2 dubbo-spi源码解析 第三章 dubbo内核之ioc源码解析 第四章 dubbo内核之aop源码解析 第五章  dubbo内核之compiler源码解析 5.1 javassist基本使用 5.2 dubbo-compiler源码解析 第六章  dubbo与spring xml结合源码 6.1 如何在spring中自定义xml标签 6.2 dubbo在spring中自定义xm…
前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码解析-zookeeper连接中已经讲到,这周解析的是另一道,即服务提供者能实现失效踢出是根据什么原理? 上周就有朋友问到我,为什么我的源码解析总是偏偏要和面试题挂上钩呢?原因很简单 1.dubbo源码这么多,试问你从哪里做为切入点?也就是说该从哪里看起?所以以面试题为切入点,你可以理解为我是在回答"…
上篇文章<  Spark 源码解析 : DAGScheduler中的DAG划分与提交 >介绍了DAGScheduler的Stage划分算法. 本文继续分析Stage被封装成TaskSet,并将TaskSet提交到集群的Executor执行的过程 在DAGScheduler的submitStage方法中,将Stage划分完成,生成拓扑结构,当一个stage没有父stage时候,会调用DAGScheduler的submitMissingTasks方法来提交该stage包含tasks. 首先来分析一…