搭建一個基於mqtt的協議處理框架(二.總體架構設計和emqx服務器的搭建)

架構及說明

    基於業務的需求,整個流程設計如下:

設備發送的數據找到broker,broker通過橋接插件直接轉給Kafka一份,kafka再將數據發給java編寫的數據處理中心,在這裏將解析協議報文,然後將解析後的報文通過rocketmq發送給數據存儲中心,數據存儲中心再將數據分別插入不同的表,然後將數據封裝成能被用戶看懂的數據發送給數據推送中心,數據推送中心通過友盟和Goeasy將數據推送給用戶.
用戶發送的下行數據會首先來到數據存儲中心,再這裏將數據補齊後發送到數據處理中心,數據處理中心將數據轉化爲協議報文,直接通過mqttclient將數據發送給mqtt broker上對應設備id的主題,訂閱此主題的設備就會拿到報文

emqx安裝

因爲我們需要用到emqx的kafka橋接插件,這個插件在安裝版中是沒有的,所以需要使用源碼安裝emqx
首先需要安裝emqx的運行環境,目前kafka的橋接插件emqx_kafka_bridge只能運行在emqx3.0版本上,所以搭建的環境都是基於emqx3.0版本的
首先是下載和安裝erlang21.3

yum install gcc* glibc-devel makencurses-devel openssl-devel autoconf -y
yum install unixODBC unixODBC-devel-y
yum -y install gcc-c++ kernel-develm4 python-simplejson

下載並編譯erlang

wget http://erlang.org/download/otp_src_21.3.tar.gz
tar -zxvf otp_src_21.3.tar.gz
cd otp_src_21.3
./otp_build autoconf
./configure --enable-smp-support–enable-threads --enable-sctp --enable-kernel-poll --enable-hipe --with-ssl
make && make install

完成後使用erl命令驗證
如果返回

Erlang/OTP 21 [erts-10.3] [source][64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.3 (abort with ^G)

則證明編譯成功,使用halt().命令退出erlang命令行
安裝Rebar(Erlang開發構建工具)

git clonegit://github.com/rebar/rebar.git
cd rebar
./bootstrap

安裝成功會顯示
Congratulations! You now have aself-contained script called “rebar” in
your current working directory. Placethis script anywhere in your path
and you can use rebar to buildOTP-compliant apps.

配置環境變量

vim /etc/profile
export PATH=/emq/rebar/:$PATH (rebar安裝目錄)
執行文件:
source /etc/profile

測試是否安裝成功
rebar -V

接下來就可以安裝emqx了
首先我們選擇emqx3.0.1安裝

wget -c https://github.com/emqx/emqx-rel/archive/v3.0.1.tar.gz
tar -zxvf v3.0.1.tar.gz
cd /

由於編譯時間超長,所以我們可以提前先把kafka插件安裝上
修改 emqx-rel目錄下的Makefile:

DEPS += (foreachdep,(foreachdep,(MAIN_APPS),(callappname,(call app_name,(dep)))
DEPS += emqx_kafka_bridge 【增加這行】
(foreachdep,(foreach dep,(MAIN_APPS),KaTeX parse error: Expected group after '_' at position 9: (evaldep_̲(call app_name,$(dep)) = (CLONEMETHOD)https://github.com/emqx/(CLONE_METHOD) https://github.com/emqx/(dep)(callappvsn,(call app_vsn,(dep))))
dep_emqx_kafka_bridge = git https://github.com/bob403/emqx_kafka_bridge.git master 【增加這行】

在relx.config裏增加:

{emqx_kafka_bridge, load}

然後就可以懷着虔誠的心,在emqx的解壓目錄輸入make,並且祈禱不要編譯失敗

編譯成功後,需要更改kafka插件的配置

/emq/emqx-rel/_rel/emqx/etc/plugins/emqx_kafka_bridge.conf

查看插件列表有沒有kafka插件
./emqx_ctl plugins list
然後啓動插件
./emqx_ctl plugins load emqx_kafka_bridge

最後如果要使橋接成功,還需要提前在kafka上面創建一個名爲Processing的主題

接下來,你的設備發送的mqtt消息就可以成功橋接到kafka上去了

kafka的配置詳細見下文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章