Spring Cloud Alibaba Nacos

1、Nacos介绍

概述

“Nacos”,前四个字母分别问Naming和Configuration的前两个字母,最后的s为Service,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,说白了就是注册中心+配置中心的组合,等价于SpringCloud之前的Eureka+Config+Bus,所以Nacos可以替代Eureka做服务中心,可以替代Config做配置中心。

安装与运行

下载地址:https://github.com/alibaba/nacos/tags

在安装Nacos前需要本地Java8和Maven的环境已经准备好,下载后双击stratup运行,分为windows和linux版本

在这里插入图片描述

访问 http://localhost:8848/nacos/ 进入Nacos,其默认的账号密码都是nacos,登录成功后即可看到如下界面:

在这里插入图片描述

2、Nacos作为服务注册中心

在pom文件中加入依赖

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

在配置文件中将当前微服务注册到nacos中

spring:
  application:
    name: nacos_config_client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址

先后启动nacos和微服务项目,可以看到已经成功注册进去了

在这里插入图片描述

3、Nacos作为服务配置中心

新建模块alibaba_nacos_config3377

pom包如下:

<!--nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

Nacos同SpringCloud Config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置后,才能保证项目的正常启动,而我们知道SpringBoot配置文件的加载顺序是存在优先级的,bootstrap的优先级要高于application,所以我们创建两个配置文件 bootstrap.yml (从配置中心拉取配置)和 application.yml(写自己的配置),我们配置 bootstrap.yml 以使3377服务从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格式的配置,也就是说从Nacos上读yaml格式的配置文件

然后用 application.yml 定制自己的配置信息,将环境定义为开发环境:

spring:
  profiles:
    active: dev # 表示开发环境

编写其主启动类后,然后编写其业务类,在业务来上添加SpringCloud的原生注解@RefreshScope 以使服务可以支持从Nacos配置中心动态刷新配置信息

package org.jun.Controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author junfeng.lin
 * @date 2021/3/4 23:26
 */
@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}
Nacos中的配置

在Nacos配置中心中添加配置信息,在Nacos配置中心中添加配置文件要遵循一定的匹配规则——Nacos中的 dataId 的组成格式及与SpringBoot配置文件中的匹配规则,更详细的信息可以参考Nacos官方文档,在Nacos SpringCloud中,dataId的完整格式为:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

在nacos中新建如下文件:

在这里插入图片描述

4、Nacos集群和持久化配置

1、概述

官网:https://nacos.io/zh-cn/docs
持久化存储:

默认使用了嵌入式数据库derby实现数据的存储,但是多个nacos节点下的数据存储是存在一致性问题的,也就是即不CAP理论中的C,nacos属于AP类型的。Nacos采用了集中式存储的方式来支持集群化部署,目前只支持Mysql的存储。

部署方式:

单机、集群、多集群(多数据中心场景)

2、将Nacos的默认数据库切换至mysql

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

  • 1.安装数据库,版本要求:5.6.5+
  • 2.初始化mysql数据库,在nacos-server-1.1.4\nacos\conf目录下找到sql脚本并到mysql中执行
  • 3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql

3、Nacos+Nginx+Mysql生产环境配置

在这里插入图片描述

操作系统为Linux,nginx要求至少有两个,nacos要求至少有三个

通过nginx来做请求的转发,使用mysql来替代nacos自带的数据库来作为整个集群的数据库

3.1、Nacos的数据库配置和集群配置

1、新建MySQL数据库并用nacos中的SQL脚本新建数据库

2、配置nacos配置文件application.properties指定使用的数据源和数据库

3、配置nacos的集群配置文件cluster.conf,其中的IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP

3.2、编辑Nacos的启动脚本startup.sh使之能以不同端口启动

修改nacos安装目录下的bin目录中的startup.sh,有两处修改如下:

在这里插入图片描述

在这里插入图片描述

修改后,可以指定端口进行启动,如:

./startup.sh -p 8848
3.3、Nginx负载均衡器的配置

在nginx.conf中配置如下:

# 配置集群的ip和端口
upstream cluster {
	server ip:port
	server ip:port
	server ip:port
}
# 进行路由的转发
location / {
	proxy_pass: http://cluster;
}

在nginx的目录下,指定配置文件方式启动:

./nginx -c /usr/local/conf/nginx.conf

4、将微服务注册进nacos集群

修改微服务的配置文件,如下:

spring:
  cloud:
    nacos:
      discovery: #Nacos服务注册中心地址
        #server-addr: localhost:8848 # 原先的配置
        server-addr: 127.0.0.1:80 #改成nginx的IP+PORT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring CloudSpring Cloud Alibaba都是基于Spring Framework的开源框架,用于构建分布式系统和微服务架构。它们都提供了一系列的组件和工具来简化微服务开发和管理。 Spring Cloud是一个由Pivotal团队维护的项目,它集成了Netflix开源的一些组件,如Eureka作为注册中心、Ribbon作为负载均衡器、Feign作为服务调用工具等。同时,Spring Cloud还提供了其他功能,如Config Server用于动态管理配置、Gateway用于构建API网关等。 而Spring Cloud Alibaba则是阿里巴巴开源的项目,它在Spring Cloud的基础上进行了扩展和定制,增加了一些阿里巴巴自己的组件和工具。比如,它使用Nacos作为注册中心和配置中心,使用Sentinel作为熔断降级工具。 总的来说,Spring CloudSpring Cloud Alibaba都是用于构建微服务架构的框架,它们的区别在于Spring Cloud集成了Netflix组件,而Spring Cloud Alibaba集成了阿里巴巴的一些组件。根据具体的需求和技术栈选择使用哪个框架可以更好地满足开发和管理微服务的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Spring Cloud AlibabaSpring Cloud的区别](https://blog.csdn.net/weixin_43888891/article/details/126653270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值