又回到erlang了,使用了一段時間的golang再回到erlang有點那麼的親切感。在專案中也準備用mqtt來做訊息上報,順道就想看下他的**。
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會給你自動重啟。
Linux 設定 EMQ 自動啟動
我是使用原始碼安裝,所以需要將啟動檔案新增為服務,從而使伺服器啟動時自動啟動emq 將原始碼安裝目錄下的bin emqttd 複製到 etc init.d 下面 cp home emqttd bin emqttd etc init.d emqttd使用 vim etc init.d emqttd 開...
emq外掛程式開發mysql EMQ的Mysql外掛程式
emq最新版的是emqx3.x.x版本,一如既往的支援mysql認證,這裡專門對mysql認證外掛程式做個研究,寫點總結。本人能力有限,文章不足之處希望及時反饋以免誤導。首先我先描述一下我的應用場景 我要做乙個後台,可以給emq建立客戶端和客戶端的acl,從而實現對emq的終端進行控制。所以選擇了e...
centos6 5 EMQ集群的安裝
簡述 emq集群的安裝 我的安裝環境描述 在第一台機器上解壓,並修改配置檔案 etc emq.conf cluster.name emqcl 集群的名字 cluster.discovery static 靜態的節點列表,發現集群 cluster.static seeds emq1 192 168 0...