日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Dubbo(來自于阿里巴巴)

Dubbo是一個分布式服務框架,致力于提供高性能和透明化的PRC遠程調用服務調用方案。

SpringBoot中使用dubbo實現RPC調用

 

Dubbo的的特點

  • 通過spring配置的方式即可完成服務化,對于應用無入侵。(SpringCloud有一定的入侵)
  • 通過maven的install &deploy命令把interface和Model層發布到倉庫中,服務調用方只需要依賴interface和model層即可。
  • 通過zookeeper設置達到注冊服務和心跳檢測,通過gateWay前置網關(Clound使用Zuul實現負載均衡將請求轉向Eureka服務器)隔絕外部直接調用原子服務的風險

SpringBoot中使用Dubbo

引入依賴

<!--dubbo依賴-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.6</version>
</dependency>

<dependency>
    <groupId>org.Apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.0.1</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.7</version>
</dependency>

dubbo常用配置及注意事項

1、啟動時檢查
缺省會在啟動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止Spring初始化完成,以便上線時,能及早發現問題,默認check=true。

關閉所有服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:consumer check="false" />

關閉某個服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:reference interface="com.foo.BarService" check="false" />
其它的啟動時檢查還包括:注冊中心

2、直連提供者
在開發及測試環境下,經常需要繞過注冊中心,只測試指定服務提供者,這時候可能需要點對點直連,
點對點直聯方式,將以服務接口為單位,忽略注冊中心的提供者列表。
<dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />  

3、服務分組
當一個接口有多種實現時,可以用group區分。
provider:
<dubbo:service group="feedback" interface="com.xxx.IndexService" ref="indexServiceFeedback" />
<dubbo:service group="member" interface="com.xxx.IndexService"   ref="indexServiceMember" />

cosumer:
<dubbo:reference id="feedbackIndexService" group="feedback" interface="com.xxx.IndexService" />
<dubbo:reference id="memberIndexService" group="member" interface="com.xxx.IndexService" />

4、多版本
當一個接口實現,出現不兼容升級時,可以用版本號過渡,版本號不同的服務相互間不引用。
一般處理步驟
1)在低壓力時間段,先升級一半提供者為新版本
2)再將所有消費者升級為新版本
3)然后將剩下的一半提供者升級為新版本
<dubbo:service interface="com.foo.BarService" version="1.0.0" />
<dubbo:service interface="com.foo.BarService" version="2.0.0" />
5、異步調用
可完成并行調用多個遠程服務。異步總是不等待返回。
<dubbo:reference id="fooService" interface="com.alibaba.foo.FooService">
    <dubbo:method name="findFoo" async="true" />
</dubbo:reference>

6、延遲暴露
如果你的服務需要Warmup時間,比如初始化緩存,等待相關資源就位等,可以使用delay進行延遲暴露。
<dubbo:provider delay="-1" />
當然,也可以配置到服務級別,但有些需要地方需要注意。

7、dubbo:protocol屬性
threadpool:線程池類型,可選:fixed/cached ,默認fixed 。
threads :服務線程池大小(固定大小) ,默認為100

payload:請求及響應數據包大小限制,單位:字節,默認為88388608(=8M)
如:<dubbo:protocol name="dubbo" port="27001" threadpool="cached" threads="20"/>

ThreadPool
fixed 固定大小線程池,啟動時建立線程,不關閉,一直持有。(缺省)
cached 緩存線程池,空閑一分鐘自動刪除,需要時重建。
limited可伸縮線程池,但池中的線程數只會增長不會收縮。(為避免收縮時突然來了大流量引起的性能問題)。

8、dubbo:Application
<dubbo:application name="xxx_service" />
name必填。當前應用名稱,用于注冊中心計算應用間依賴關系,注意:消費者和提供者應用名不要一樣

dubbo生產者配置

dubbo-provider.xml :通過配置xml的方式來配置dubbo服務的提供者

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
       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="usermanage" />
    <dubbo:registry id="zookeeper_service" protocol="zookeeper" address="127.0.0.1:2181" timeout="15"/>

    <!-- 用dubbo協議在20880端口暴露服務 -->
    <dubbo:protocol name="dubbo"  port="20880"  threads="1000" />

    <!-- dubbo監控配置 -->
    <dubbo:monitor protocol="registry" />

    <!-- dubbo管理平臺接口 -->
    <bean id="UserService" class="com.luo.service.impl.UserServiceImpl" />
    <dubbo:service interface="com.luo.service.IUserService" ref="UserService"
                   registry="zookeeper_service" />

</beans>

在啟動類引入配置類

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@ImportResource({"classpath:*dubbo-provider.xml"})
public class UsermanageAPP extends SpringBootServletInitializer {
    private static Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(UsermanageAPP.class);
    }

    /**
     * 項目的啟動方法
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(UsermanageAPP.class, args);
        logger.info("======服務已經啟動========");
    }
}

服務接口和服務實現類

服務接口

public interface IUserService {
    public String ceshi(String input);
}   

服務的實現類

public class UserServiceImpl implements IUserService {

    @Override
    public String ceshi(String input) {
        return "Hello World,"+input;
    }
}

dubbo生產者配置

dubbo-consumer.xml:通過配置xml的方式來配置dubbo服務的消費者對于核心的業務:

  • retries=“0”:關閉dubbo超時重試,即 超時不重試
  • 提高timeout(即超時時間),避免由于網絡延遲導致業務流程超時

Dubbo的路由機制,會把超時的請求路由到其他機器上,而不是本機嘗試,所以 dubbo的重試機器也能一定程度的保證服務的質量。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="nacos" />
    <dubbo:registry id="zookeeper_service" protocol="zookeeper" address="127.0.0.1:2181" timeout="15"/>

    <!-- 消息推送 -->
    <dubbo:reference id="user" interface="com.luo.service.IUserService" retries="0" timeout="50000" check="false"/>
</beans>

在啟動類引入配置類

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, SentinelCircuitBreakerAutoConfiguration.class})
@ImportResource({"classpath:*dubbo-consumer.xml"})
public class NacosApp extends SpringBootServletInitializer {
    private static Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(NacosApp.class);
    }

    /**
     * 項目的啟動方法
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(NacosApp.class, args);
        logger.info("======服務已經啟動========");
    }
}

服務接口和Controller層

服務接口

public interface IUserService {
    public String ceshi(String input);
}

Controller層

@RestController
public class TestController {

    @Autowired
    IUserService userService;

    @RequestMapping("/ceshi")
    public String ceshi(){
        return userService.ceshi("luo");
    }

}

分別啟動生產者和消費者,訪問消費者接口進行驗證:

SpringBoot中使用dubbo實現RPC調用

分享到:
標簽:調用 RPC
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定