[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)

SpringCloud Alibaba 服务注册与配置中心Nacos的入门及使用

一、Nacos简介

Nacos中文文档

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

简而言之就是注册中心+配置中心的组合,功能实现等于Eureka+Config+Bus

1.下载

下载地址

官网会是在github上,下载根本下不动.这里直接去码云上下载

https://gitee.com/mirrors/Nacos.git

使用GIt软件克隆该项目

git bash clone https://gitee.com/mirrors/Nacos.git

2.打包

进入下载目录的distribution文件夹,我这里的目录是E:\nacos-server\Nacos\distribution

然后cmd,输入mvn -Prelease-nacos -DskipTests clean install -U

之后就会打包成功,出现一个target文件夹

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第1张图片

打包后进入target就可以看到

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第2张图片

进入以下目录可以看到一个startup.cmd

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第3张图片

命令行运行 startup.cmd即可开启

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第4张图片

3.进入nacos

输入网址http://localhost:8848/nacos/ 进入nacos界面,初始账号密码都是nacos

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第5张图片

4.官方文档

Sping Alibaba官方文档

Nacos中文文档

二、Nacos服务中心注册

每一步在官方文档上都有说明,要多看官方文档

1.注册服务提供者

1.修改父工程pom文件


<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-alibaba-dependenciesartifactId>
    <version>2.1.0.RELEASEversion>
    <type>pomtype>
    <scope>importscope>
dependency>

2.创建子模块

创建子模块cloudalibaba-provider-payment9001,cloudalibaba-provider-payment9002

3.修改子模块pom

<dependencies>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <scope>runtimescope>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-testartifactId>
        <scope>testscope>
    dependency>
dependencies>

4.编写yml文件

server:
  port: 9001
spring:
  application:
    name: nacos-provider-service
  cloud:
    nacos:
      discovery:
      	server-addr: 127.0.0.1:8848			#往nacos进行注册
        #server-addr: http://localhost:8848会出错 

management:
  endpoints:
    web:
      exposure:
        include: *  #暴露所有端点

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([http://localhost:884]) tried: failed to req API:http://localhost:884/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException: Connection refused: connect

这里会报错,原因好像是因为他只能读到http://localhost:8848的http://localhost:884,所以连接错误

5.编写主方法

@SpringBootApplication
@EnableDiscoveryClient
public class AlibabaProviderMain9001 {
    public static void main(String[] args){
        SpringApplication.run(AlibabaProviderMain9001.class,args);

    }
}

6.编写测试controller

@RestController
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/payment/get/{id}")
    public String getServerPort(@PathVariable("id") Integer id) {
        return "我是nacos练习的端口"+serverPort+",我觉得我很帅!";
    }
}

7.去nacos查看是否注册

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第6张图片

2.注册服务消费者

1.修改pom文件

主要的不同就是就是使用的是

<dependencies>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    
    <dependency>
        <groupId>com.xiaoxiao.springcloudgroupId>
        <artifactId>cloud-api-commonartifactId>
        <version>${project.version}version>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <scope>runtimescope>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-testartifactId>
        <scope>testscope>
    dependency>
dependencies>

2.修改yml文件

server:
  port: 83


spring:
  application:
    name: nacos-consumer-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-provider-service

3.编写主方法

@SpringBootApplication
@EnableDiscoveryClient
public class AlibabaOrderMain83 {
    public static void main(String[] args){
        SpringApplication.run(AlibabaOrderMain83.class,args);      
        
    }
}

4.编写controller

@RestController
@Slf4j
public class OrderController
{
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/get/{id}")
    public String getProviderServerPort(@PathVariable("id") Integer id)
    {
        return restTemplate.getForObject(serverURL+"/payment/get/"+id,String.class);
    }

}

5.编写负载均衡配置

由于nacos自带ribbon,所以可以在RestTemplate注解@LoadBalanced

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getresRestTemplate() {
        return new RestTemplate();
    }
}

默认使用轮询算法

三、Nacos的CAP切换

C是保证在同一时刻看到的数据是一致的,也就是高一致性

A是保证所有请求都能被收到,也就是高可用性

默认使用AP模式。

对应需求:如果不需要存储级别的信息,并能保持心跳上报,可以选择AP;如果需要在服务级别编辑或者是存储配置信息,就必须使用CP。

切换方式:curl -X PUT ‘$NACOS_ SERVER:8848/nacos/v1/ns/operator/switches?entry= serverMode&value=CP’

四、Nacos作为配置中心(替代Config)

1.新建子模块

新建子模块cloudalibaba-config-nacos-client3377

2.修改pom文件

<dependencies>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    dependency>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <scope>runtimescope>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-testartifactId>
        <scope>testscope>
    dependency>
dependencies>

3.编写yml文件

要配置两个yaml文件,其中一个文件是全局配置,另一个是这个服务端的局部配置。

全局配置要优先于局部配置,先有全局配置,之后再把局部配置加上

# bootstrap.yaml配置
# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
# application.yaml配置
spring:
  profiles:
    active: dev

4.编写主方法

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigMain3377 {
    public static void main(String[] args){
        SpringApplication.run(NacosConfigMain3377.class,args);

    }
}

