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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

扩展 EdgeX Foundry 混合开发环境

發布時間:2024/3/24 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扩展 EdgeX Foundry 混合开发环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

擴展 EdgeX Foundry 混合開發環境

  • 構建混合開發環境的原因
  • 創建 Docker Swarm 的跨主機網絡步驟
    • 1. 下載操作系統對應版本的 docker-ce
    • 2. 初始化 docker swarm
    • 3. 創建跨主機網絡 multi-host network
    • 4. 拉取 edgex git 上的 mqtt-service 工程到本地的 Eclipse 中
    • 5. Eclipse 設置遠程 debug 模式
    • 6. 創建 mqtt-service 本機容器并和 edgex foundry 宿主機上的容器互聯
    • 7. 驗證
    • 8. 替換 mqtt-service 中默認的 mqtt broker
    • 9. mosquitto-clients 官方沒有,但是調試時需要,所以需要自己構建

構建混合開發環境的原因

在上文中,我們介紹了 EdgeX Foundry 的背景和概況;在本文中,我們會介紹實現更高效率混合開發環境的一種方法。

EdgeX Foundry 的核心工程數目超過 11 個,這還不包括每個工程對應的 client 和 domain 等依賴工程。而絕大多數情況下,我們實際要開發是其北側端的 export 服務和南側端的 device 服務。如果把 EdgeX Foundry 全部代碼放入本地的 Eclipse IDE 中,不僅配置復雜,而且對于資源有限的筆記本來說,啟動 EdgeX Foundry 全部核心工程,所產生的卡頓現象將影響開發效率。

在 EdgeX Foundry 的官方文檔中有提示建議采用混合開發模式:一部分核心工程運行在其他宿主機上,將開發所針對的單個工程運行在 Eclipse 中。不過如果用這種方法,需要在項目工程中更改幾十處的 IP 地址,對于 IP 經常變化的環境中開發來說非常不方便。

Edgex Foundry 官方混合開發環境文檔參考:

https://wiki.edgexfoundry.org/display/FA/Get+EdgeX+Foundry±+Developers

這里,我們介紹一種擴展的 EdgeX Foundry 混合開發環境,它是基于 Docker Swarm、 Eclipse 的遠程調試、devtools 插件來實現的:

  • Docker Swarm 用于集群部署,其內置的跨主機網絡可以連接兩個不同宿主機上的container。
  • Eclipse 的遠程調試,依賴 Spring Boot 的 devtools 熱部署插件,該插件可以在修改代碼的時候自動重新編譯啟動 Docker 容器中 Spring app 應用工程,所以項目不一定非要真是的跑在 Eclipse 中也能調試編寫代碼。

這種以 Docker container 和 Eclipse 遠程調試的方式,不僅僅是為了擴展 EdgeX Foundry 開發環境。在任何以 jar 包啟動并運行到 Docker 內的開發環境來說,這種方式可以解決如下問題:

  • Jar 包運行的 Java 程序讀取本地文件的方式與 War 包方式不同,更與 Eclipse 中開發時不同,經常會有在 Eclipse 中寫好的代碼放到 Docker 中后,運行報錯問題。
  • 更好地實時監控運行在 Docker 環境中的狀態,有助于提前發現問題。

創建 Docker Swarm 的跨主機網絡步驟

1. 下載操作系統對應版本的 docker-ce

ce指的是社區版本,社區版本已經足夠使用,按官網安裝即可。

2. 初始化 docker swarm

(1) 在 EdgeX Foundry 的宿主機上,執行如下命令:

docker swarm init

==>拷貝輸出中的如下代碼:

docker swarm join -token

SWMTKN-3e2t75c5a9zgl4i4hg7e871xq03s2nuf6rt2c716r8aad36nl34bllsvqym8i1

10.211.55.7:2377

(2) 在自己本機上執行上一步驟拷貝的代碼到自己的 command 控制臺中執行即可

成功后輸出如下==>

This node joined a swarm as a worker.

這里表示你的主機已經成為 EdgeX Foundry 運行的宿主機的一個集群節點 node, 并且是 worker 模式。

work 模式 ==> 從機不能執行 docker node 的命令

manager 模式 ==> 從機作為主節點的一個備份節點,防止主節點宕機

在 Edgex Foundry 核心工程運行的宿主機上執行 docker node ls 可以查看有兩個節點:一個是 Leader ,另一個沒有狀態的是 worker。

