Nacos是阿里出品的幫助發現、配置和管理微服務的一款產品,並且這應該是全部服務發現與管理產品中中文文檔最爲友好的,你徹底直接去官網查看,中文手冊用起來就是爽!java
本文主要會快速上手入門使用Nacos,並結合項目(Spring Cloud)來進行開發。spring
下載對應系統的包,windows下雙擊 startup.cmd 便可運行,運行成功如圖,默認爲8848端口 bootstrap
Nacos默認提供了控制檯管理,訪問地址:http://127.0.0.1:8848/nacos 能夠看到: windows
默認用戶命和密碼都爲:nacos,登陸進入後可看到管理界面app
如下爲 Nacoas 提供的一個服務發現的說明圖。 ide
建立provider項目:leon-provider,指定Spring Boot版本爲1.5.21,而後添加Nacos的相關依賴:微服務
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
複製代碼
這裏須要注意各個版本的對應關係 spa
咱們的spring boot是屬於1.5.X的序列,因此對應的spring cloud的版本爲:Spring Cloud Edgware 。 本位中使用的Nacos的版本爲1.0.0,因此注意,若是須要引入spring cloud alibaba的相關依賴,那麼就只能爲特定三個版本。本文中使用0.1.2版本3d
在leon-provider中添加spring cloud 的相關依賴code
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR5</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
複製代碼
若是須要使用 Spring Cloud Edgware 版本,請在 dependencyManagement 中添加以下內容
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
複製代碼
指定Nacos相關依賴版本爲0.1.2
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR5</spring-cloud.version>
<latest.version>0.1.2.RELEASE</latest.version>
</properties>
複製代碼
在application.yml中配置Nacos服務信息:
server:
port: 8080
spring:
application:
name: leon-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848
複製代碼
給啓動類添加註解:
@EnableDiscoveryClient
複製代碼
啓動程序,運行成功後,能夠看到Nacos中已經有了註冊信息:
點擊詳情後可查看當前服務的IP、端口、健康狀態等信息。在leon-provider工程中建立LoginService類,提供簡單的登陸方法:
@RestController
public class LoginService {
@RequestMapping("/login")
public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord) {
if (userName.equals("leon") && passWord.equals("888")) {
return "leon-provider: login success";
}
return "leon-provider: login fail";
}
}
複製代碼
建立leon-consumer工程,指定spring boot、Spring cloud版本和leon-provider一致,同時添加spring cloud feign依賴(關於Feign本文不在贅述)
添加Nacos的服務端IP和端口信息,
server:
port: 8081
spring:
application:
name: leon-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
複製代碼
在leon-consumer中建立Feign Client,經過name屬性定義想要調用的服務名稱
@FeignClient(name = "leon-provider")
public interface UserFeignClient {
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord);
}
複製代碼
建立Controller類並調用接口
@RestController
public class UserController {
@Autowired
private UserFeignClient userFeignClient;
/** * 用戶帳號名和密碼登陸 * * @param userName * @param passWord * @return */
@RequestMapping("/login")
public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord) {
return userFeignClient.login(userName, passWord);
}
}
複製代碼
在啓動類上添加註解 @EnableFeignClients,而後運行leon-consumer服務。刷新控制檯,能夠看到註冊服務有兩個:
訪問leon-consumer中的login接口,查看是否能正常調用leon-provider服務。
在控制檯中,選擇leon-provider服務,進入詳情後,能夠選擇將其下線
下線後再次訪問接口,能夠發現已經找不到對應的服務了。經過配置的方式能夠優雅的實現服務上、下線。
注意
服務經過控制檯下線,只是表明會在訂閱端過濾掉,在控制檯不受影響,因此即便下線服務,在控制檯依然顯示是健康的實例。若是咱們停掉服務,就會發現變成紅色爲非健康實例了
Nacos一樣提供了線上配置服務,新增配置
點擊發布完成配置,而後返回可查看
在項目中添加依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
複製代碼
在Controller中添加方法
@Value("${name:}")
private String name;
@Value("${age:}")
private String age;
@RequestMapping("/config")
public String config() throws NacosException {
return name + " | " + age;
}
複製代碼
運行程序訪問
注意