目錄
Naacos
服務注冊/服務發現
引?Spring Cloud Alibaba依賴
引入Nacos依賴
引入Load Balance依賴
配置Nacos地址
服務端調用
啟動服務
Naacos
Nacos是Spring Cloud Alibaba的組件, Spring Cloud Alibaba遵循Spring Cloud中定義的服務注冊, 服務發現規范. 因此使?Nacos和使?Eureka對于微服務來說,并沒有太?區別.
主要差異在于:
? Eureka需要??搭建?個服務, Nacos不???搭建服務, 組件已經準備好了, 只需啟動即可.
? 對應依賴和配置不同
服務注冊/服務發現
Nacos的服務注冊和服務發現代碼?樣。?
引?Spring Cloud Alibaba依賴
在??程的pom?件中的 <dependencyManagement> 中引?Spring Cloud Alibaba的依賴:
<properties><spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version> </properties><dependencyManagement><dependencies><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> </dependencyManagement>
注意: Spring Boot 和Spring Cloud的版本是有?定對應關系的. Spring Cloud Alibaba也遵循
Spring Cloud 的標準, 在引?依賴時, ?定要確認各個版本的對應關系.
Spring Cloud Alibaba 和Spring Cloud版本對應關系, 參考官??檔:-》鏈接
版本在?定范圍內可以?由選擇.
引入Nacos依賴
在order-service和product-service中引?nacos依賴:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
引入Load Balance依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId> </dependency>
配置Nacos地址
配置項 | Key | 默認值 | 說明 |
服務端地址 | spring.cloud.nacos.discovery. server-addr | 無 | Nacos Server 啟動監聽的ip地址和端? |
spring:application:name: product-servicecloud:nacos:discovery:server-addr: 47.98.109.138:8848
服務端調用
1. 修改IP為項?名
package order.service;import order.mapper.OrderMapper;
import order.model.OrderInfo;
import order.model.ProductInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);String url = "http://product-service/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}
2. 為restTemplate添加負載均衡注解 @LoadBalanced
package order.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class BeanConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}
啟動服務
啟動兩個服務, 觀察Nacos的管理界?, 發現order-service 和product-service 都注冊在Nacos上了。
測試負載均衡
多次訪問“http://127.0.0.1:8080/order/1”,可以看到,每個服務實例接受的請求數量都差不多: