EMQ源码之--EMQ的启动

news/2023/12/9 15:26:09 标签: 操作系统, 数据库, 网络

又回到erlang了,使用了一段时间的golang再回到erlang有点那么的亲切感。在项目中也准备用mqtt来做消息上报,顺道就想看下他的代码。

erlang中application都是通过supervisor来管理的,在emq中emqttd_sup是一个最大的supervisor,他下面面又连接了很多的supervisor或者worker。

ekka:start()
emqttd_sup
|-------->emqttd_ctl 负责从emqttd_ctl命令过来的rpc handler
|-------->emqttd_hooks(hook 函数的处理)
|-------->emqttd_router(各node之间的消息路由)
|-------->emqttd_pubsub_sup(管理pubsub相关的supervisor)
|-------->emqttd_pool_sup(emqttd_pubsub的supervisor)gproc_pool
               |----->emqttd_pubsub_1(worker)
               |----->emqttd_pubsub_2(worker)
|-------->emqttd_pool_sup(emqttd_server的supervisor)gproc_pool
               |----->emqttd_server_1(worker)
               |----->emqttd_server_2(worker)
|--------->emqttd_stats(stats topic相关的统计)
|--------->emqttd_stats(metrics topic相关的统计)
|--------->emqttd_pool_sup(pooler没看到哪里用到了这快)gproc_pool
             |------->pooler_1(worker)
             |------->pooler_2(worker)
|--------->emqttd_sm_sup( session management supervisor)gproc_pool
             |------->emqttd_sm_1(worker)
             |------->emqttd_sm_2(worker)
|--------->emqttd_ws_client_sup(websocket client supervisor)gproc_pool
             |------->emqttd_ws_client_1(worker)
             |------->emqttd_ws_client_2(worker)
|--------->emqttd_broker(broker统计相关handler)
|--------->emqttd_alarm(系统alerm相关的handler)
|--------->emqttd_mod_sup(管理外部mod的supervisor)
|--------->emqttd_bridge_sup_sup(bridge supervisor)
|--------->emqttd_access_control(auth/acl相关管理模块)
|--------->emqttd_sysmon_sup(system monitor supervisor)
             |-------->emqttd_sysmon(vm system monitor)
register_acl_mod()
start_listener()

之后就开始socket监听了,等待新的连接到来。
erlang的优势在于他又一套完善的process 监控系统。具体可以参考这里, 子进程退出后supervisor会给你自动重启。


http://www.niftyadmin.cn/n/1818990.html

相关文章

grpc双向流

简介grpc是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.gRPC 基于 HTTP/2 …

vue项目对axios的全局配置

转载:https://www.cnblogs.com/djjlovedjj/p/9050841.html 标准的vue-cli项目结构(httpConfig文件夹自己建的): api.js: //const apiUrl http://test;//测试域名,自己改成自己的 const apiUrl http://xxoo;//线上域名…

final修饰和StringBuffer的几个案例(拼接,反转,对称操作)

final关键字修饰时如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但引用变量不能变,引用变量所指向的对象中的内容还是可以改变的…

模糊查询于聚合函数

通配符: _ 单个字符  %任意字符  []范围内的字符  [^]范围外的字符 SELECT * FROM StudentUPDATE Student SET StudentName王波 WHERE StudentNoY21003011--模糊查询:查询学生表中姓’冯‘的学生记录SELECT * FROM Student WHERE StudentName L…

html导出excel

function base64 (content) {return window.btoa(unescape(encodeURIComponent(content)))}function exportTab () { // 导出let tath thislet table document.getElementById(tableID) //tableID为dom层 table IDlet excelContent table.innerHTMLlet excelFile "&…

云评论

http://changyan.kuaizhan.com/static/help/index.html 转载于:https://www.cnblogs.com/guochen/p/11081671.html

十分钟构建双十一交互分析大盘

2019独角兽企业重金招聘Python工程师标准>>> 提到双十一很多人第一印象是一张成交金额跳动的炫酷大屏,的确大盘在阿里双十一中几乎是每个团队标配,例如: CEO看业务:把重要数据放到一张大屏上,简洁而有冲击力…

移动端开发-Day1

什么是Node? 它是一个基于Chrome v8引擎的js运行环境,采用高效轻量级的事件驱动,非阻塞式的I/O模型。 非阻塞I/O? 例如,当程序运行到某一函数时,调用后立即返回,不需要等待函数执行完成&#xf…

建议是在公司发不出工资前换好工作

在移动互联网兴起的这几年,无论是从网上还是身边都看到了很多程序员被无良公司拖欠工资,可能是公司倒闭,也可能是老板跑路。我个人感觉程序员是一个相对单纯的群体(很好骗),尤其是刚工作的年轻人。油腻的创…

何谓Kubernetes以及企业如何从DevOps趋势中获益

什么是容器,Kubernetes适合应用于什么地方,成功部署需要什么工具?当前,容器的使用可谓如火如荼。不仅受到开发人员的喜爱,而且也倍受企业追捧。如果贵公司的IT部门正在寻找一种更快速、更简单的应用开发方式时,那您应…

生命周期图示

转载于:https://www.cnblogs.com/huge-666/p/10140826.html

主数据管理项目建设经验分享

一、主数据建设的术法道随着企业信息化系统建设逐渐增多,领导、业务部门对信息系统支撑决策、管控、业务运行难度也随之提高,导致解决业务系统间的交互困难和数据多头管理不一致等问题成为信息化建设的难点和重点。借鉴业界成熟的信息化建设思路&#xf…

一文读懂随机森林的解释和实现

如今由于像Scikit-Learn这样的库的出现,我们可以很容易地在Python中实现数百种机器学习算法。它们是如此易用,以至于我们通常都不需要任何关于模型底层工作机制的知识就可以使用它们。虽然没必要了解所有细节,但了解某个机器学习模型大致是如…

JavaScript ES7/8/9 新特性

JavaScript ES7/8/9 新特性 ES7 新特性 (ECMAScript 2016) ES7 在 ES6 的基础上主要添加了两项内容: Array.prototype.includes() 方法求幂运算符(**)Array.prototype.includes() 方法 includes() 方法用来判断一个数组…

教程:使用Data Lake Analytics读/写MongoDB数据

Data Lake Analytics 作为云上数据处理的枢纽,最近加入了对于MongoDB 的支持, 这篇教程带你玩转 DLA 的 MongoDB 支持。 创建数据库 在 DLA 里面创建一个底层映射到 MongoDB 的外表的语法如下: CREATE DATABASE mongo_test WITH DBPROPERTIES (catalog mongodb,loc…

LDP - Linux文档工程的简介,包括帮助,向导和文档

总览 SYNOPSIS Linux文档工程(LDP)为Linux社区提供多种自由文档资源,包括向导 (guide),常见问答 (FAQ),入门 (HOWTO) 以及手册页 (man-pages). 作者 AUTHORS 独立的作者维护着LDP档案中的不同的文档, 他们的名字列在了每一个入门(HOWTO)的开头. 如果你对…
最新文章