springCloud alibaba nacos 组件

springCloud alibaba 地址 :

 https://spring.io/projects/spring-cloud-alibaba

一、nacos

Spring Cloud Nacos

官网:https://nacos.io/zh-cn/index.html

1. 什么是 Nacos?

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理

相当与springcloud netflix中的 eureka-server 注册中心

2. 下载地址:

https://github.com/alibaba/nacos/releases

在这里插入图片描述
我选择的是 nacos-server-1.3.1.zip 版本 安装是在 Windows
在这里插入图片描述

下载解压后进入nacos文件夹,展示目录

在这里插入图片描述

然后在bin目录下 输入cmd 进入管理员的doc命令

startup.cmd  -m standalone

在这里插入图片描述出现这个图案就启动成功了
输入地址 :

 http://127.0.0.1:8848/nacos/index.html
默认账号密码都是nacos

登录成功后显示
在这里插入图片描述
表示服务的注册中心就搭建成功了!!!!!

搭建一个springcloud alibaba 微服务

选择 版本 管理

<dependencyManagement>
        <dependencies>
            <!--spring boot 2.2.2-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.1.0.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

 		</dependencies>
</dependencyManagement>

新建nacos-client 模块,选择maven工程
在nacos-client pom文件下 引入依赖

 <dependencies>
<!--        注册中心 nacos-discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

然后在进行建yml文件 如下图
在这里插入图片描述
bootstrap.yml文件:

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # 注册中心
      config:
        server-addr: localhost:8848 # 配置中心
        file-extension: yaml # 这里指定的文件格式需要和nacos上新建的配置文件后缀相同,否则读不到

新建一个启动类

/**
 * @author fyb
 * @version 1.0
 * @date 2021/3/22 12:58
 */
@SpringBootApplication
@EnableDiscoveryClient  //这个就是将这个服务注册到nacos-server 中
public class NacosConfigClientMain3377 {

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

然后启动NacosConfigClientMain3377

在nacos服务端 查看:

在这里插入图片描述
nacos-config-client就注册进我们的nacos-server服务端

使用nacos实现eureka-config的统一配置问题

导入依赖 :
在这里插入图片描述
我在前面已经导入过了
然后在bootstarp.yml文件中

在这里插入图片描述
在配置文件中新建application.yml文件

spring:
  profiles:
    active: dev # 开发环境
#    active: test # 测试环境

然后写一个controller文件 进行测试

/**
 * @author 用户: fyb
 * @description class: ConfigClientController
 * @date 时间: 2021/2/23 21:23
 */
@RestController
@RefreshScope  //nacos 动态刷新 配置自动更新
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
@RefreshScope 实现动态刷新 

然后在重新运行
以前是在getee或者guthub,gitlab
现在是在nacos-server的服务端

在这里插入图片描述
在这里插入图片描述
这个Data ID官方是有要求的

在这里插入图片描述
所以我这边是


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

如图

在这里插入图片描述
填写数据
在这里插入图片描述
点击发布后,访问接口

http://localhost:3377/config/info

在这里插入图片描述
这个就可以实现自动同步数据

但是呢,只要重启了nacos-server端时,你会发现你写的配置文件的数据就不见了。
这个时候就涉及到持久层的问题
nocos就提供了一种方式 ,使用mysql来进行持久化,
在我们的conf目录下有多个文件

在这里插入图片描述

打开nacos-mysql.sql
里面提供了表结构
在这里插入图片描述

在自己的mysql中新建一个数据库
然后在里面执行mysql就生成了如下图
在这里插入图片描述

然后在conf文件夹下打开
application.properties

在这里插入图片描述
在这个文件里面填写自己mysql中的url 账号,密码
然后保存
再次 重启nacos 在配置管理 里面填写配置文件
写完后在MySQL数据库中config_info
在这里插入图片描述

看 如图 :

在这里插入图片描述
然后再次重启nacos 配置管理 发现实现了 持久化 。

在这里插入图片描述

nacos与eureke的比较

Spring Cloud Nacos

优点:

1)开箱即用,适用于dubbo,spring cloud等

2)AP模型,数据最终一致性

3)注册中心,配置中心二合一(二合一也不一定是优点),提供控制台管理

4)纯国产,各种有中文文档,久经双十一考验

缺点:

1)刚刚开源不久,社区热度不够,依然存在bug

Spring Cloud Eureka:
优点:

1)Spring Cloud 官方推荐

2)AP模型,数据最终一致性

3)开箱即用,具有控制台管理

缺点:

1)客户端注册服务上报所有信息,节点多的情况下,网络,服务端压力过大,且浪费内存

2)客户端更新服务信息通过简单的轮询机制,当服务数量巨大时,服务器压力过大。

3)集群伸缩性不强,服务端集群通过广播式的复制,增加服务器压力

4)Eureka2.0 闭源(Spring Cloud最新版本还是使用的1.X版本的Eureka)

示例地址:

https://gitee.com/fengyabin/springcloud_alibaba.git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值