基于Dubbo框架構建分布式服務(三)

我們將上面開發的服務提供方服務,部署到2個獨立的節點上(192.168.14.1和10.10.4.125),然后可以通過Dubbo管理中心查看對應服務的狀況,如圖所示:

上圖中可以看出,該服務有兩個獨立的節點可以提供,因為配置的集群模式為failover,如果某個節點的服務發生故障無法使用,則會自動透明地重試另一個節點上的服務,這樣就不至于出現拒絕服務的情況。如果想要查看提供方某個節點上的服務詳情,可以點擊對應的IP:Port鏈接,示例如圖所示:

?

上圖可以看到服務地址?

dubbo://10.10.4.125:20880/org.shirdrn.dubbo.api.ChatRoomOnlineUserCounterService?actives=100&anyhost=true&application=chatroom-cluster-provider&cluster=failover&dubbo=0.0.1-SNAPSHOT&executes=200&interface=org.shirdrn.dubbo.api.ChatRoomOnlineUserCounterService&loadbalance=random&methods=getMaxOnlineUserCount,queryRoomUserCount&pid=30942&queryRoomUserCount.actives=50&queryRoomUserCount.loadbalance=leastactive&queryRoomUserCount.retries=2&queryRoomUserCount.timeout=500&retries=2&revision=0.0.1-SNAPSHOT&side=provider&timeout=1000×tamp=1427793652814&version=1.0.0

如果我們直接暴露該地址也是可以的,不過這種直連的方式對服務消費方不是透明的,如果以后IP地址更換,也會影響調用方,所以最好是通過注冊中心來隱蔽服務地址。同一個服務所部署在的多個節點上,也就對應對應著多個服務地址。另外,也可以對已經發布的服務進行控制,如修改訪問控制、負載均衡相關配置內容等,可以通過上圖中“消費者”查看服務消費方調用服務的情況,如圖所示:

也在管理控制臺可以對消費方進行管理控制。

  • ●Dubbo監控中心

Dubbo監控中心是以Dubbo服務的形式發布到注冊中心,和普通的服務時一樣的。例如,我這里下載了Dubbo自帶的簡易監控中心文件dubbo-monitor-simple-2.5.3-assembly.tar.gz,可以解壓縮以后,修改配置文件~/dubbo-monitor-simple-2.5.3/conf/dubbo.properties的內容,如下所示:

?

dubbo.container=log4j,spring,registry,jetty
dubbo.application.name=simple-monitor
dubbo.application.owner=
dubbo.registry.address=zookeeper://zk1:2181?backup=zk2:2181,zk3:2181
dubbo.protocol.port=7070
dubbo.jetty.port=8087
dubbo.jetty.directory=${user.home}/monitor
dubbo.charts.directory=${dubbo.jetty.directory}/charts
dubbo.statistics.directory=${user.home}/monitor/statistics
dubbo.log4j.file=logs/dubbo-monitor-simple.log
dubbo.log4j.level=WARN

然后啟動簡易監控中心,執行如下命令:?

cd ~/dubbo-monitor-simple-2.5.3
bin/start.sh

這里使用了Jetty Web容器,訪問地址?http://10.10.4.130:8087/?就可以查看監控中心,Applications選項卡頁面包含了服務提供方和消費方的基本信息,如圖所示:

上圖主要列出了所有提供方發布的服務、消費方調用、服務依賴關系等內容。

接著,查看Services選項卡頁面,包含了服務提供方提供的服務列表,如圖所示:

點擊上圖中Providers鏈接就能看到服務提供方的基本信息,包括服務地址等,如圖所示:

點擊上圖中Consumers鏈接就能看到服務消費方的基本信息,包括服務地址等,如圖所示:

由于上面是Dubbo自帶的一個簡易監控中心,可能所展現的內容并不能滿足我們的需要,所以可以根據需要開發自己的監控中心。Dubbo也提供了監控中心的擴展接口,如果想要實現自己的監控中心,可以實現接口com.alibaba.dubbo.monitor.MonitorFactory和com.alibaba.dubbo.monitor.Monitor,其中MonitorFactory接口定義如下所示:

?

/**
* MonitorFactory. (SPI, Singleton, ThreadSafe)
*
* @author william.liangf
*/
@SPI("dubbo")
public interface MonitorFactory {/*** Create monitor.* @param url* @return monitor*/@Adaptive("protocol")Monitor getMonitor(URL url);}

?

?

Monitor接口定義如下所示:

Monitor接口定義如下所示:

