Dubbo和Zookeeper集成(簡易)
分布式系統是由一組通過網路進行通信、為了完成共同的任務而協調作業的計算機節點組成的系統,分布式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、存盤任務,其目的是利用更多的機器,處理更多的資料,
分布式系統(distributed system)是建立在網路之上的軟體系統,
1.環境
- Dubbo安裝
- Zookeeper安裝
2.框架搭建
Pom依賴
- Dubbo
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
- zookeeper
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
- zookeeper及其依賴包,解決日志沖突,還需要剔除日志依賴
<!-- 引入zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<!--排除這個slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
提供者(provider-server)
- 在springboot組態檔中配置dubbo相關屬性
#配置dubbo
dubbo.application.name=product-server
#注冊中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#注冊的服務
dubbo.scan.base-packages=com.lit.Service
- 在service的實作類中配置服務注解,發布服務!注意導包問題
package com.lit.Service;
public interface TicketService {
public String getTicket();
}
package com.lit.Service;
import org.springframework.stereotype.Service;
//zookeeper的服務注冊與發現
@Service
@com.alibaba.dubbo.config.annotation.Service
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "獲取了一張《Ticket》";
}
}
服務消費者(consumer)
- 配置引數
#當前應用名字
dubbo.application.name=consumer-server
#注冊中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
- 直接將服務的介面拿過來,路徑必須保證正確,即和服務提供者相同
package com.lit.Service;
public interface TicketService {
public String getTicket();
}
- 消費者服務類
package com.lit.Service;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
@Service
public class ConsumerService {
//去注冊中心獲取服務
@Reference //參考遠程 Pom坐標:可以定義相同的介面名
TicketService ticketService;
public void buyTicket(){
String ticket = ticketService.getTicket();
System.out.println("在注冊中心拿到了--------->" + ticket);
}
}
3.測驗類撰寫
@SpringBootTest
class ConsumerApplicationTests {
@Autowired
ConsumerService consumerService;
@Test
void contextLoads() {
consumerService.buyTicket();
}
}
啟動測驗
- 開啟zookeeper
- 打開dubbo-admin實作監控
- 開啟服務者
- 消費者消費測驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/250655.html
標籤:其他