如果想把 work 提升為 manager 只需在 EdgeX Foudry 的宿主機上執行命令:docker node promote nodeID ==> 即可把 worker 從機提升為 manager。

3. 創建跨主機網絡 multi-host network

(1) 在 EdgeX Foundry 核心工程運行的宿主機上執行如下命令:
docker network create --driver overlay --attachable test-overlay-network

==> 其中 --attachable 參數必須,否則容器無法連接,只能 service 模式連接

service 模式用于 Docker Swarm 分布式集群,且內置負載均衡,這里不深入討論。

(2) EdgeX Foundry 宿主機上的執行如下命令加入跨主機網絡:

docker network connect container_name test-overlay-network

注意:必須手動將每一個 EdgeX Foundry 的核心工程都加入到跨主機網絡中,這不影響 EdgeX Foundry 已有的 docker 網絡。

(3) 在 EdgeX Foundry 宿主機上繼續執行如下命令驗證創建跨主機網絡創建成功:

docker network ls ==> 輸出的結果中會有很多網絡名,其中大部分是 Edgex Foundry 的,可以看到名字為 test-overlay-network 的網絡名字已經存在。

注意:只有節點是 manager 的才能看到這個網絡名字,如果你的 Eclipse 運行的宿主機是 worker 節點模式,執行這個命令是看不到 test-overlay-network ,但是這不影響你創建的容器去連接,建議將 docker worker 模式提升為 manager 模式。

4. 拉取 edgex git 上的 mqtt-service 工程到本地的 Eclipse 中

(1) 在 pom.xml 中添加 dev-tool 的依賴后,并添加如下設置:


(2) 在 application.properties 中配置如下設置:

spring.devtools.remote.secret=yoursecret ==>這個秘鑰用于 Eclipse 遠程調試

5. Eclipse 設置遠程 debug 模式

(1) 配置遠程 run 模式:

In Eclipse:

-Run->Run Configurations -> Java Application -> New

-選擇 org.springframework.boot.devtools.RemoteSpringApplication as the main class

-選擇 spring-dev-remote as the project ==>spring-dev-remote 是你的工程,必須在你的 Eclipse 中和 Docker 中有一個一樣的工程。

-program arguments 選項卡設置 http://localhost:49982

==>ip 和端口號是運行 docker 的主機和 app 暴露的端口號

(2) 配置遠程 debug 模式:

In Eclipse:

-Run選項卡->Debug configurations -> Remote Java Application -> New

-選擇spring-dev-remote as the project ==>spring-dev-remote 是你的工程

-設置 connection properties 為 localhost and port 8000

6. 創建 mqtt-service 本機容器并和 edgex foundry 宿主機上的容器互聯

(1) 在本地的宿主機的 Eclipse 中重新構建 mqtt-service 服務的 jar 包

(2) 在 mqtt-service 工程中的 Dockerfile 文件中 ENTRYPOINT 位置替換如下代碼:

java -Xdebug

-Xrunjdwp:server=y,transport=dt_socket,suspend=n,address=8000

-jar mqtt-service.jar

==>address 必須設置,有的分享教程不設置 address,

包括官網也沒特別指定,導致無法連接到遠程主機。

(3) Eclipse 的宿主機上重新創構建鏡像并創建 mqtt-service 容器:

使用修改后的 Dockerfile 重新構建 docker image。

基于新的 mqtt-service 鏡像創建并啟動容器:

docker create

-p 49982:49982

–network test-overlay-network ==>連接到跨主機網絡

–hostname mqtt-service ==> 必須指定主機名且和容器名一樣,與 consul 有關

–name mqtt-service ==>容器名

mqtt-service-image ==>重新構建的 mqtt-service 鏡像名

7. 驗證

在 run 模式下:在 Eclipse 中修改 mqtt-service 的代碼,本地主機的 Eclipse 控制臺中

輸出 Springboot Banner 帶有 remote 字樣的標志,

并提示連接成功,此時在 Eclipse 修改代碼,即可動態添加到本宿主機下的 container 中的工程中。

實際開發過程中,只需使用 debug 模式即可。

8. 替換 mqtt-service 中默認的 mqtt broker

(1) 使用 eclipse 開源的 mosquitto 作為本地的 broker。

(2) docker 中的鏡像 mosquito broker 可以直接拉取 eclipse 官網打好的開源鏡像

docker pull eclipse-mosquitto

docker run -it -d

–network test-overlay-network ==>加入跨主機網絡,broker 可以在任何宿主機上

