ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spring-cloud-alibaba学习记录及Nacos采坑指南

2022-01-11 16:02:00  阅读:179  来源: 互联网

标签:采坑 spring startup Nacos alibaba nacos cloud


1. Nacos 服务注册

1. Nacos简介

Dynamic Naming And Configuration Service,就是注册中心 + 配置中心的组合 Nacos 等价于Eureka + Config + Bus

可以用来替代Eureka做服务注册中心,替代Config做服务配置中心

官方文档地址

1. 下载地址

https://github.com/alibaba/Nacos
nacos.io/zh-cn/
https://github.com/alibaba/nacos/releases/tag/1.2.0

Windows

下载zip格式解压缩之后,找到bin目录,用cmd命令运行startup.cmd

2.安装遇到的BUG(极其无语)

  1. 首先需要打开conf文件夹 找到里边的两个 sql文件,在本地数据库创建一个nacos数据库,将这两个sql执行一下
  2. 还是在conf文件下下的application.properties中,将关于数据库的注释放开,大约在31 -41 行

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
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?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=xxx
  1. 如果遇到了死活打不开内置tomcat,报错信息如下

    Unable to start web server,Unable to start embedded Tomcat
    

    请更换JDK版本为JDK1.8.0_191,JDK1.8.0_261,,JDK1.8.0_271中的其中一个,反正是JDK_1.8.0_202这个版本不行

    https://blog.csdn.net/m0_49501947/article/details/108152856

  2. 如果能够成功运行但是,数据库没有用户名和密码,还是打开conf/nacos-mysql.sql这个文件最下边两行有

序号解决的问题网址
1Unable to start web server,Unable to start embedded Tomcathttps://blog.csdn.net/m0_49501947/article/details/108152856
2db.num is null,Unable to start embedded Tomcathttps://blog.csdn.net/lingyancangqiong/article/details/107823061
3

2. 引入相关依赖

目前最新的版本是2.1.0,直接在父项目的pom中添加依赖,一劳永逸

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.1.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Moudle需要添加的依赖

<dependencies>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

3. 配置文件

server:
  port: 9001
spring:
  application:
    name: nacos-paymnet-provider
  cloud:
    nacos:
      discovery:
        # 配置nacos地址
        server-addr: localhost:8848
management:
  endpoints:
    web:
      exposure:
        include: '*'

4. 书写启动类

Spring Cloud Edgware开始,@EnableDiscoveryClient@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。

@EnableDiscoveryClient@EnableEurekaClient共同点就是:都是能够让注册中心能够发现,扫描到改服务。

不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。

package com.javacode.alibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author zhaojinhui
 * @date 2020/12/6 11:23
 * @apiNote
 */
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentApp9001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentApp9001.class, args);
    }
}

IDEA复制实例

右键正在运行的项目,Copy Configuration ,name 改一下, VM options 写上 -DServer port = [新端口]

5. Nacos AP和CP 切换

C: 数据一致性,所有节点在同一时间看到的数据是一样的

A: 高可用

P: 分区容错

一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring cloud 和Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务级别编缉或者存储配置信息,那么CP是必须,K8S服务和DNS服务则适用于CP模式。
CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

2. Nacos 做配置中心

在这里插入图片描述

最后总结的配置文件公式如下

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tXb9egmU-1641887505596)(D:\Study\笔记\img\nacos-config2.png)]

1. 引入依赖

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

2. Group分组方案

在nacos配置列表中添加分组

server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        #指定yaml格式的配置
        file-extension: yaml
        group: TEST_GROUP
        namespace: xxx
#${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

3. Linux Nacos 集群

1.运行前的配置·

  1. 修改application.properties放开数据库配置

  2. 修改config。conf集群配置

    使用hostname -i查看linux机器的ip地址,j建议不要使用localhost或者127.0.0.1

    192.168.0.1:8847
    192.168.0.1:8848
    192.168.0.1:8849
    
  3. 修改startup.sh

    找到文件的第59行,或者搜索case $opt?)前添加以下内容

    while getopts ":m:f:s:c:p:po:" opt #需要在最后添加上自己写的
    
    po) 
    	    PORT=$OPTARG;;
    #	  倒数第二行
    nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT}
    
  4. 启动

./startup.sh -po 8847
./startup.sh -po 8848
./startup.sh -po 8849
#查看实例数
ps -ef|grep nacos|grep -v grep|wc -l
  1. 最后,nacos默认分配的内存是1G,建议多给点不然很卡

4. spring cloud alibaba Sentinel

  • 可以用来替换hystrix
    ${JAVA_OPT}
    
    
  1. 启动
./startup.sh -po 8847
./startup.sh -po 8848
./startup.sh -po 8849
#查看实例数
ps -ef|grep nacos|grep -v grep|wc -l
  1. 最后,nacos默认分配的内存是1G,建议多给点不然很卡

4. spring cloud alibaba Sentinel

标签:采坑,spring,startup,Nacos,alibaba,nacos,cloud
来源: https://blog.csdn.net/qq_42059717/article/details/122434659

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有