什么是Nacos?
引入官方的一段話:Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您快速實現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。
Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微服務(wù)平臺。 Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu) (例如微服務(wù)范式、云原生范式) 的服務(wù)基礎(chǔ)設(shè)施。
Nacos是Alibaba開源的一套微服務(wù)的治理方案,文檔有中文版的,詳情請看:
Nacos官方文檔,這里就不啰嗦了...
Nacos的安裝過程
首先來到官網(wǎng)如:Nacos下載地址,我們只需要下載nacos-server即可,直接下載zip的解壓即可,如圖:

解壓之后我們來看看項目結(jié)構(gòu):

bin目錄下是各大平臺的對于Nacos的啟動命令,當我們啟動對應(yīng)的命令時實質(zhì)是在調(diào)用target目錄的jar,猿友們可以自己去看,解壓之后我們來啟動它,命令如下:
startup.sh -m standalone
注意:前期是通過cmd切換到Nacos的bin目錄下,我們來看一下啟動的結(jié)果圖:

上圖是在啟動的過程中的一個截圖,可以發(fā)現(xiàn)Nacos的很洋氣的端口8848,等啟動完成后,我們訪問 http://localhost:8848/nacos/index.html進入它的管理臺如圖:

需要我們輸入用戶名和密碼驗證,默認都是nacos,之后來到管理臺,如圖:

至此我們的Nacos安裝完畢
構(gòu)建服務(wù)
創(chuàng)建項目名為alibaba-nacos-producer作為服務(wù)的提供者
- 在pom.xml文件中,代碼如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 配置文件中,代碼如下:
server:
port: 8080
spring:
application:
name: alibaba-nacos-producer
cloud:
nacos:
discovery:
server-addr: localhost:8848
- 在我們的啟動類上需要貼上注解EnableDiscoveryClient,這樣Nacos會發(fā)現(xiàn)服務(wù),代碼如下:
package com.cacmo.alibaba.nacos.producer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author cb
*/
@SpringBootApplication
@EnableDiscoveryClient
public class AlibabaNacosProducerApplication {
public static void main(String[] args) {
SpringApplication.run(AlibabaNacosProducerApplication.class, args);
}
啟動服務(wù),打開Nacos控制臺,如圖:

發(fā)現(xiàn)我們的服務(wù)并沒有注冊進來,郁悶了很久,后來查看了對應(yīng)各自的版本,才知道問題在哪了,我們來看下當前配置的版本,如圖:


由上圖我們發(fā)現(xiàn)我的springboot版本為2.2.0,而springcloud的版本為Finchleny.SR1版本的,在官方中的要求是這樣說明的,我們來看圖:

所以,我這里需要用springcloud版本為Greenwich,再一次的啟動我們的服務(wù)看是否注冊進去.

從上圖可以看到我們的服務(wù)已經(jīng)注冊進去,我們來寫一個接口供消費者來調(diào)用,代碼如下:
package com.cacmo.alibaba.nacos.producer.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author cb
*/
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(String name){
return "hello:"+name;
}
接著我們來創(chuàng)建服務(wù)的消費方,我這里服務(wù)名為alibaba-nacos-consumer,建的過程和服務(wù)提供方一樣,這里就不在貼pom文件了,來看配置文件,代碼入下:
server:
port: 9000
spring:
application:
name: alibaba-nacos-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
接著我們寫一個調(diào)用服務(wù)方的接口代碼,如下:
package com.cacmp.alibaba.nacos.consumer.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @author cb
*/
@RestController
public class ConsumerController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private RestTemplate restTemplate;
@RequestMapping("consumer")
public String consumer(){
ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-producer");
String uri = serviceInstance.getUri().toString();
String object = restTemplate.getForObject(uri + "/hello?name="+"nacos!", String.class);
System.out.println(object);
return object;
}
啟動我們的消費者項目,同樣我們將它也注冊到Nacos中,訪問http://localhost:9000/consumer,我們會看到如下結(jié)果:


關(guān)于Nacos的簡單使用就是這樣的.......,最后附上本案例的代碼示例: