初識Dubbo架構與基本配置
阿新 • • 發佈:2018-11-17
一 Dubbo架構概述
dubbo 是阿里開源的一個SOA服務治理框架,從目前來看把它稱作是一個RCP遠端呼叫框架更為貼切。單從RPC框架來說,功能較完善,支援多種傳輸和序列化方案。其核心功能自然就是遠端呼叫。
dubbo架構圖示
dubbo執行流程:
- Provider(提供者)繫結指定埠並啟動服務
- 指供者連線註冊中心,併發本機IP、埠、應用資訊和提供服務資訊傳送至註冊中心儲存
- Consumer(消費者),連線註冊中心 ,併發送應用資訊、所求服務資訊至註冊中心
- 註冊中心根據 消費 者所求服務資訊匹配對應的提供者列表傳送至Consumer 應用快取。
- Consumer 在發起遠端呼叫時基於快取的消費者列表擇其一發起呼叫。
- Provider 狀態變更會實時通知註冊中心、在由註冊中心實時推送至Consumer
設計的意義:
- Consumer 與Provider 解偶,雙方都可以橫向增減節點數。
- 註冊中心對本身可做對等叢集,可動態增減節點,並且任意一臺宕掉後,將自動切換到另一臺
- 去中心化,雙方不直接依懶註冊中心,即使註冊中心全部宕機短時間內也不會影響服務的呼叫
- 服務提供者無狀態,任意一臺宕掉後,不影響使用
二 基礎配置
最基本的是配置兩個xml檔案,一個服務於Consumer(消費者);一個服務於Provider(提供者)。
提供端:---------------------------
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="demo-provider"/> <dubbo:registry protocol="redis" address="192.168.1.66:6379" check="true"/> <dubbo:protocol name="dubbo" port="20880"/> <dubbo:provider group="snowman" threadpool="fixed" threads="500" timeout="5000" retries="2" /> <dubbo:service interface="com.snowman.service.DemoService" timeout="5000" retries="1" version="3.0.0" ref="demoService"/> <bean id="demoService" class="com.snowman.serviceImpl.DemoServiceImpl"/>
消費端:--------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="demo-consumer"/>
<dubbo:registry protocol="redis" address="192.168.1.66:6379" check="true"/>
<dubbo:consumer timeout="5000"
retries="2"
group="snowman"
version="1.0.0"/>
<dubbo:reference timeout="3000"
retries="1"
id="demoService"
version="*"
interface="com.snowman.service.DemoService"/>
配置詳解
引數說明:
標籤 | 屬性 | 描述 | 必填 |
---|---|---|---|
application | name | 應用名稱 | 是 |
registry | protocol | 註冊中心協議 | 是 |
address | 註冊中心地址 | 是 | |
provider | threadpool | 執行緒模型fixed/cache | 否 |
threads | 否 | ||
service | interface | 是 | |
ref | 是 | ||
group | 否 | ||
version | 和消費端一致才能匹配呼叫 | 否 | |
timeout | 重試次數,是給消費端使用的(沒有配的情況下) | 否 | |
retries | 重試次數,(同上) | 否 | |
consumer | timeout | 是 | |
retries | 是 | ||
reference | id | 否 | |
interface | 否 | ||
version | 否 | ||
check | 否 | ||
retries | 重試次數 | 否 |
配置分佈圖: