一:Nacos簡介
Nacos致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
更多詳情請移步官網(https://nacos.io/zh-cn/docs/quick-start.html)接下來我們就將上述環境中的product、order服務注冊到nacos
二:Nacos環境搭建
2.1:安裝nacos
下載地址: https://github.com/alibaba/nacos/releases 下載zip格式的安裝包,然后進行解壓縮操作
2.2:啟動nacos
#切換目錄 cd nacos/bin #命令啟動 startup.cmd -m standalone
2.3:訪問nacos
打開瀏覽器輸入http://localhost:8848/nacos,即可訪問服務, 默認密碼是nacos/nacos如下圖

三:將商品(shop-product)微服務注冊到nacos
3.1:在pom.xml中添加nacos依賴
<!--nacos客戶端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
3.2:在啟動類上添加@EnableDiscoveryClient注解
@SpringBootApplication @EnableDiscoveryClient //開啟nacos注解 public class ProductApplication {·····}
3.3:在application.yml中添加nacos服務的地址
spring:
# 配置nacos信息
cloud:
nacos:
discovery:
server-addr: localhost:8848
3.4:啟動商品服務查看nacos控制面板是否成功注冊

四:注冊shop-order微服務到nacos
和前面shop-product注冊方法一致 故省略、成功后如下圖

改造上篇博文中的下單過程(OrderController)
OrderController注入依賴
//專門負責服務注冊和發現的,我們可以通過它獲取到注冊到注冊中心的所有服務 @Autowired private DiscoveryClient discoveryClient;
調用示例(從nacos取商品服務信息)
@GetMapping("/prod/{pid}")
public Order order2(@PathVariable("pid") Integer pid){
log.info(">>>客戶下單,調用商品微服務查詢商品信息<<<");
//從nacos中獲取服務地址 獲取的是個list集群信息
ServiceInstance instance = discoveryClient.getInstances("service-product").get(0);
String url = instance.getHost() + ":" +instance.getPort();
log.info(">>從nacos中獲取到的微服務地址為:" + url);
Product product = restTemplate.getForObject("http://"+url+"/product/"+pid, Product.class);
log.info(">>商品信息,查詢結果:" + JSON.toJSONString(product));
Order order = new Order();
order.setUid(1);
order.setUsername("測試用戶1");
order.setPid(product.getPid());
order.setPname(product.getPname());
order.setPprice(product.getPprice());
order.setNumber(1);
// orderService.save(order);
return order;
}
啟動結果