5.编写controller

@RestController
@RefreshScope   //动态刷新注解
public class NacosConfigController {
    @Value("${config.info}")	//先从远程看有没有,没有就在本地找
    private String ConfigInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return ConfigInfo;
    }
}

6.新建配置

参考官网

dataId配置方式:

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第7张图片

具体操作:

去nacos后台,新建一个配置

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第8张图片

配置dataId

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第9张图片

远程配置名就是: nacos-config-client-dev.yaml

如果出现错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘scopedTarget.nacosConfigController’: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘config.info’ in value "${config.info}"

说明没有读取到配置,

1.看看是不是yaml配置成yml了。

2.看看配置文件是不是和你配置的对不上。

3.看看远程配置文件是不是这个属性。

4.我这里就是第四种,搞了一两个小时

查看日志发现

The web application [ROOT] appears to have started a thread named [com.alibaba.nacos .naming.client.listener] but has failed to stop it…

sun.misc.Unsafe.park(Native Method)

然后栈溢出。。。死循环。。。

我找了半天没找出我的问题,以为是文件问题,然后气急败坏的重启了Nacos,结果好了。。。

五、namespace、group、dataId联系与配置

namespace,group,dateId可以看做是一个层层包裹的关系,最外层的namespace是区分部署环境的,group+dataid从逻辑上区分对象。namespace主要是用于隔离,比如三个开发环境dev,test,prod就可以用不同的namespace隔离。

group可以将不同的微服务进行划分。

1.dataId配置

dataId配置很简单,直接修改application.yml中的spring.profiles.active:

spring:
  profiles:
    active: dev	#test,prod

直接可以访问不同开发环境的配置文件

2.group配置

在远程配置配置group
[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第10张图片

在yml文件进行修改

config:
  server-addr: localhost:8848 #Nacos作为配置中心地址
  file-extension: yaml #指定yaml格式的配置
  group: TEST_GROUP  #制定group,要改的就是这
spring:
  profiles:
    active: group

3.namespace配置

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第11张图片

创建后随机生成一个流水号,就是namespace的id

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第12张图片

然后新建一个配置,配置和之前是一样,但是在配置yml时候要注意添加具体的namespace的id

config:
  server-addr: localhost:8848 #Nacos作为配置中心地址
  file-extension: yaml #指定yaml格式的配置
  group: DEV_GROUP  #制定group
  namespace: 1c366d06-3e24-4c44-a1a7-f1e405256d6a #namespace的流水号

六、Nacos集群

官方文档

  • nacos采用了集中式存储的方式支持集群化部署,目前只支持MySQL存储

  • nacos支持持久化

nacos底层导入了Apache的小型数据库Derby

要先把Derby切换成MySQL

建议是在linux上进行操作

1.安装准备

安装1个Nginx+3个Nacos+1个mysql

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第13张图片

Nacostar.gz包(需要连外网否则下载太慢)

Nginx官方下载网址(也要连外网)

将安装包用xftp拷贝到/opt下

解压 tar -zxvf xxx.tar.gz

cp -r nacos /mynacos/ 递归拷贝nacos 到/mynacos/下

docker安装MySQL

1、检查内核版本,必须是3.10及以上

​ uname -r
2、安装docker
​ yum install docker
3、输入y确认安装
4、启动docker
systemctl start docker
docker -v
5、开机启动docker
systemctl enable docker
6、停止docker
systemctl stop docker

如果使用的是阿里云服务器,默认下载了最新版,这里可以配置一下镜像仓库

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第14张图片

直接配置镜像加速器

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第15张图片

配置镜像加速器文件

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker 安装MySQL

docker run --name mysql01 -d mysql 后台运行mysql,这样是不对的,因为没有端口映射

docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql 这才是对的

2.集群配置

如果是一个集群,那就是8848端口。

如果多个nacos集群,那就有多个端口,需要将不同端口都映射。

1.统一数据源

将每个nacos的数据库都统一,改成mysql

找到mysql执行脚本:/mynacos/nacos/conf 文件是nacos-mysql.sql

如果是用的docker 安装的mysql,如果直接输入mysql指令,会报错: -bash: mysql: command not found

正确方式应该是执行docker容器的mysql

​ docker exec -it mysql01 bash #这里的mysql01是你容器中设置的mysql的名字

这时候可以使用mysql指令了,然后输入用户名密码

​ mysql -u root -p #进入数据库

新建一个数据库 nacos_config

​ create database nacos_config;

​ use nacos_config;

将sql执行文件放入docker容器

​ docker ps #查看mysql的容器id

​ docker exec -it mysql01 bash #进入容器

​ ls #列出容器列表

​ docker cp 本地文件路径 容器名:容器路径

​ docker cp /mynacos/nacos/conf/nacos-mysql.sql mysql01:/tmp #将nacos-mysql.sql拷贝到容器的/tmp目录下

这样就将sql文件放到了docker容器中去了

然后就可以执行sql文件了

​ source /tmp/nacos-mysql.sql

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第16张图片

2.修改application.properties

/mynacos/nacos/conf

# 指定数据源为Mysql
spring.datasource.platform=mysql

# 数据库实例数量
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

3.配置nacos的集群配置cluster.conf

/mynacos/nacos/conf

用hostname -i 获取内网ip

#it is ip
#example
内网ip:3333
内网ip:4444
内网ip:4444

4.编辑nacos启动脚本

让nacos根据端口映射开启不同的nacos客户端

去到/mynacos/nacos/bin

编辑startup.sh脚本

1.3.0配置是这样

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第17张图片

修改

while getopts ":m:f:s:c:e:p:" opt
do
    case $opt in
        m)
            MODE=$OPTARG;;
        f)
            FUNCTION_MODE=$OPTARG;;
        s)
            SERVER=$OPTARG;;
        c)
            MEMBER_LIST=$OPTARG;;
        e)
            EMBEDDED_STORAGE=$OPTARG;;
        p)
            PORT=$OPTARG;;		#增加端口映射
        ?)
        echo "Unknown parameter"
        exit 1;;
    esac
