學而時習之,不亦說乎
前言
本章開始我們進入微服務的世界,在微服務需要的眾多功能中,今天我們介紹注冊中心
和配置中心
,這也是Nacos給我們提供的兩大功能。
注冊中心
注冊中心即提供服務注冊
和服務發現
功能.
何為服務注冊,即將服務信息注冊到注冊中心
何為服務發現,即從注冊中心上獲取服務信息
首先我們知道微服務有服務眾多的特點,我們通過REST API調用某個服務,發起請求時需要知道服務的實例網絡地址(IP地址和端口號),在基於雲平台的微服務應用中,服務實例會動態分配網絡地址,而且一些服務實例可能會因為自動擴展、失敗或者升級發生動態變化,因此微服務的注冊中心就粉墨登場了。
配置中心
隨着業務的發展、微服務架構的升級,服務的數量、程序的配置日益增多(各種微服務、各種服務器地址、各種參數),傳統的配置文件方式和數據庫的方式已無法滿足開發人員對配置管理的要求
- 安全性:配置跟隨源代碼保存在代碼庫中,容易造成配置泄漏
- 時效性:修改配置,需要重啟服務才能生效
- 局限性:無法支持動態調整:例如日志開關、功能開關
因此我們需要配置中心來統一管理配置
Nacos介紹
Nacos 是阿里巴巴的開源的項目,全稱 Naming Configuration Service ,專注於服務發現和配置管理領域。
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
Nacos實踐
Nacos下載安裝
在GitHub上獲取一個window環境的安裝版本,獲取地址為:
https://github.com/alibaba/nacos/releases
選擇如下圖示中的版本即可:

Nacos數據持久化
Nacos默認把數據保存在本地磁盤文件中,需要將數據持久化到mysql數據庫中。
- 打開Navicat for MySql,新建連接,連接到本地MySql數據庫或者雲數據庫(根據自身MySql安裝情況而定)
- 新建名為nacos的數據庫,運行在nacos/conf/nacos-mysql.sql的數據庫表生成腳本
- 修改nacos/conf/application.properties,加入mysql數據庫相關連接
# db mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
- 找到/nacos/bin/下雙擊startup.cmd,啟動nacos,出現如下頁面:
- 打開瀏覽器,訪問http://localhost:8848/nacos/#/login,默認登錄名和密碼都是nacos,可以正常進入說明已安裝成功。
微服務整合Nacos
- 上一篇中創建了mingx-user微服務,為了與nacos整合,需在其pom.xml中加入nacos相關依賴。調整如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mingx</groupId>
<artifactId>mingx-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>mingx-user</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos注冊中心依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos配置中心依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
</project>
- 啟動類Application.java中加入nacos服務發現的注解
package com.mingx;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
- 配置文件bootstrap.yml中去除之前端口號的配置,加入nacos相關配置,以指明nacos服務中心和配置中心的地址:
spring:
application:
name: mingx-user
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml # 假如不配置,則nacos遠程配置文件的后綴為.properties
discovery:
server-addr: 127.0.0.1:8848
profiles:
active: dev
- 瀏覽器中登錄nacos控制台,在配置管理--》配置列表頁面,點擊右上角的加號,來添加mingx-user的服務配置。
- 為了驗證能否從nacos的配置文件中讀取到設定的param.config的值,對UserController.java做一定修改,如下代碼:
package com.mingx.user.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${param.config}")
private String config;
@GetMapping("/helloUser")
public String helloUser() {
return "hello User ,param.config = " + config;
}
}
-
啟動mingx-user微服務觀察nacos控制台的服務管理--》服務列表中發現已經將該微服務注冊上。
-
在瀏覽器中訪問:http://127.0.0.1:7001/user/helloUser,如果可以正常響應如下內容,說明已經成功集成nacos了。
結束語
本篇文章是對Nacos兩大功能的最基礎的應用,Nacos其他更強大的功能有待更一步挖掘。
Nacos完全可以替代SpringClould Eureka以及SpringClould Config,使項目更簡潔、瘦身。
關於Nacos在生產環境的高可用,集群,會另外開篇專門的文章記錄。
下一篇會針對業務微服務,集成Mybatis-plus,基於mybatis-plus實現業務代碼生成,實現對業務數據庫的增刪改查操作。
點關注,不迷路
微信搜索【尋的足跡】關注公眾號,第一時間收到最新文章
![]()