網(wǎng)站權(quán)重高+做別的關(guān)鍵詞百度應(yīng)用下載安裝
目錄
1.說明
2.示例
3.總結(jié)
1.說明
dubbo官網(wǎng):https://cn.dubbo.apache.org/zh-cn/
Apache Dubbo 是一款 RPC 服務(wù)開發(fā)框架,用于解決微服務(wù)架構(gòu)下的服務(wù)治理與通信問題,支持多種語言,官方提供了 Java、Golang 等多語言 SDK 實現(xiàn)。使用 Dubbo 開發(fā)的微服務(wù)原生具備相互之間的遠程地址發(fā)現(xiàn)與通信能力, 利用 Dubbo 提供的豐富服務(wù)治理特性,可以實現(xiàn)諸如服務(wù)發(fā)現(xiàn)、負載均衡、流量調(diào)度等服務(wù)治理訴求。Dubbo 被設(shè)計為高度可擴展,用戶可以方便的實現(xiàn)流量攔截、選址的各種定制邏輯。
2.示例
實現(xiàn)說明:
????????創(chuàng)建一個空項目,在空項目中創(chuàng)建3個模塊,分別定義接口工程,生產(chǎn)者工程及消費者工程。并在生產(chǎn)者工程及消費者工程中引入接口工程。
????????接口工程存放表的實體類及服務(wù)接口。
????????生產(chǎn)者工程提供服務(wù)接口的實現(xiàn)。
????????消費者工程調(diào)用服務(wù)接口。
實現(xiàn)步驟:
①引入dubbo依賴
<!-- Dubbo Spring Boot Starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><dependency><!--zookerper版本一定要匹配! --><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-zookeeper</artifactId><version>2.7.8</version></dependency>
?②在接口工程中創(chuàng)建接口
package com.example.service;public interface PrivoderService {String getInfo();
}
③在生產(chǎn)者工程中實現(xiàn)接口,并進行dubbo的配置
接口實現(xiàn):使用dbboservice注解,將服務(wù)的實現(xiàn)暴露給dubbo
package com.example.provider.service.impl;import com.example.service.PrivoderService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;/*** @Author linaibo* @Date 2023/11/18 15:28* @Version 1.0*/
@Service
@DubboService
public class PrividerServiceImpl implements PrivoderService {@Overridepublic String getInfo() {return "執(zhí)行成功";}
}
?配置文件:
server:port: 8881
dubbo:application:name: provider-service //dubbo的應(yīng)用名registry:protocol: zookeeper //使用zookeeper作為服務(wù)的注冊中心address: 127.0.0.1:2181 //zookeeper地址protocol:name: dubbo //使用dubbo協(xié)議port: 20885consumer:timeout: 60000 //調(diào)用接口的超時時間check: false //啟動時不校驗消費者是否已啟動
spring:datasource:url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: 123456
mybatis:mapper-locations: classpath*:mapper/*Mapper.xmltype-aliases-package: com.**.domain
啟動類配置:添加@EnableDubbo,用于將dubbo相關(guān)的配置bean加載到spring容器
package com.example.provider;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @Author linaibo* @Date 2023/11/18 15:32* @Version 1.0*/
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}
?④生產(chǎn)者工程中調(diào)用接口
調(diào)用:使用DubboReference指定調(diào)用的服務(wù)
package com.example.consumer.service.impl;import com.example.consumer.service.ConsumerService;
import com.example.domain.AjaxResult;
import com.example.service.ISysConfigService;
import com.example.service.PrivoderService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;import static com.example.domain.AjaxResult.success;/*** @Author linaibo* @Date 2023/11/18 15:56* @Version 1.0*/
@Service
public class ConsumerServiceImpl implements ConsumerService {@DubboReferenceprivate PrivoderService privoderService;@DubboReferenceprivate ISysConfigService sysConfigService;@Overridepublic String getInfo() {String info = privoderService.getInfo();return info;}@Overridepublic AjaxResult getConfig(Long configId) {return success(sysConfigService.selectConfigById(configId));}
}
配置文件及啟動類配置和生產(chǎn)者工程一致
啟動zookeeper服務(wù)及生產(chǎn)者工程及消費者工程,就可以進行服務(wù)的調(diào)用。
3.總結(jié)
可以通過dubbo-admin進行服務(wù)的管理及查看。
dubbo.consumer.timeout:調(diào)用超時時間(毫秒),默認為 1000。debug模式下會導(dǎo)致調(diào)用失敗,所以需要調(diào)大。
dubbo.consumer.check:為true時,開啟服務(wù)啟動時檢查依賴的服務(wù)是否可用,默認為 true。
也就是說,生產(chǎn)者沒有啟動時,消費者無法啟動,需要設(shè)置為false
參照:SpringBoot整合dubbo+zooker搭建分布式服務(wù)(超詳細)_springboot+dubbo分布式項目-CSDN博客
SpringBoot項目集成Dubbo_springboot集成dubbo-CSDN博客