專業(yè)做營(yíng)銷網(wǎng)站百度推廣怎么推
上一篇文章中,Spring Boot 整合 Dubbo3 + Nacos 2.4.0 進(jìn)行了簡(jiǎn)單的集成使用,此文簡(jiǎn)單進(jìn)階并記錄踩坑日常;
- Nacos 2.4.0 增加鑒權(quán)的配置
- Nacos 2.4.0 配置 MySQL
- Nacos2.4.0 的熱更新
- Dubbo3 自動(dòng)負(fù)載
- Dubbo3 的重試和超時(shí)機(jī)制
- 踩坑記錄
一、Nacos 2.4.0 增加鑒權(quán)的配置
1.1、修改nacos的配置文件application.properties
cd ../nacos/conf
vim application.properties
1.2、啟動(dòng)報(bào)錯(cuò)
1.3、增加賬號(hào)和用戶名的配置
在dubbo3-provider項(xiàng)目的application.yaml文件中增加username和password的配置
在 nacos的dubbo3-provider配置中增加username和password的參數(shù)
1.4、啟動(dòng)成功
1.5、consumer 進(jìn)行同樣修改,啟動(dòng)成功
二、Nacos 2.4.0 配置 MySQL
nacos2.4.0默認(rèn)使用內(nèi)置的 Derby數(shù)據(jù)庫(kù),實(shí)際使用中更多會(huì)使用 MySQL 數(shù)據(jù)庫(kù);
重啟后,啟動(dòng)成功!
三、Nacos2.4.0 的熱更新
@NacosValue(value = "${dubboParams}", autoRefreshed = true)
private String dubboParams;配置文件中 增加 nacos.config.autoRefresh = true
詳細(xì)可看源碼中
配置生效
四、Dubbo3 自動(dòng)負(fù)載
新增模塊 dubbo3-provider2
模塊內(nèi)容和dubbo3-provider一致,只是修改了部分配置,此處說(shuō)明修改部分,全部源碼可在文末查看。
1、新增 nacos 配置
server:port: 5657dubbo:application:id: tyron-dubbo3-providername: tyron-dubbo3-providerserialize-check-status: WARNprotocol:id: dubboname: dubbohost: 127.0.0.1port: 7789serialization: hessian2registry:address: nacos://${nacos.config.server-addr}parameters.namespace: ${nacos.config.namespace}parameters.username: ${nacos.config.username}parameters.password: ${nacos.config.password}dubboParams: tyron-dubbo3-provider2
2、修改 application.yaml
nacos:config:# 指定命名空間namespace: 0f0809bb-4b47-****-1e7deb1d7ad2#配置服務(wù)地址server-addr: ******:8848username: nacospassword: nacos#data-ids 為新增加的data-iddata-ids: dubbo3-provider2#配置類型type: yaml#是否啟動(dòng)刷新配置autoRefresh: true#運(yùn)行時(shí)啟用bootstrap:enable: true
3、nacos 服務(wù)列表中實(shí)例數(shù)2
五、Dubbo3 的重試和超時(shí)機(jī)制
// 生產(chǎn)者代碼 dubbo3-provider
@DubboService(version = "1.0.0")
public class DemoServiceImpl implements DemoService {@NacosValue(value = "${dubboParams}", autoRefreshed = true)private String dubboParams;private AtomicLong atomicLong = new AtomicLong(0);/*** 第一次調(diào)用時(shí),睡眠時(shí)間為1秒,第二次調(diào)用時(shí)為900毫秒*/@Overridepublic String getString() {long l = atomicLong.incrementAndGet();System.out.println("atomicLong.incrementAndGet():" + l);try {Thread.sleep(1000 - (100 * l));} catch (Exception e) {e.printStackTrace();}return dubboParams;}
}// 消費(fèi)者代碼,dubbo3-consumer 增加超時(shí)時(shí)間和重試次數(shù)
@RestController
public class DemoConsumer {// 引用遠(yuǎn)程服務(wù),超時(shí)時(shí)間1000ms,重試次數(shù)1次@DubboReference(version = "1.0.0", timeout = 1000, retries = 1)private DemoService demoService;@GetMapping("/tyron-test")public String tyronTest() {return demoService.getString();}
}
接口調(diào)用成功,日志打印:
六、踩坑記錄
由于nacos在服務(wù)器中部署,搭建好了,啟動(dòng)報(bào)錯(cuò)。
1、防火墻添加端口
java.lang.RuntimeException: Can not create registry service-discovery-registry://*******:8848/org.apache.dubbo.registry.RegistryService?application=tyron-dubbo3-provider&dubbo=2.0.2&executor-management-mode=isolation&file-cache=true&interface=org.apache.dubbo.registry.RegistryService&namespace=0f0809bb-4b47-4458-aaa4-1eeb1d7ad2&pid=13008®ister=false®istry=nacos&release=3.2.9&serialize.check.status=WARNat org.apache.dubbo.registry.support.AbstractRegistryFactory.getRegistry(AbstractRegistryFactory.java:105) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.registry.RegistryFactoryWrapper.getRegistry(RegistryFactoryWrapper.java:33) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.registry.RegistryFactory$Adaptive.getRegistry(RegistryFactory$Adaptive.java) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.registry.integration.RegistryProtocol.getRegistry(RegistryProtocol.java:487) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:294) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper.export(ProtocolSecurityWrapper.java:84) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:79) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:66) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:58) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.export(ProtocolSerializationWrapper.java:50) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.rpc.protocol.InvokerCountWrapper.export(InvokerCountWrapper.java:42) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-3.2.9.jar:3.2.9]at org.apache.dubbo.config.ServiceConfig.doExportUrl(ServiceConfig.java:944) ~[dubbo-3.2.9.jar:3.2.9]
看了網(wǎng)上教程,是防火墻端口為開放,需要配置三個(gè)端口地址:9848、9849、7848
nacos2.X版本無(wú)法注冊(cè)、注冊(cè)失敗的幾個(gè)原因以及解決方案(踩坑避雷!)_nacos開啟權(quán)限校驗(yàn)后無(wú)法注冊(cè)-CSDN博客
部署手冊(cè)概覽
2、數(shù)據(jù)庫(kù)添加用戶數(shù)據(jù)
仔細(xì)比較 2.4 版本的初始化MySQL腳本和 2.3 版本的初始化 MySQL腳本,2.3多了兩句用戶相關(guān)的SQL;
https://github.com/alibaba/nacos/blob/2.3.0/config/src/main/resources/META-INF/nacos-db.sql
https://github.com/alibaba/nacos/blob/2.4.0/config/src/main/resources/META-INF/mysql-schema.sql
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
七、參考
Dubbo入門項(xiàng)目搭建【Dubbo3.2.9、Nacos2.3.0、SpringBoot 2.7.17、Dubbo-Admin 0.6.0】_嗶哩嗶哩_bilibili