-p 1883:1883

-p 9001:9001

–name mosquitto-broker

eclipse-mosquitto

(3) mqtt-service 的 application.properties 文件中配置

9. mosquitto-clients 官方沒有,但是調試時需要,所以需要自己構建

Dockerfile 構建文件如下:

構建鏡像命令:

doker build . -t test-mosquitto-clients ==>-t 參數表示鏡像名

最后一行的 ENTRYPOINT 可以不需要。

因為 mosquitto-clients 有 mosquitto_pub 發布和 mosquitto_sub 訂閱兩個命令,而且還要傳入不同的訂閱主題參數等,如果構建死了,那么不同的情景就需要不同的image,比較繁瑣。所以去掉最后一行在創建 contianer 的時候傳入,可基于一個mosquitto-clients 鏡像同時創建發布和訂閱主題多個業務級別的容器。

一個簡單的創建容器命令如下:

docker create

–network test-overlay-network ==> 這是加入跨主機網絡

–name test-mosq_sub ==>這是 container name

test-mosquitto-clients ==>這是 image

/usr/bin/mosquitto_sub ==>啟動 container 的時候執行命令

-h mosquitto-broker ==>啟動參數 args1 ,表示 broker 的主機名,這里是跨主機網絡中域名

-t CommandTopic ==>啟動參數 args2,表示訂閱的主題

總結

以上是生活随笔為你收集整理的扩展 EdgeX Foundry 混合开发环境的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色一级片. | 91久久精品视频 | 久久网站av | 日韩伦人妻无码 | 俄罗斯精品一区二区三区 | 欧美精品久久久久久久自慰 | 污网站在线观看免费 | 日本免费视频 | 好男人在线视频www 亚洲福利国产 | 久久不卡av| 欧美午夜精品一区二区三区 | 天天天干 | 优优色影院 | 高清av网| 亚洲国产成人一区 | 国产精品熟女一区二区不卡 | 国产精品自拍小视频 | 极品白嫩少妇无套内谢 | 久精品在线观看 | 国产午夜精品视频 | 午夜精品久久久久久久久久蜜桃 | www.狠狠| 日本国产欧美 | 亚洲激情视频一区 | 国产精品精品软件视频 | 伊人欧美在线 | 日本一区二区在线看 | 亚洲 小说 欧美 激情 另类 | 色呦呦日韩精品 | 婷婷俺也去 | 在线成人中文字幕 | 欧美成人视| 特极毛片 | 狠狠干香蕉 | 最近中文字幕在线免费观看 | 一级片久久 | 久久天堂av | 精品人妻一区二区乱码 | 欧美xxxx网站 | 国产香蕉视频在线播放 | 亚洲国产精品天堂 | 欧美456| 国产最新网址 | 手机福利在线 | 91香蕉视频在线 | 中文字幕亚洲成人 | 亚洲欧美在线视频观看 | 中文字幕在线观看一区二区 | 在线观看成人小视频 | 西西大胆午夜视频 | 欧美黑人精品 | 婷婷干 | 亚洲国产精品成人 | 欧美成人激情在线 | 95看片淫黄大片一级 | 国产精品99久久久久久久 | 奇米第四色影视 | 亚洲码无人客一区二区三区 | 免费20分钟超爽视频 | 亚洲色图插插插 | 久久久久久草 | 求av网址 | 成人h动漫精品一区二区 | 6080亚洲精品一区二区 | 免费的黄色片 | 欧美日韩亚洲系列 | 欧美一级性| 丰满少妇毛片 | 欧美动态视频 | 黄色1级片| 九九九九九九精品 | 亚洲a级片 | 国产精品成人免费一区久久羞羞 | 91免费视频网 | 久久久综合色 | 国产三级国产精品国产国在线观看 | 国产成人午夜精品 | 久久国产热视频 | 男女涩涩 | 欧美永久 | 人人人插 | 理论片毛片 | 男男大尺度 | 亚洲综合久久av一区二区三区 | 中文字幕在线观看视频一区 | 91精品国产视频 | 日本精品一区在线 | 黄色av影视 | 国v精品久久久网 | 国产亚洲成av人片在线观看桃 | 玉女心经是什么意思 | 国产精在线 | 国产成年人视频 | 午夜生活片 | 亚洲第一成年人网站 | 91欧美精品 | 九色91在线 | 亚洲男人的天堂在线观看 | 精品人妻人伦一区二区有限公司 |