地方網(wǎng)站域名信息流推廣
Nacos快速上手
- 項目環(huán)境介紹
- 一、服務注冊/服務發(fā)現(xiàn)
- 1.引入Spring Cloud Alibaba依賴
- 2.引入Nacos相關的依賴
- 3.引入Load Balance依賴
- 4.配置Nacos的地址
- 二、修改遠程調(diào)用代碼
- 三、測試
- 四、啟動多個服務,測試負載均衡
- 五、可能出現(xiàn)的問題

項目環(huán)境介紹
請你確保你的服務器或個人主機上已經(jīng)安裝并配置了Nacos
如果沒有,請先安裝Nacos并進行相應配置:Nacos安裝和配置
這里我們使用一個父子工程的項目來進行演示,子工程一個是訂單服務order-service
,一個是商品服務product-service
,在訪問訂單服務的時候,它就會遠程調(diào)用我們的商品服務(此處訂單服務時服務消費者,商品服務是服務提供者)
遠程調(diào)用代碼:
@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderInfoById(orderId);String url = "http://127.0.0.1:9090/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}
一、服務注冊/服務發(fā)現(xiàn)
Nacos的服務注冊和服務發(fā)現(xiàn)代碼一樣
1.引入Spring Cloud Alibaba依賴
在父工程的pom文件中的中引入Spring Cloud Alibaba的依賴:
<properties><spring-cloud-alibaba.version>2022.0.0.0-Rc2</spring-cloud-alibaba.version>
</properties><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version<type>pom</type><scope>import</scope>
</dependency>
💥 注意: Spring Boot 和Spring Cloud的版本是有一定對應關系的,Spring Cloud
Alibaba也遵循Spring Cloud 的標準,在引入依賴時,一定要確認各個版本的對應關系,Spring Cloud Alibaba和Spring Cloud版本對應關系,參考官方文檔:版本發(fā)布說明
版本在一定范圍內(nèi)才可以選擇使用
2.引入Nacos相關的依賴
在order-service
和product-service
中引入nacos依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.引入Load Balance依賴
同樣在order-service
和product-service
中都引入
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
4.配置Nacos的地址
可以配置在我們自己的主機上也可以配置在Linux服務器上,此處我們選擇Linux
配置項 | Key | 默認值 | 說明 |
---|---|---|---|
服務端地址 | spring.cloud.nacos.discovery.server-addr | 無 | Nacos Server啟動監(jiān)聽的ip地址和端口 |
spring:application:name: product-service#服務端地址cloud:nacos:discovery:server-addr: http://120.26.87.94:10020/
當然,此處如果使用的是本機作為Nacos服務中心,配置項該位自己主機的ip和相應端口即可
二、修改遠程調(diào)用代碼
把代碼修改成我們的項目名
@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderInfoById(orderId);String url = "http://product-service/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}
別忘了添加負載均衡注解 @LoadBalanced
@Configuration
public class BeanConfig {@LoadBalanced@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}
三、測試
測試接口:http://127.0.0.1:8080/order/1
此時啟動這兩個服務,就會發(fā)現(xiàn)在Nacos管理界面就已經(jīng)有這兩個服務了
四、啟動多個服務,測試負載均衡
在services
欄中,我們可以配置多個服務,具體操作步驟如下:
右擊我們要進行復制的服務,然后選擇Copy Configuration
項,然后再彈出的窗口中點擊Modify options
->Add VM options
,進行端口配置,后續(xù)會出現(xiàn)一個新的輸入項,我們輸入-Dserver.port={自定義端口號}
再確認即可創(chuàng)建出多個服務實例
啟動服務,觀察Nacos界面,就可以看到我們已經(jīng)添加了多個服務實例
五、可能出現(xiàn)的問題
java.net.UnknownHostException
出現(xiàn)這種問題大概率是因為沒有添加負載均衡的依賴
檢查是否添加了依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
服務注冊失敗
這種情況有可能會有報錯日志也可能沒有,但出現(xiàn)這種情況我們應該檢查Spring Cloud Alibaba版本是否是正確的:版本發(fā)布說明