Dubbo+Nacos實現服務註冊和發現
很多公司都用Dubbo作為自己的RPC遠端服務呼叫框架,其優異的效能也是得到了大家的認可。目前的標配是用ZooKeeper進行服務註冊,用Dubbo自帶的Dubbo Admin進行服務管理,基本來說是夠用的。
在講今天的內容之前,還是看看Dubbo+ZooKeeper是怎麼玩的。
Dubbo+ZooKeeper配置流程
1.POM依賴
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
2.暴露服務介面
介面:
public interface StuRpcService {
int add(int a, int b);
}
實現類:(這裡的@service註解是dubbo的,不要用spring的)
@Service
@Component
public class StuRpcServiceImpl implements StuRpcService {
private final static Logger logger = LoggerFactory.getLogger(StuRpcServiceImpl.class);
@Override
public int add(int a, int b) {
logger.info("StuRpcServiceImpl#add》》》》》》》");
System.out.println("StuRpcServiceImpl#add》》》》》》》");
return a+b;
}
}
3. 消費服務
@RequestMapping("rpc")
@RestController
public class RpcConsumerController {
@Reference
private StuRpcService stuRpcService;
@RequestMapping("invoke")
public String invokeRpcService(){
return String.valueOf(stuRpcService.add(1, 2));
}
}
4. dubbo註冊配置
dubbo.application.name=microservice
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181
5. 起zookeeper,起自己的應用,就可以玩起來了。
上面講解了一遍原有的zookeeper是怎麼玩的,現在如果要用nacos來做服務註冊和發現,改動大嗎?答案是,改動很小,只需要改application.properties和pom依賴即可。
Dubbo+Nacos配置流程要做的改動
1. pom依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>0.6.1</version>
</dependency>
2. application.properties
nacos.discovery.server-addr=127.0.0.1:8848
nacos.config.server-addr=127.0.0.1:8848
dubbo.registry.address = nacos://127.0.0.1:8848
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
3. 啟動nacos,看看服務提供者和消費者是不是都註冊上來了
4. 呼叫一把服務
我是用idea通過8090埠起的服務,這裡把服務提供的@Service給註釋掉了,然後用dos命令視窗通過8091埠起了一遍應用,這裡是沒有註釋掉@Service的包。造成的結果是:8090埠的應用沒有提供服務,8091埠的應用提供了add服務。
http://localhost:8090/rpc/invoke
呼叫後的結果:
網頁上顯示3,idea控制檯沒有列印任何日誌,dos命令視窗列印了日誌
總結
使用Nacos替換掉Zookeeper,對整個專案的改動並不大。至於為什麼用Nacos,不用Zookeeper,有下面的原因
1)分散式系統有CAP理論,Nacos實現了AP,Zookeeper實現了CP,為了系統的HA,寧願選用AP
2)Zookeeper僅僅是一個簡單的服務註冊工具,Nacos不僅僅支援服務註冊發現,而且實現了配置中心
3)Nacos作為SpringCloud全家桶一員,未來的發展肯定是和微服務路線圖發展一致
相關文章
- 用 etcd 實現服務註冊和發現
- Zookeeper實現服務註冊/發現
- 服務註冊與發現的原理和實現
- NodeJs服務註冊與服務發現實現NodeJS
- Eureka實現服務註冊與發現
- 實現etcd服務註冊與發現
- Consul 服務的註冊和發現
- Spring Cloud Eureka 實現服務註冊與發現SpringCloud
- SpringCloudAlibaba - 整合 Nacos 實現服務註冊與發現SpringGCCloud
- nacos服務註冊與發現
- Eureka服務註冊與發現
- Getway實現nacos註冊及服務轉發
- Spring Cloud Eureka 實現高可用服務發現註冊中心SpringCloud
- 微服務4:服務註冊與發現微服務
- 微服務5:服務註冊與發現(實踐篇)微服務
- nacos實現Java和.NetCore的服務註冊和呼叫JavaNetCore
- etcd與服務註冊及發現
- springcloud之服務註冊與發現SpringGCCloud
- apisix~整合服務發現註冊中心API
- Nacos服務註冊與發現原理
- 服務註冊與發現之ETCD
- 三. SpringCloud服務註冊與發現SpringGCCloud
- go微服務系列(二) - 服務註冊/服務發現Go微服務
- 一文搞懂服務註冊發現的原理與實現
- 聊聊微服務的服務註冊與發現!微服務
- 微服務SpringCloud之服務註冊與發現微服務SpringGCCloud
- consul 作為服務註冊與發現和配置中心
- naocs 作為服務註冊與發現和配置中心
- consul服務註冊與服務發現的巨坑
- 微服務之服務註冊和服務發現篇微服務
- etcd套路(八)實現服務註冊中心
- SpringCloud服務的註冊與發現(Eureka)SpringGCCloud
- SpringColud Eureka的服務註冊與發現SpringGC
- netty叢集(一)-服務註冊發現Netty
- 04-Consul服務註冊與發現
- Nacos服務註冊與發現的原理
- SpringCloud(3)---Eureka服務註冊與發現SpringGCCloud
- Nacos 服務註冊與發現原理分析