Spring Cloud Alibaba 实战笔记一

Spring Cloud Alibaba简介

Spring Cloud Alibaba旨在为微服务开发提供一站式解决方案。该项目包括用于开发分布式应用程序和服务的必需组件,以便开发人员可以使用Spring Cloud编程模型轻松地开发分布式应用程序。

使用Spring Cloud Alibaba,您只需要添加一些注释和配置,就可以为您的应用程序使用Alibaba的分布式解决方案,并使用Alibaba中间件构建自己的分布式系统。

Spring Cloud Alibaba作用

流控制和服务降级:支持WebServlet,WebFlux,OpenFeign,RestTemplate,Dubbo访问限制和降级流的功能。它可以在运行时通过控制台实时修改限制和降级流的规则,并且还支持监视限制和降级度量标准。

服务注册和发现:可以注册服务,并且客户可以使用Spring托管的bean(自动集成功能区)发现实例。

分布式配置:支持分布式系统中的外部配置,配置更改时自动刷新。

Rpc服务:扩展Spring Cloud客户端RestTemplate和OpenFeign以支持调用Dubbo RPC服务。

事件驱动:支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。

分布式事务:支持高性能且易于使用的分布式事务解决方案。

阿里云对象存储:大规模,安全,低成本,高度可靠的云存储服务。支持随时随地在任何应用程序中存储和访问任何类型的数据。

阿里云SchedulerX:准确,高度可靠,高可用性的计划作业调度服务,响应时间在几秒钟之内。

阿里云SMS:覆盖全球的消息服务,阿里巴巴SMS提供便捷,高效和智能的通信功能,可帮助企业快速联系其客户。

其中阿里云对象存储、阿里云SchedulerX、阿里云SMS为商业组件,需要购买相关云服务才能使用。

Spring Cloud Alibaba Nacos

简介

Nacos是一个易于使用的动态服务发现、配置和服务管理平台。相较于传统的服务发现与注册组件,Nacos有着良好的交互页面和动态特性。其作用等价于服务注册发现(Eureka)+服务配置管理(Config)+服务控制总线(Bus)。

环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境。

系统环境

CentOS Linux release 7.9.2009

jdk安装

CentOS7下JDK安装

Maven安装

Centos7下Maven安装

Nacos安装

下载Nacos

方式一、源码下载

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd {your actual path}/nacos/bin

方式二、发布包下载
点击此处下载最新的发布包

unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz

Nacos持久化修改(依需修改)

默认情况下Nacos会将配置信息存储在内嵌存储器中,但通常我们希望在数据库中存储或管理这些配置信息,那么就需要进行持久化修改,目前Nacos仅支持MYSQL5.6以上数据库。

初始化数据库表

/userpath/nacos/conf下找到文件nacos-mysql.sql,在数据库执行该文件内容,完成库表初始化工作。

修改Nacos配置

/userpath/nacos/conf下找到文件application.properties,定位到 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.0=root
db.password.0=123456

Nacos启动

定位到/userpath/nacos/bion执行命令

sh startup.sh -m standalone #表示以单机模式启动

访问http://ip:8848/nacos出现以下页面,代表启动成功,初始密码为nacos/nacos
在这里插入图片描述

设置Nacos开机启动

创建开机启动文件

cd /lib/systemd/system/
touch nacos.service
vi nacos.service

文件内容如下,其中/usr/local/nacos/bin/需要修改为本机nacos所在目录

[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

生效配置文件并设置开机启动

systemctl daemon-reload        #先进行文件生效配置
systemctl enable nacos.service #设置为开机启动

查看是否已开机启动

systemctl is-enabled nacos.service

Nacos Spring Cloud

使用 Nacos 来实现分布式环境下的配置管理和服务注册发现

  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更
  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现

Nacos服务发现

项目集成

引入依赖,引入时需要注意引入版本与spring boot版本的关系

  • 版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本
  • 版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本
  • 版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本

更多版本对应关系:点击此处查看

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${latest.version}</version>
</dependency>

修改配置文件application.yml,增加如下内容

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #Nacos作为服务注册中心地址
        group: DEV_GROUP #应用分组

通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能

@SpringBootApplication
@EnableDiscoveryClient
public class NacosBaseApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosBaseApplication.class, args);
    }
}
Nacos服务发现验证

nacos-base新建服务提供类nacosProviderController

@RestController
public class nacosProviderController {

    @GetMapping("/provider/{name}")
    public String sayHelloToUser(@PathVariable String name) {
        return "Hello " + name + " !";
    }
}

启动nacos-base,查看nacos服务列表
在这里插入图片描述
浏览器内访问:http://127.0.0.1:9001/provider/jack,表明服务已被成功发现,验证完毕
在这里插入图片描述

Nacos配置管理

项目集成

引入依赖,引入时需要注意引入版本与spring boot版本的关系

  • 版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本
  • 版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本
  • 版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本

更多版本对应关系:点击此处查看

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency>

确认当前启动环境

spring:
  profiles:
    active: dev

在bootstrap.yml中新增如下配置

spring:
  application:
    name: nacos-base
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848  #Nacos作为配置中心地址
        file-extension: yaml  # 指定配置文件的格式为yaml
        group: DEV_GROUP  #指定配置文件分组GROUP

此处有2个注意点:第一、配置config信息的文件必须是bootstrap,bootstrap在启动时读取顺序优先于application,因为我们是进行配置管理,所以需要优先读取nacos的配置信息,故因将nacos配置放于bootstrap中;第二、spring.application.name是必须的,这与nacos的dataid构造相关,这在下文中会展开说明。

Nacos控制台集成

点击“+”新增配置
在这里插入图片描述

进入配置新增页面
在这里插入图片描述
在 Nacos Spring Cloud 中,dataId 的完整格式如下:

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

根据我们上面的配置可知Data Id为:nacos-base-dev.yaml,需要注意的是相同group下,Data Id不能重复
在这里插入图片描述
配置完成后点击“发布”即可,最终效果
在这里插入图片描述

Nacos动态配置验证

新建测试类ConfigClientController

@RestController
@RefreshScope    // 通过Spring Cloud原生注解@RefreshScope实现配置自动更新
public class ConfigClientController
{
    @Value("${config.info}")    // 注入配置中心中的config.info配置信息
    private String configInfo;

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

启动项目,在浏览器中访问地址:http://127.0.0.1:9001/config/info
在这里插入图片描述
修改nacos 配置中的信息
在这里插入图片描述
点击发布并刷新浏览器,发现配置信息变更,验证完毕
在这里插入图片描述

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值