/**
* Monitor. (SPI, Prototype, ThreadSafe)
*
* @see com.alibaba.dubbo.monitor.MonitorFactory#getMonitor(com.alibaba.dubbo.common.URL)
* @author william.liangf
*/
public interface Monitor extends Node, MonitorService {}?

具體定義內容可以查看MonitorService接口,不再累述。

總結

Dubbo還提供了其他很多高級特性,如路由規則、參數回調、服務分組、服務降級等等,而且很多特性在給出內置實現的基礎上,還給出了擴展的接口,我們可以給出自定義的實現,非常方便而且強大。更多可以參考Dubbo官網用戶手冊和開發人員手冊。?

附錄:Dubbo使用Maven構建依賴配置?

    <properties><spring.version>3.2.8.RELEASE</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion><exclusion><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.6.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.15.0-GA</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>hessian-lite</artifactId><version>3.2.1-fixed-2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.8</version></dependency><dependency><groupId>org.jvnet.sorcerer</groupId><artifactId>sorcerer-javac</artifactId><version>0.8</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.5</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><dependency><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId><version>3.2.7.Final</version></dependency></dependencies>
View Code

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284057.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284057.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284057.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開篇-開啟全新的.NET現代應用開發體驗

01云原生技術底座暢想DaprMASA Framework研發管理研發協作平臺&#xff1a;CI/CD、Application ManagementApplication Quota Management、Version Control、Troubleshooting、Testable網格應用程序管理API網關&#xff1a;Reverse Proxy、Traffic Control 、Security Strategy…

Ubuntu安裝docker詳細教程

1.安裝 sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository &qu…

java多線程編程——鎖優化

并發環境下進行編程時&#xff0c;需要使用鎖機制來同步多線程間的操作&#xff0c;保證共享資源的互斥訪問。加鎖會帶來性能上的損壞&#xff0c;似乎是眾所周知的事情。然而&#xff0c;加鎖本身不會帶來多少的性能消耗&#xff0c;性能主要是在線程的獲取鎖的過程。如果只有…

【QGIS入門實戰精品教程】10.3:QGIS柵格DEM數據重復類方法案例匯總

QGIS柵格DEM數據重復類方法案例匯總:按表格重分類、按圖層重分類。 參考閱讀: 【GlobalMapper精品教程】029:柵格重分類案例詳解 ArcGIS實驗教程——實驗四十三:ArcGIS柵格重分類(Reclass)案例詳解 ArcGIS怎樣獲取重分類后各類所占的像元個數 文章目錄 一、按表格分類二、…

QT添加rtmp庫的時候出現問題

剛開始出現undefined reference to __chkstk的錯誤。 然后在vc里面找到chkstk.obj放到相關目錄下并在工程文件直接添加&#xff1a; LIBS "E:\QTProjects\RTMP\RTMPDelayTest\librtmp\lib\chkstk.obj" 又出現了新的錯誤 E:\QTProjects\RTMP\RTMPDelayTest\librtmp\l…

@Before,@BeforeClass,@BeforeEach和@BeforeAll之間的區別

Before的代碼在每次測試之前執行 BeforeClass在整個測試方法執行之前運行一次 如果您的測試類有十個測試&#xff0c;則Before代碼將執行十次&#xff0c;但是BeforeClass將僅執行一次。 當多個測試需要共享相同的代碼時&#xff0c;可以使用BeforeClass 。 建立數據庫連接屬于…

記一次 .NET 某工控自動化控制系統 卡死分析

一&#xff1a;背景 1. 講故事前段時間遇到了好幾起關于窗體程序的 進程加載鎖 引發的 程序卡死 和 線程暴漲 問題&#xff0c;這種 dump 分析難度較大&#xff0c;主要涉及到 Windows操作系統 和 C 的基礎知識&#xff0c;所以有必要簡單整理和大家分享一下&#xff0c;上 win…

BZOJ4573:[ZJOI2016]大森林——題解

http://www.lydsy.com/JudgeOnline/problem.php?id4573 https://www.luogu.org/problemnew/show/P3348#sub http://uoj.ac/problem/195 https://loj.ac/problem/2092 小Y家里有一個大森林&#xff0c;里面有n棵樹&#xff0c;編號從1到n。一開始這些樹都只是樹苗&#xff0c;只…

Spring中神奇@aotuWrited

好久沒有寫博客了&#xff0c;放假就是充電學習的時候&#xff0c;的確一直是這樣做的。來給自己一點掌聲。我們還是進入今天的主題吧。 我們自己寫代碼一般會向下面這樣干啊&#xff0c;因為這樣簡單&#xff0c;其余交給spring去做吧。Spring會自動把生成的userService注入進…

