SpringBoot整合Dubbo

須要提供一種開箱即用的方式->starterjava

<dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>2.7.1</version>
 </dependency>
//服務端:
@Service
public class OrderServiceImpl implements IOrderService {
    @Override
    public String create() {
       
        return "訂單建立成功";
    }
}
#provider properties
dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181

dubbo.scan.base-packages=com.dubbo

 

// 客戶端
  @Reference
    private IOrderService service;


    @GetMapping("/order/create")
    public String create() {
        return service.create();
    }
// consumer properties
dubbo.application.name=dubbo-client
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.base-packages=com.dubbo

---------------算法

負載均衡算法spring

 1.隨機(default)apache

2.最小活躍數json

3.權重輪詢api

4.一致性hash安全

客戶端和服務端都可配置(兩端都配置則以客戶端爲準):springboot

@Reference(loadbalance = "random")
@Service(weight = 10,loadbalance = "random")

-----app

容錯策略 :負載均衡

  1. 重試(failover,默認),重試三次

  2. 快速失敗(failfast)

  3. 記錄日誌(failback)

  4. 失敗安全(failsafe),出現異常直接忽略

  5. 並行調用多個服務(forKing)

  6. 廣播

服務降級

    1.錯誤降級

    2.限流降級(相似於線程池的拒絕策略)

    3.熔斷降級

經過mock實現降級(定義在客戶端):

//timeout = 1 用於測試mock機制
    @Reference(loadbalance = "random",timeout = 1, cluster = "failfast",mock = 			"com.xxx.OrderServiceMock")
    private IOrderService service;


// 客戶端
public class OrderServiceMock  implements IOrderService {
    @Override
    public String create() {
        return "當前服務不可用,請稍後再試!";
    }
}

//服務端:
@Service
public class OrderServiceImpl implements IOrderService {
    @Override
    public String create() {
        try {
            // 睡一秒,用於測試mock
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "訂單建立成功";
    }
}

元數據中心配置(能夠簡化URL的長度):

dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
<!--最終的數據將移入到節點中保存-->
{"parameters":{"cluster":"failsafe","side":"provider","release":"2.7.3","methods":"create","deprecated":"false","dubbo":"2.0.2","weight":"10","interface":"com.bellamy.api.IOrderService","qos.enable":"false","generic":"false","application":"springboot-dubbo","dynamic":"true","register":"true","bean.name":"ServiceBean:com.bellamy.api.IOrderService","anyhost":"true"},"canonicalName":"com.bellamy.api.IOrderService","codeSource":"file:/D:/ProgramFiles/Git/repository/workspace/sc-dubbo-boot/spring-boot-dubbo-api/target/classes/","methods":[{"name":"create","parameterTypes":[],"returnType":"java.lang.String"}],"types":[{"type":"char","typeBuilderName":"org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"},{"type":"java.lang.String","properties":{"value":{"type":"char[]","typeBuilderName":"org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder"},"hash":{"type":"int","typeBuilderName":"org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"}},"typeBuilderName":"org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"},{"type":"int","typeBuilderName":"org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"}]}
<!--客戶端與服務端所須要的相關依賴-->
       <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.3</version>
        </dependency>

        <!--使用zookeeper做爲註冊中心-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.0</version>
        </dependency>
        <!--若是zk使用的是3.5.x如下的版本,且使用的curator爲4.x.x則須要手動添加此依賴-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>

            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
相關文章
相關標籤/搜索