done
#根据机器运存选改,我这里减少了内存占用
else
    if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
        JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
    fi
    JAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx500m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"



#文章末尾修改,nuhup增加端口映射
echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
echo "nacos is starting,you can check the ${BASE_DIR}/logs/start.out"

5.编辑nginx.conf

到/usr/local/nginx/conf目录下找到nginx.conf

upstream cluster{
       server 127.0.0.1:3333;
       server 127.0.0.1:4444;
       server 127.0.0.1:5555;

    }

    server {
        listen       1111;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           # root   html;
           # index  index.html index.htm;
             proxy_pass http://cluster;
        }

        #error_page  404              /404.html;

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第18张图片

6.运行Nginx

[root@iZ2ze2jmbeb02wrxw6wdp3Z sbin]# pwd
/usr/local/nginx/sbin
[root@iZ2ze2jmbeb02wrxw6wdp3Z sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf

7.运行多台nacos

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第19张图片

查询多少个nacos运行

ps -ef|grep nacos|grep -v grep|wc -l

如果是3个就成功了

如果没有,就可能有以下问题

异常1:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

原因:nacos不支持mysql8

解决方案:可以修改配置让其适应https://www.cnblogs.com/gyli20170901/p/11245270.html

或者拉取一个mysql5.7

异常2:

#There is insufficient memory for the Java Runtime Environment to continue.

#Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.

#An error report file with more information is saved as:

#/mynacos/nacos/bin/hs_err_pid3061.log

原因:内存不够用了!!!!!我这里用的是学生云服务,导致根本上不了三个!因为启动一个默认1-2G内存

解决方法:减少内存,改成启动使用500m

​ JAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx500m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

在这里插入图片描述

[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)_第20张图片

访问端口1111,成功!!!!

七、总结

1.学习总结

Nacos能够实现注册中心+配置中心的组合,功能实现等于Eureka+Config+Bus,内容还是挺多的。

在提供注册方面要注意负载均衡,还有分组;nacos集群要和nginx结合。

2.注意事项

1.注册中心读取

编写yml文件的时候要注意server-addr 要注册进注册中心不要加http://,直接输入ip:端口号就可以了,否则出现异常:

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([http://localhost:884]) tried: failed to req API:http://localhost:884/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException: Connection refused: connect

这里会报错,原因好像是因为他只能读到http://localhost:8848的http://localhost:884,所以连接错误

2.远程读取配置出现异常

如果出现错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘scopedTarget.nacosConfigController’: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘config.info’ in value "${config.info}"

说明没有读取到配置,

1.看看是不是yaml配置成yml了。

2.看看配置文件是不是和你配置的对不上。

3.看看远程配置文件是不是这个属性。

4.我这里就是第四种,搞了一两个小时

查看日志发现

The web application [ROOT] appears to have started a thread named [com.alibaba.nacos .naming.client.listener] but has failed to stop it…

sun.misc.Unsafe.park(Native Method)

然后栈溢出。。。死循环。。。

我找了半天没找出我的问题,以为是文件问题,然后气急败坏的重启了Nacos,结果好了。。。

4.docker运行MySQL数据库异常

如果是用的docker 安装的mysql,如果直接输入mysql指令,会报错: -bash: mysql: command not found

正确方式应该是执行docker容器的mysql

​ docker exec -it mysql01 bash #这里的mysql01是你容器中设置的mysql的名字

5.阿里云服务器运行多台nacos异常

如果没有,就可能有以下问题

异常1:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

原因:nacos不支持mysql8

解决方案:可以修改配置让其适应https://www.cnblogs.com/gyli20170901/p/11245270.html

或者拉取一个mysql5.7

异常2:

#There is insufficient memory for the Java Runtime Environment to continue.

#Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.

#An error report file with more information is saved as:

#/mynacos/nacos/bin/hs_err_pid3061.log

原因:内存不够用了!!!!!我这里用的是学生云服务,导致根本上不了三个!因为启动一个默认1-2G内存

解决方法:减少内存,改成启动使用500m

​ JAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx500m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

你可能感兴趣的:(SpringCloud,学习笔记,SpringCloud,Alibaba)