日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EMQ源码之--EMQ的启动

發布時間:2024/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EMQ源码之--EMQ的启动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

又回到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會給你自動重啟。

總結

以上是生活随笔為你收集整理的EMQ源码之--EMQ的启动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。