nacos(基于docker最详细安装)

1、什么是Spring Cloud

Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2、微服务和微服务架构

微服务就是微小的服务,通过微服务思想,将原有的大而全的项目拆分成多个小而巧的项目,每个小的项目就是一个微服务,若干个微服务组成一个完整项目。微服务架构就是利用这种思想搭建的项目架构方式。

微服务架构可以提供高并发、高吞吐、高可用的特性。

3、什么是Nacos

https://nacos.io/zh-cn/ 参考官方文档,不过多赘述。

nacos的两个核心功能:注册中心(发现中心)、配置中心(配置管理)

阿里旗下产品。Nacos是Spring Cloud Alibaba的开源组件之一,它不仅可以像Consul、Eureka那样作为注册中心,还可以像Spring Config那样作为远程的配置中心,并且,它还有很多自己的特性。

4、Nacos应用

1、基于Docker安装

shell 复制代码
#拉取docker镜像:
docker pull nacos/nacos-server:1.3.1
shell 复制代码
#创建挂载目录:
mkdir -p /usr/local/docker/nacos/init.d /usr/local/docker/nacos/logs

#安装nacos:
docker run -d \
-p 8848:8848 \
-e MODE=standalone \
-e PREFER_HOST_NAME=hostname \
-v /usr/local/docker/nacos/init.d:/home/nacos/init.d \
-v /usr/local/docker/nacos/logs:/home/nacos/logs \
--name nacos nacos/nacos-server:1.3.1

-e MODE=standalone:运行模式为单例模式,nacos支持集群,当前用单例运行

-e PREFER_HOST_NAME=hostname:以主机名启动,也可以用ip地址

【命令1:】

【命令2:】

【命令3:】

2、注册中心

1.添加依赖:

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>
    <groupId>org.jsoft</groupId>
    <artifactId>demo-nacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.7.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
        <jwt.version>0.7.0</jwt.version>
        <fastjson.version>1.2.60</fastjson.version>
        <spring-cloud-alibaba.version>2.0.3.RELEASE</spring-cloud-alibaba.version>
        <spring-cloud.version>Finchley.SR2</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>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--json-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</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>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.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>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2.编写bootstrap.yml配置文件:

是配置注册中心的,要优先于application.yml文件读取。

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.43.8:8848

3.编写application.properties配置文件:

给当前工程取的名,用于在nacos中显示和管理。

spring.application.name=nacos01

4.编写启动类:

@SpringBootApplication
public class SpringBootMain {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMain.class);
    }
}

5.运行程序,访问Nacos:

http://192.168.43.8:8848/nacos/#/login

3、配置中心

【1、修改application.yml】

server:
  port: 99

common:
  name: zhangsan
  age: 20

【2、创建控制器】

package org.jsoft.demo.controller;

import lombok.Setter;
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")
@Setter
public class UserController {

    @Value("${common.name}")
    private String name;

    @Value("${common.age}")
    private Integer age;

    @GetMapping
    public String test(){
        return name+"----"+age;
    }

}

【3、启动,访问】

【4、添加maven依赖】

xml 复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

【5、创建命名空间】

【注意:上图里的'命名空间ID',一会粘贴在idea项目配置文件中。】

【6、配置中心添加配置文件】

【注意:下图中的Data ID ,为自定义。】

yaml 复制代码
common:
  name: lisi
  

【在配置一个】

common:
  age: 25

【7、修改bootstrap.yml配置文件】

yaml 复制代码
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.43.8:8848
      config:
        server-addr: 192.168.43.8:8848
        file-extension: yaml
        namespace: d2a5ce42-8836-4dc4-89e0-9f8620b82327
        shared-configs:
          - data-id: dz14b-demo1.yaml
            group: DEFAULT_GROUP
          - data-id: dz14b-test1.yaml
            group: DEFAULT_GROUP
    inetutils:
      preferred-networks: 192.168.56

server-addr:nacos服务ip及端口

file-extension:配置文件类型

namespace:命名空间,在nacos页面中创建,用来管理配置文件

shared-configs:配置中心配置

​ data-id:配置文件唯一标识

​ group:配置文件分组

preferred-networks:设置微服务的网段

【8、查看上步操作中,获得注册中心里的网段】

【9、重新启动项目,再次访问】

获得配置中心里的值了。(配置中心里有的值,读配置中心;配置中心没有的值,读本地;本地也没有,报错。)

相关推荐
hcja66632 分钟前
CVE-2024-23897-Jenkins任意文件读取漏洞复现
运维·web安全·网络安全·中间件·jenkins
wingaso1 小时前
[Linux]el8安全配置faillock:登录失败达阈值自动锁定账户配置
linux·运维·安全·ssh
linux修理工2 小时前
speedtest For Ubuntu/Debian
linux·运维·服务器
vortex52 小时前
Linux 命令行十六进制编辑器:高效操作二进制文件
linux·运维·编辑器
mcharleylei3 小时前
Centos 安装docker
linux·docker·centos
jerry-894 小时前
系统安全及应用
linux·运维·服务器
AiFlutter4 小时前
在AlarmLinux系统中安装KeyDB
linux·运维·服务器
小徐同学14185 小时前
BGP边界网关协议(Border Gateway Protocol)路由聚合详解
运维·服务器·网络·网络协议·信息与通信·bgp
kyle~7 小时前
Linux--权限
linux·运维·服务器
谁在夜里看海.7 小时前
【Linux-网络】初识计算机网络 & Socket套接字 & TCP/UDP协议(包含Socket编程实战)
linux·运维·服务器·网络·计算机网络