Springcloud-alibaba-nacos
nacos
下載地址:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
Springcloud-alibaba主要功能
**服務限流降級:**默認支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降級功能的接入,可以在運行時通過控制檯實時修改限流降級規則,還支持查看限流降級 Metrics 監控。
**服務註冊與發現:**適配 Spring Cloud 服務註冊與發現標準,默認集成了 Ribbon 的支持。
**分佈式配置管理:**支持分佈式系統中的外部化配置,配置更改時自動刷新。
**消息驅動能力:**基於 Spring Cloud Stream 爲微服務應用構建消息驅動能力。
**分佈式事務:**使用 @GlobalTransactional 註解, 高效並且對業務零侵入地解決分佈式事務問題。。
**阿里雲對象存儲:**阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。支持在任何應用、任何時間、任何地點存儲和訪問任意類型的數據。
**分佈式任務調度:**提供秒級、精準、高可靠、高可用的定時(基於 Cron 表達式)任務調度服務。同時提供分佈式的任務執行模型,如網格任務。網格任務支持海量子任務均勻分配到所有 Worker(schedulerx-client)上執行。
**阿里雲短信服務:**覆蓋全球的短信服務,友好、高效、智能的互聯化通訊能力,幫助企業迅速搭建客戶觸達通道。
nacos使用
使用1.1.4版本:
啓動nacos:
訪問localhost:8848//nacos
進入需要賬號和密碼,都是nacos
在總工程裏添加pom
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
新建一個9001工程:
添加pom:
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
編寫主啓動類:
編寫controller層用於測試:
啓動9001
訪問:
打開nacos查看:已經註冊進去了
參照9001新建一個9002
啓動9002,打開nacos:
能看到實例時2了,點開查看
能看到9001和9002都註冊成功了
新建一個83服務,用於調用9001和9002
添加pom:
<dependencies>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.zx.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
編寫yml:
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
service-url:
nacos-user-service: http://nacos-payment-provider
實現負載均衡:
nacos自己集成了ribbon:
新建主啓動類:
新建配置類:
新建controller類用於調用9001和9002:
啓動83並訪問:
能看到調用成功,並實現了負載均衡
nacos在cp和ap之間的切換
cp: 強調數據的一致性
ap: 高可用,數據可能會丟失
nacos默認是ap。切換成cp需要put命令:
nacos替代config作爲服務中心
新建一個服務:
添加pom:
<dependencies>
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--web + actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--一般基礎配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
添加bootstrap.yml
再創建一個application.yml用於區分生產環境
新建啓動類:
新建controller層:
看一下官網的說明:
看官網可以知道我們的配置文件名字:
nacos-config-client-dev.yaml
在nacos編寫文件:
訪問:
能看到直接訪問到了
查看動態刷新:
修改配置文件版本爲2.0
再次訪問:能發現已經動態刷新了
nacos多環境多項目管理
dataId方案:
新建配置文件test:
現在有兩個文件,讀取test:
修改application.yml
DataId方案:
group方案:
在nacos上新建config文件
再寫一個test組
修改配置文件
訪問:
能看到已經配置爲DEV組了,更改爲TEST組試一試
訪問:
Namespace方案:
在nacos上新建開發和測試命名空間:
再建一個test命名空間:
修改bootstrap.yaml:
將namespace的id配置進yml
在dev的命名空間配置不通的文件:
訪問:
能看到是這個文件
在訪問test:
nacos集羣和持久化配置
由自帶的數據庫切換成我們的mysql數據庫
nacos自身帶了一個嵌入式數據庫叫derby,再nacos的config中,可以直接導入我們的數據庫:
運行完成後就是這樣的:
然後找到application.properties
然後根據官網的要求修改這個文件:
要注意修改一下連接信息,用戶名和密碼這些
因爲更改了數據庫,所以以前的配置信息會消失,重啓一下試試:
重啓後再次登錄:
然後測試一下寫一個配置文件查看數據庫有沒有
能看到我們的數據庫已經切換成功了
開始部署集羣,官網的是3個nacos加一個虛擬ip再加一個數據庫:
下載Linux版本的nacos:
https://github.com/alibaba/nacos/releases/tag/1.1.4
先下載,就是網速感人。。。
找到下載好的nacos,然後解壓
解壓後能看到nacos的文件夾:
找到bin目錄
這裏就有啓動關閉這些
配置集羣:
先進入數據庫,跟windows一樣配置數據庫到nacos
把nacos裏的nacos.mysql.sql文件創建到數據庫,因爲我的已經創建好了就不展示了,
修改application.properties,根據官網的要求把這些複製進去
複製一份集羣的文件以防萬一:
進入複製的cluster.conf
查看hostname -i。
修改cluster.conf文件:
修改startup.sh
進入該文件:
mfs是指用哪一種模式,我們直接加一個p,如下:
;;兩個也要寫
修改完後:
./startup -p 3333這樣的能夠啓動
在文件最後把port傳進來:
Linux安裝Nginx
https://blog.csdn.net/weixin_44863780/article/details/105281483
修改nginx的配置文件:
進入nginx的nginx.conf文件進行修改:
修改的如下:
啓動nacos
再進入nginx,並啓動
訪問
新建文件
查看數據庫:
找到9002服務,更改一下配置:
啓動9002:能看到成功註冊進去了
再看一下節點信息,都寫入了: