好程式設計師Java學習路線分享Dubbo架構介紹
好程式設計師Java學習路線分享Dubbo架構介紹,在具體介紹之前我們臉來看一下 什麼是Dubbo
Dubbo是阿里巴巴在2011年開源的分散式服務框架,是服務化治理的核心框架。 Dubbo主要提供3個功能,遠端介面呼叫,負載均衡和容錯,服務註冊和服務發現
目前,已經是Apache的開源專案
Dubbo的架構
工作細節說明(來自dubbo官網)
節點角色說明(掌握)
Provider 暴露服務的服務提供方
Consumer 呼叫遠端服務的服務消費方
Registry 服務註冊與發現的註冊中心
Monitor 統計服務的呼叫次數和呼叫時間的監控中心
Container 服務執行容器
呼叫關係說明
1. 服務容器負責啟動,載入,執行服務提供者。
2. 服務提供者在啟動時,向註冊中心註冊自己提供的服務。
3. 服務消費者在啟動時,向註冊中心訂閱自己所需的服務。
4. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者。
5. 服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,再選另一臺呼叫。
6. 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心。
Dubbo 架構具有以下幾個特點
連通性
· 註冊中心負責服務地址的註冊與查詢,相當於目錄服務,服務提供者和消費者只在啟動時與註冊中心互動,註冊中心不轉發請求,壓力較小
· 監控中心負責統計各服務呼叫次數,呼叫時間等,統計先在記憶體彙總後每分鐘一次傳送到監控中心伺服器,並以報表展示
· 服務提供者向註冊中心註冊其提供的服務,並彙報呼叫時間到監控中心,此時間不包含網路開銷
· 服務消費者向註冊中心獲取服務提供者地址列表,並根據負載演算法直接呼叫提供者,同時彙報呼叫時間到監控中心,此時間包含網路開銷
· 註冊中心,服務提供者,服務消費者三者之間均為長連線,監控中心除外
· 註冊中心透過長連線感知服務提供者的存在,服務提供者當機,註冊中心將立即推送事件通知消費者
·
註冊中心和監控中心全部當機,不影響已執行的提供者和消費者,消費者在本地快取了提供者列表
· 註冊中心和監控中心都是可選的,服務消費者可以直連服務提供者
健狀性
· 監控中心宕掉不影響使用,只是丟失部分取樣資料
· 資料庫宕掉後,註冊中心仍能透過快取提供服務列表查詢,但不能註冊新服務
· 註冊中心對等叢集,任意一臺宕掉後,將自動切換到另一臺
· 註冊中心全部宕掉後,服務提供者和服務消費者仍能透過本地快取通訊
· 服務提供者無狀態,任意一臺宕掉後,不影響使用
· 服務提供者全部宕掉後,服務消費者應用將無法使用,並無限次重連等待服務提供者恢復
伸縮性
註冊中心為對等叢集,可動態增加機器部署例項,所有客戶端將自動發現新的註冊中心
服務提供者無狀態,可動態增加機器部署例項,註冊中心將推送新的服務提供者資訊給消費者
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2657598/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師告訴你Java架構師學習路線程式設計師Java架構
- 好程式設計師Java學習路線分享SpringCloud程式設計師JavaSpringGCCloud
- 好程式設計師Java學習資源分享RabbitMQ介紹程式設計師JavaMQ
- 好程式設計師Java學習路線介紹Java到底是什麼?程式設計師Java
- 好程式設計師Java學習路線分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享Java框架怎麼搭建程式設計師Java框架
- 好程式設計師Java學習路線分享Java-String常用方法程式設計師Java
- 學習Java架構師的路線分享Java架構
- 好程式設計師Java學習路線分享原生Ajax的使用程式設計師Java
- 好程式設計師Java學習路線分享finalize()方法詳解程式設計師Java
- 好程式設計師Java學習路線分享JVM相關概念程式設計師JavaJVM
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享Redis快速入門程式設計師JavaRedis
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享Java中的位移運算程式設計師Java
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享三大特性之多型程式設計師Java多型
- 好程式設計師Java學習路線分享多執行緒概念程式設計師Java執行緒
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop
- 好程式設計師Java學習路線之集程式設計師Java
- 好程式設計師Java學習路線JSP物件程式設計師JavaJS物件
- 好程式設計師Java學習路線分享Java弱引用的理解與使用程式設計師Java
- 好程式設計師Java學習路線分享Java案例-封裝JDBC工具類程式設計師Java封裝JDBC
- 好程式設計師Java學習路線分享怎麼理解Java物件導向程式設計師Java物件
- 好程式設計師Java學習路線分享SpringMVC之請求和響應程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享如何處理中文引數程式設計師Java
- 好程式設計師Java學習路線分享MyBatis之關聯查詢程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享JVM類載入機制程式設計師JavaJVM
- 好程式設計師Java學習路線分享Spring常見面試題程式設計師JavaSpring面試題
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師Java學習路線分享5分鐘瞭解計數排序程式設計師Java排序
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師Java學習路線分享實戰Tomcat效能最佳化程式設計師JavaTomcat
- 好程式設計師Java學習路線分享氣泡排序及最佳化程式設計師Java排序