1. 程式人生 > >初識Dubbo架構與基本配置

初識Dubbo架構與基本配置

一 Dubbo架構概述

dubbo 是阿里開源的一個SOA服務治理框架,從目前來看把它稱作是一個RCP遠端呼叫框架更為貼切。單從RPC框架來說,功能較完善,支援多種傳輸和序列化方案。其核心功能自然就是遠端呼叫。
在這裡插入圖片描述
dubbo架構圖示
在這裡插入圖片描述
dubbo執行流程:

  1. Provider(提供者)繫結指定埠並啟動服務
  2. 指供者連線註冊中心,併發本機IP、埠、應用資訊和提供服務資訊傳送至註冊中心儲存
  3. Consumer(消費者),連線註冊中心 ,併發送應用資訊、所求服務資訊至註冊中心
  4. 註冊中心根據 消費 者所求服務資訊匹配對應的提供者列表傳送至Consumer 應用快取。
  5. Consumer 在發起遠端呼叫時基於快取的消費者列表擇其一發起呼叫。
  6. Provider 狀態變更會實時通知註冊中心、在由註冊中心實時推送至Consumer

設計的意義:

  1. Consumer 與Provider 解偶,雙方都可以橫向增減節點數。
  2. 註冊中心對本身可做對等叢集,可動態增減節點,並且任意一臺宕掉後,將自動切換到另一臺
  3. 去中心化,雙方不直接依懶註冊中心,即使註冊中心全部宕機短時間內也不會影響服務的呼叫
  4. 服務提供者無狀態,任意一臺宕掉後,不影響使用

二 基礎配置

最基本的是配置兩個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 重試次數

配置分佈圖:
在這裡插入圖片描述