Nacos可以實現分佈式服務註冊與發現/分佈式配置中心框架。
官網的介紹: https://nacos.io/zh-cn/docs/what-is-nacos.html
Nacos的環境的準備
Nacos可以在linux/windows/Mac版本上都可以安裝
具體安裝教程地址:https://nacos.io/zh-cn/docs/quick-start.html
手動實現服務註冊與發現
1.實現服務註冊
發送post請求:
‘http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080’
2.實現服務發現
http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName
詳細步驟操作:https://nacos.io/zh-cn/docs/quick-start.html
Nacos整合SpringCloud
Maven依賴信息
<?xml version="1.0" encoding="UTF-8"?>
<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>
<modules>
<module>springcloud-alibaba-api</module>
<module>springcloud-alibaba-impl</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<groupId>SpringCloudAlibaba</groupId>
<artifactId>SpringCloudAlibaba</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- springboot 整合web組件-->
<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>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
</dependencies>
</project>
本地負載均衡器與Nginx 的區別
Nginx是客戶端所有的請求統一都交給我們的Nginx處理,讓後在由Nginx實現負載均衡轉發,屬於服務器端負載均衡器。
本地負載均衡器是從註冊中心獲取到集羣地址列表,本地實現負載均衡算法,既本地負載均衡器。
應用場景的:
Nginx屬於服務器負載均衡,應用於Tomcat/Jetty服務器等,而我們的本地負載均衡器,應用於在微服務架構中rpc框架中,rest、openfeign、dubbo。
OpenFeign客戶端
OpenFeign是一個Web聲明式的Http客戶端調用工具,提供接口和註解形式調用。
分佈式配置中心
分佈式配置中心的作用
分佈式配置中心可以實現不需要重啓我們的服務器,動態的修改我們的配置文件內容,常見的配置中心有攜程的阿波羅、SpringCloud Config、Nacos輕量級的配置中心等。
基於Nacos實現分佈式配置中心
客戶端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
創建一個bootstrap.yml
spring:
application:
###application的名稱
name: springcloud-alibaba-impl-member
cloud:
nacos:
discovery:
###註冊中心
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
###分組
group: DEFAULT_GROUP
###類型
file-extension: yaml
profiles:
active: dev
可以實現動態實現@RefreshScope
注意:連接nacos分佈式配置中心一定採用bootstrap形式優先加載 否則可能會報錯。
bootstrap.yml 用於應用程序上下文的引導階段。application.yml 由父Spring ApplicationContext加載。
分佈式配置中心的多版本應用
多版本控制
數據持久化
默認的情況下,分佈式配置中心的數據存放到本地data目錄下,但是這種情況如果nacos集羣的話無法保證數據的同步性。
在0.7版本之前,在單機模式時nacos使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本情況。0.7版本增加了支持mysql數據源能力,具體的操作步驟:
1.安裝數據庫,版本要求:5.6.5+
2.初始化mysql數據庫,數據庫初始化文件:nacos-mysql.sql
3.修改conf/application.properties文件,增加支持mysql數據源配置(目前只支持mysql),添加mysql數據源的url、用戶名和密碼。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
###摘自官網: https://nacos.io/zh-cn/docs/deployment.html
基於Nacos集羣部署方案
相關集羣配置
1、創建cluster文件夾
---nacos-server-8848
---nacos-server-8849
---nacos-server-8850
2、更改cluster.conf
cluster.conf
###ip和端口號
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850