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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控...

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Zookeeper簡介

Zookeeper是Hadoop的一個子項目,它是分布式系統(tǒng)中的協(xié)調(diào)系統(tǒng)。

簡單來說就是一個Zookeeper注冊同步中心,內(nèi)部結(jié)構(gòu)為一個樹形目錄,每個節(jié)點上可以存放一定量(默認(rèn)的數(shù)據(jù)量上限是1M,但是可以通過調(diào)整參數(shù)修改)的數(shù)據(jù),客戶端(一段通過Zookeeperapi編寫的程序或者一個cmd和shell窗口)連接Zookeeper后,可以在任何節(jié)點上注冊監(jiān)聽(watcher),當(dāng)節(jié)點被刪除或者節(jié)點上的數(shù)據(jù)有變化時,Zookeeper會主動觸發(fā)注冊在當(dāng)前節(jié)點上的監(jiān)聽程序。

同時Zookeeper類似于文件系統(tǒng),各個節(jié)點都可以配置不同的讀寫訪問權(quán)限。

zookeeper本身是支持多個zookeeper組成集群,利用選舉機制選出負(fù)責(zé)不同職責(zé)的角色,本文暫不涉及。

案例

備注:由于全文粘貼代碼實在不好排版,本文代碼相關(guān)部分,只介紹了相關(guān)片段,完整的請下載后查看。

界面示例(動效):

本文利用Zookeeper節(jié)點可存放數(shù)據(jù)以及節(jié)點可監(jiān)聽的機制,借助WebSocket實現(xiàn)對多個服務(wù)器的實時監(jiān)控。具體web端效果如下(由于是模擬,界面略顯粗糙):

可以同時打開多個瀏覽器,接收WebSocket推送的實時監(jiān)控數(shù)據(jù)。

?

實現(xiàn)邏輯

?

實現(xiàn)過程

本文用到maven以及websocket,這兩部分內(nèi)容本文只做配置介紹,相關(guān)知識需自己提前掌握。同時zookeeper的詳細(xì)命令和api也不做詳細(xì)解釋,可自己試驗。

環(huán)境:

eclispe Oxygen Release (4.7.0);

maven 3.2.2

Zookeeper3.4.13

win10環(huán)境(一般線上都是linux環(huán)境,這里為了省事所有都在自己的筆記本上折騰的,所以用了win環(huán)境)

1、Zookeeper的安裝

安裝比較簡單,這里略過,下載后解壓,配置zoo.cfg里面的目錄參數(shù),完后就可以啟動了。

2、啟動Zookeeper

打開cmd窗口運行Zookeeper安裝目錄bin下的zkServer.cmd,即可。

也可寫個bat文件,方便每次使用,內(nèi)容(保存即可,其中d:zookeeper-3.4.13bin是我的zookeeper的bin目錄)如下:

cd d:zookeeper-3.4.13bin

d:

zkServer.cmd

@pause

3、創(chuàng)建根目錄

通過cmd連接到Zookeeper創(chuàng)建更目錄/servers,也可通過java代碼來創(chuàng)建。

client的bat啟動內(nèi)容參考如下:

cd d:zookeeper-3.4.13bin

d:

zkCli.cmd -server 127.0.0.1:2181

@pause

回車之后,通過命令create /server serverlist 完成根節(jié)點的創(chuàng)建, 后面所有待監(jiān)控的服務(wù)器都在此節(jié)點下創(chuàng)建子節(jié)點(臨時節(jié)點)。

關(guān)于zookeeper節(jié)點的類型,也請自行腦補。

這里根節(jié)點為持久化節(jié)點,服務(wù)器數(shù)據(jù)節(jié)點為臨時節(jié)點,是因為服務(wù)器程序在于zookeeper斷開后,需要刪除節(jié)點,這樣才監(jiān)控程序才能知道服務(wù)器下線了。當(dāng)然實際線上應(yīng)該都會采用持久化節(jié)點,然后通過狀態(tài)數(shù)據(jù)來判斷,這里就偷懶了。

3、代碼編寫

maven配置

整個示例有2個項目組成:一個是模擬服務(wù)器的程序(定時采集監(jiān)控指標(biāo),把指標(biāo)數(shù)據(jù)更新到node上),一個是監(jiān)控程序(用于監(jiān)控zookeeper節(jié)點變化,并獲取節(jié)點數(shù)據(jù)計算閾值,并通過Websocket推送數(shù)據(jù)到瀏覽器)。

?

business-server(服務(wù)器指標(biāo)采集程序)的maven配置

只依賴zookeeper的jar:

?

business-server-monitor(監(jiān)控程序)的maven配置:

由于有web界面,所以需依賴Servlet、JavaEE相關(guān)包,同時容器采用了maven的jetty插件,關(guān)于maven配置jetty以及如何啟動可以參考上一篇文章中的相關(guān)介紹:模塊化編程及Maven配置最佳實踐之一。

當(dāng)然實現(xiàn)Websocket的方式有很多,比如SpringMvc,SpringBoot等等,這里為了防止太多干擾就用了原生寫法。具體maven配置如下:

?

1、business-server(服務(wù)器指標(biāo)采集程序) 代碼片段:

代碼邏輯為:啟動后(main方法)連接zookeeper并建立臨時節(jié)點,同時初始化數(shù)據(jù),之后啟動模擬指標(biāo)采集的線程,間隔一段時間生成隨機指標(biāo)數(shù)據(jù)。

?

創(chuàng)建臨時節(jié)點代碼片段:

?

其中ACL是zookeeper的節(jié)點訪問權(quán)限配置,也需要自行腦補。

模擬指標(biāo)變化并將數(shù)據(jù)更新到節(jié)點上

?

其中ServerData是我自己創(chuàng)建的bean對象,用于存放服務(wù)器指標(biāo),如下:

主要包含3個模擬指標(biāo),cpu,內(nèi)存,磁盤,可自己添加。指標(biāo)和zookeeper無關(guān)。

?

至此采集程序代碼就結(jié)束了。

2、business-server-monitor(監(jiān)控程序)實時監(jiān)控zookeeper節(jié)點變化并推送數(shù)據(jù)的代碼片段

項目啟動采用了JavaEE的ServletContextListener監(jiān)聽啟動的方式來啟動和Zookeeper的連接,需要在web.xml配置這個Listener。

?

繼承ServletContextListener

當(dāng)jetty容器初始化后,觸發(fā)建立和zookeeper的連接并注冊監(jiān)聽:

?

?

然后通過Zookeeper api中的的getChildren獲取節(jié)點數(shù)據(jù)并啟動監(jiān)聽,

List servers = zk.getChildren(ServerData.serverRootNode, true);

當(dāng)節(jié)點發(fā)生數(shù)據(jù)變化時觸發(fā)監(jiān)聽的process方法,process方法獲取根節(jié)點下的所有子節(jié)點的數(shù)據(jù)并封裝成ServerData對象列表,用于websocket推送。

?

之后通過Websocket推送到瀏覽器:

Websocket配置很簡單,只需要注釋上先關(guān)annotation(@ServerEndpoint)即可,無需其他配置,容器啟動時會自行掃描到此類。

?

推送數(shù)據(jù)這里就簡單了拼接成了html,界面上就直接放在div就行了。

?

3、monitor.jsp獲取實時監(jiān)控數(shù)據(jù)

?

以上便是這個例子的完成介紹過程。

總結(jié)

以上是生活随笔為你收集整理的服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。