SpringCloud-筆記12-nacos-配置、服務(wù)注冊與發(fā)現(xiàn)

image.png
image.png

spring-cloud-alibaba-demo b站

image.png
image.png

nacos 服務(wù)提供者、消費(fèi)者、配置demo

https://github.com/zhiguicai/springcloudalibabademo

一、nacos安裝&運(yùn)行

nacos官方文檔
nacos官方社區(qū) -segmentfault--推薦
Spring Cloud Nacos實(shí)現(xiàn)分布式環(huán)境下的配置管理和服務(wù)注冊發(fā)現(xiàn)-segmentfault

Java微服務(wù)新生代之Nacos--安裝、集群、集成
nacos修改默認(rèn)的用戶名密碼
java微服務(wù)Nacos配置管理

SpringCloud - 服務(wù)注冊與配置中心Nacos使用詳解2(同一個(gè)服務(wù)器上啟動三Nacos-集群部署)

IntelliJ IDEA 中創(chuàng)建maven項(xiàng)目

SpringCloud Alibaba Nacos服務(wù)注冊和配置中心--推薦*

####下載
#下載
 git clone https://github.com/alibaba/nacos.git
#或直接下編譯好的 [nacos-server-2.0.0.zip](https://github.com/alibaba/nacos/releases/download/2.0.0-bugfix/nacos-server-2.0.0.zip)

#nacos1.4.0 https://github.com/alibaba/nacos/releases/download/1.4.0/nacos-server-1.4.0.tar.gz


#安裝到本地倉庫
 cd nacos/
mvn -Prelease-nacos clean install -U
#Maven 方式打包后會在當(dāng)前目錄 distribution/target 下生成兩個(gè)壓縮包 nacos-server-1.0.1.tar.gz 和 nacos-server-1.0.1.zip,任意解壓一個(gè)使用即可。
#解壓&運(yùn)行
tar -xvf nacos-server-2.0.0.tar.gz
cd ./nacos/bin
./startup.sh -m standalone

centos 單例運(yùn)行


centos 單例運(yùn)行

win10 startup.cmd之前需要修改 set MODE="standalone" 、或配置集群信息


image.png

err運(yùn)行錯(cuò)誤原因:nacos1.3.2不能啟動(Aug 4, 2020)啟動報(bào)錯(cuò):db.num is null

#訪問地址
http://192.168.235.2:8848/nacos/index.html
#user: nacos ;pwd:nacos  (->czg*)
image.png

二、nacos集群配置

2.1 mysql中創(chuàng)建nacos的數(shù)據(jù)庫nacos_config

Nacos 推薦生產(chǎn)環(huán)境中數(shù)據(jù)庫使用建議至少主備模式,或者采用高可用數(shù)據(jù)庫。

這里為了簡化只采用了一個(gè)數(shù)據(jù)庫。首先新建一個(gè)名為 nacos_config 的數(shù)據(jù)庫

#naicat 或其他mysql客戶端運(yùn)行如下創(chuàng)建數(shù)據(jù)庫腳本
DROP DATABASE IF EXISTS nacos_config;
CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

USE nacos_config;

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

2.2 初始化nacos數(shù)據(jù)

使用提供的 sql 語句源文件 導(dǎo)入初始數(shù)據(jù)。

image.png

初始化腳本中除了建表外,就是為nacos建立一個(gè)nacos用戶,并為其設(shè)置了管理員角色

image.png

2.3 集群配置

#停止nacos服務(wù)
./shutdown.sh
#查看ip地址,比如得到ip  172.27.189.199 
ifconfig

2.3.1 配置cluster.conf(集群節(jié)點(diǎn))
在每個(gè) Nacos 節(jié)點(diǎn)的conf目錄下,添加配置文件 cluster.conf,可以參考相同目錄下的 cluster.conf.example 文件,每行配置一個(gè)節(jié)點(diǎn)的 IP 和端口,如 ip:port


cp ./nacos/conf/cluster.conf.example ./nacos/conf/cluster.conf
#編輯集群配置文件
vim ./nacos/conf/cluster.conf

比如

172.27.189.199:8848
172.27.189.199:8847
172.27.189.199:8846

2.3.2 配置conf/application.properties(mysql數(shù)據(jù)庫連接)

#編輯集群配置文件
vim ./nacos/conf/application.properties

其中server.port=8848是端口號

配置內(nèi)容方式參考:application.properties.example

image.png
# spring.datasource.platform=mysql
### Count of DB:
# db.num=1

### Connect URL of DB:
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=nacos
# db.password.0=nacos

2.3.2copy nacos目錄為集群實(shí)例

cp -r nacos nacos8846
cp -r nacos nacos8847

并修改對應(yīng)的端口server.port=8848是端口號-->8846 、8847

分別啟動不同的集群實(shí)例,分別運(yùn)行在8846、8847、8848端口

./nacos/bin/startup.sh 
./nacos8846/bin/startup.sh 
./nacos8847/bin/startup.sh 
image.png

查看啟動日志

cat ./nacos8846/logs/start.out 

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.


image.png

Caused by: io.grpc.netty.shaded.io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use

image.png

同一臺服務(wù)器, 啟動nacos集群,出現(xiàn)端口占用問題,具體問題如下 (版本號 : 2.0.0-ALPHA.2)


三、nacos服務(wù)注冊(Config)與發(fā)現(xiàn)(Discovery--阿里默認(rèn)集成ribbon)

阿里巴巴的 spring-cloud-alibaba-examples

阿里巴巴的 nacos-example

springboot接入nacos(轉(zhuǎn)載)--模塊化--推薦

服務(wù)注冊(privide)

先上效果圖


image.png

服務(wù)提供者 pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.czg</groupId>
    <artifactId>nacos-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2020.0.2</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


<!--        沒用用al的配置不要亂添加的-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
<!--            <version>0.2.1.RELEASE</version>-->
<!--        </dependency>-->
        <!-- springCloud-nacos-服務(wù)發(fā)現(xiàn)功能依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!--            registerInstance報(bào)錯(cuò)failed to req API:/nacos/v1/ns/instance after all servers...-->
            <version>0.2.2.RELEASE</version>
        </dependency>
<!--修改賬號密碼,在數(shù)據(jù)庫中,找到users表,即用戶表,就可以修改密碼。nacos的密碼是使用 org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder 加密的。-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

    </dependencies>
    <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

服務(wù)provider的對外controlller需要添加@EnableDiscoveryClient


image.png
@RestController
@EnableDiscoveryClient

public class ProTest {
    @GetMapping("/get")
    public String echo() {
        return "Hello Nacos Discovery ";
    }

}

application.yml

server:
  port: 8001
spring:
  application:
    name: shopping
  cloud:
    nacos:
      discovery:
        server-addr: 118.178.84.253:8848

發(fā)現(xiàn)(Discovery)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容