springboot分布式整合dubbo的方式
Dubbo是Alibaba開源的分布式服務(wù)框架,它最大的特點(diǎn)是按照分層的方式來架構(gòu),使用這種方式可以使各個(gè)層之間解耦合(或者最大限度地松耦合)。從服務(wù)模型的角度來看,Dubbo采用的是一種非常簡單的模型,要么是提供方提供服務(wù),要么是消費(fèi)方消費(fèi)服務(wù),所以基于這一點(diǎn)可以抽象出服務(wù)提供方(Provider)和服務(wù)消費(fèi)方(Consumer)兩個(gè)角色。
1.服務(wù)提供者配置
//需要額外引入的jar包 提供者
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
spring配置方式
<?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="user-service-provider"></dubbo:application>
<!-- 指定注冊中心的地址,將來服務(wù)提供者要向注冊中心進(jìn)行注冊-->
<dubbo:registry address="zookeeper://192.168.192.3:2181"></dubbo:registry>
<!-- 指定將來服務(wù)消費(fèi)者消費(fèi)我的時(shí)候使用的rpc協(xié)議 -->
<dubbo:protocol name="dubbo" port="11123"></dubbo:protocol>
<!-- 服務(wù)發(fā)布 -->
<bean id="userService" class="com.oracle.shop.user.service.impl.UserServiceImpl"></bean>
<dubbo:service interface="com.oracle.shop.user.service.UserService" ref="userService"></dubbo:service>
</beans>
springboot配置方式
#dubbo的配置 #服務(wù)名 dubbo.application.name=user-provider #注冊中心地址 dubbo.registry.address=zookeeper://192.168.192.3:2181 #使用的協(xié)議以及端口號 dubbo.protocol.name=dubbo dubbo.protocol.port=11111
發(fā)布服務(wù)的方式
在相應(yīng)的實(shí)現(xiàn)類上添加注解
import com.alibaba.dubbo.config.annotation.Service;
import com.oracle.shopping.user.mapper.MenuMapper;
import com.oracle.shopping.user.po.Menu;
import com.oracle.shopping.user.service.MenuService;
import javax.annotation.Resource;
@Service //dubbo的注解表示發(fā)布該類
@org.springframework.stereotype.Service//spring的注解表示會(huì)在啟動(dòng)時(shí)實(shí)例化該類
public class MenuServiceImpl implements MenuService {
@Resource
private MenuMapper menuMapper;
@Override
public int deleteByPrimaryKey(String id) {
return menuMapper.deleteByPrimaryKey(id);
}
@Override
public int insert(Menu record) {
return menuMapper.insert(record);
}
@Override
public int insertSelective(Menu record) {
return menuMapper.insertSelective(record);
}
@Override
public Menu selectByPrimaryKey(String id) {
return menuMapper.selectByPrimaryKey(id);
}
@Override
public int updateByPrimaryKeySelective(Menu record) {
return menuMapper.updateByPrimaryKeySelective(record);
}
@Override
public int updateByPrimaryKey(Menu record) {
return menuMapper.updateByPrimaryKey(record);
}
}
啟動(dòng)類中添加dubbo的掃包器,設(shè)置掃描路徑
@SpringBootApplication
@MapperScan("com.oracle.shopping.user.mapper")
@EnableTransactionManagement
@DubboComponentScan("com.oracle.shopping.user.service.impl")
public class UserProviderApp {
public static void main(String[] args) {
SpringApplication.run(UserProviderApp.class, args);
}
}
2.服務(wù)消費(fèi)者訂閱
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
spring配置方式
<?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="user-web-consumer"></dubbo:application>
<!-- 指定注冊中心的地址,將來服務(wù)提供者要向注冊中心進(jìn)行注冊-->
<dubbo:registry address="zookeeper://192.168.192.3:2181"></dubbo:registry>
<!-- 訂閱具體服務(wù),讓dubbo幫咱們生成動(dòng)態(tài)代理客戶端對象-->
<dubbo:reference interface="com.oracle.shop.user.service.UserService" id="userService"></dubbo:reference>
<dubbo:reference interface="com.oracle.shop.order.service.OrderService" id="orderService"></dubbo:reference>
</beans>
在controller中進(jìn)行依賴注入和調(diào)用
@Controller
@RequestMapping("/user")
public class UserController {
//通過動(dòng)態(tài)代理的方式生成的動(dòng)態(tài)代理類
@Autowired(required = false)
private UserService userService;
//不進(jìn)行檢查,防止報(bào)錯(cuò)無法運(yùn)行
@Autowired(required = false)
private OrderService orderService;
@RequestMapping("/a")
public @ResponseBody
User detail(){
return userService.findUserById(1);
}
@RequestMapping("/b")
public @ResponseBody
Orders details(){
return orderService.findUserById(1);
}
}
springboot配置方式
#指定自己的名稱 dubbo.application.name=user-consumer #指定注冊中心的地址 dubbo.registry.address=zookeeper://192.168.192.3:2181
?在controller當(dāng)中使用注解聲明要使用的服務(wù)(實(shí)現(xiàn)類)
@RestController
@RequestMapping("/user")
public class UserController {
//表示要使用的服務(wù)
@Reference(interfaceName = "com.oracle.shopping.user.service.UserService")
private UserService userService;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/detail")
public User detail(String id){
return userService.selectByPrimaryKey(id);
}
}
啟動(dòng)類中設(shè)置dobbo注解的掃描路徑
@SpringBootApplication
@DubboComponentScan("com.oracle.shopping.user.controller")
public class UserConsumerApp {
public static void main(String[] args) {
SpringApplication.run(UserConsumerApp.class );
}
}
到此這篇關(guān)于springboot(分布式)整合dubbo的文章就介紹到這了,更多相關(guān)springboot整合dubbo內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解SpringBoot開發(fā)案例之整合Dubbo分布式服務(wù)
- Springboot-dubbo-fescar 阿里分布式事務(wù)的實(shí)現(xiàn)方法
- Spring Boot Dubbo 構(gòu)建分布式服務(wù)的方法
- SpringBoot+Dubbo+Seata分布式事務(wù)實(shí)戰(zhàn)詳解
- 詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案
- SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開發(fā)的應(yīng)用詳解
- SpringBoot+Dubbo+Zookeeper實(shí)現(xiàn)簡單分布式開發(fā)的應(yīng)用詳解
- springBoot+dubbo+zookeeper實(shí)現(xiàn)分布式開發(fā)應(yīng)用的項(xiàng)目實(shí)踐
- Spring與Dubbo搭建一個(gè)簡單的分布式詳情
相關(guān)文章
Java實(shí)現(xiàn)SHA1加密代碼實(shí)例
這篇文章給大家分享了Java實(shí)現(xiàn)SHA1加密的相關(guān)實(shí)例代碼,有興趣的朋友可以測試參考下。2018-07-07
Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法
這篇文章主要介紹了Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
關(guān)于重寫equals()方法和hashCode()方法及其簡單的應(yīng)用
SpringBoot整合Mybatis-plus的具體過程使用
Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法具體介紹