40個常用的springBoot注解

一、Spring Web MVC注解 RequestMapping RequestMapping注解的主要用途是將Web請求與請求處理類中的方法進行映射。 Spring MVC和Spring WebFlux都通過RquestMappingHandlerMapping和RequestMappingHndlerAdapter兩個類來提供對RequestMapping注解的支持。 RequestMapping注解…

.NET MAUI 跨平臺應用開發 I|.NET MAUI 跨平臺基礎

編輯&#xff1a;Alan Wang排版&#xff1a;Rani Sun微軟 Reactor 為幫助廣開發者&#xff0c;技術愛好者&#xff0c;更好的學習 .NET Core, C#, Python&#xff0c;數據科學&#xff0c;機器學習&#xff0c;AI&#xff0c;區塊鏈, IoT 等技術&#xff0c;將每周三到周六&…

走出宣傳,國產VR手機盒子到底哪家強?

國產VR手機盒子作為入門機是一個不錯的選擇&#xff0c;不過你知道哪一款更適合你嗎&#xff1f; 從去年看虛擬現實還是一個遙不可及的夢&#xff0c;今年卻真正的火起來了。各大廠商紛紛推出自家的VR設備&#xff0c;宣傳活動如火如荼。愛嘗鮮的你是否按耐不住? 如果你覺得動…

Shell 學習筆記之運算符

基本運算符 算術運算符 val expr 2 2 需要注意的是 表達式和運算符之間需要有空格&#xff08;比如2 2&#xff0c;不能是22&#xff09;兩邊最外面的字符是&#xff0c;在esc鍵下面&#xff0c;不是引號哦乘號* 前面必須加上反斜杠 \ 才能實現乘法效果&#xff0c;比如 exp…

POJ 2353 DP

雙向DP記錄路徑。 // by SiriusRen #include <stack> #include <cstdio> #include <cstring> using namespace std; stack<int>s; int n,m,RECL,RECR,minn0x3fffffff,a[555][555],f[555][555],recl[555][555],recr[555][555]; int main(){memset(f,0x3…

【ArcGIS Pro微課1000例】0024:自定義坐標系統---以阿爾伯斯投影(Albers)為例

在實際工作中,經常需要進行矢量數據或柵格數據的投影轉換工作,但有時候ArcGIS中恰恰沒有我們需要的坐標系,此時,就需要我們自定義坐標系。本文以阿爾伯斯投影(Albers)為例,講解自定義投影的一般過程及注意事項。 文章目錄 一、自定義坐標系二、投影轉換一、自定義坐標系…

Linux 操作必備 150 個命令

linux 命令是對 Linux 系統進行管理的命令。對于 Linux 系統來說&#xff0c;無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標&#xff0c;還是用戶等都是文件&#xff0c; Linux 系統管理的命令是它正常運行的核心&#xff0c;與之前的 DOS 命令類似。 linux 命令在系統中有兩…

dotnet 6 為什么網絡請求不跟隨系統網絡代理變化而動態切換代理

本文記錄在 dotnet 6 的網絡和在 .NET Framework 的行為的變更。在 dotnet 6 下&#xff0c;默認的網絡請求在系統網絡代理變更的時候&#xff0c;是不會動態切換代理的。例如在應用運行進行網絡通訊之后&#xff0c;打開 Fiddler 抓包&#xff0c;此時將會發現 Fiddler 抓不到…

舊金山參議員提議發布“封殺令”,理由是馬路不為機器人所服務

說實話&#xff0c;這個理由有夠奇葩。 因為快遞無人機所受限制頗多&#xff0c;漸漸地&#xff0c;越來越多的快遞機器人被研制出來&#xff08;這里的“機器人”&#xff0c;包括無人車和及機器人&#xff09;&#xff0c;用于城市的快遞發送&#xff0c;比如國內的京東無人…

Socket編程:之雙機通信

服務端&#xff1a; 1 #include<sys/socket.h>2 #include<sys/types.h>3 #include<stdio.h>4 #include<unistd.h>5 #include<stdlib.h>6 #include<string.h>7 #include<netdb.h>8 #include<netinet/in.h>9 #include<arpa/i…

jquery中$each()

$.each()&#xff1a;可用于遍歷任何的集合(無論是數組或對象) $(selector).each()&#xff1a;專用于jquery對象的遍歷, 如果是數組,回調函數每次傳入數組的索引和對應的值(值亦可以通過this 關鍵字獲取,但javascript總會包裝this 值作為一個對象—盡管是一個字符串或是一個數…