热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringCloudAlibaba实战笔记一

SpringCloudAlibaba简介SpringCloudAlibaba旨在为微服务开发提供一站式解决方案。该项目包括用于开发分布式应用程序和服务的必需组件,以

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.cloudgroupId><artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId><version>${latest.version}version>
dependency>

修改配置文件application.yml&#xff0c;增加如下内容

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

通过 Spring Cloud 原生注解 &#64;EnableDiscoveryClient 开启服务注册发现功能

&#64;SpringBootApplication
&#64;EnableDiscoveryClient
public class NacosBaseApplication {public static void main(String[] args) {SpringApplication.run(NacosBaseApplication.class, args);}
}

Nacos服务发现验证

nacos-base新建服务提供类nacosProviderController

&#64;RestController
public class nacosProviderController {&#64;GetMapping("/provider/{name}")public String sayHelloToUser(&#64;PathVariable String name) {return "Hello " &#43; name &#43; " !";}
}

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


Nacos配置管理


项目集成

引入依赖&#xff0c;引入时需要注意引入版本与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 版本

更多版本对应关系&#xff1a;点击此处查看

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

确认当前启动环境

spring:profiles:active: dev

在bootstrap.yml中新增如下配置

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

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


Nacos控制台集成

点击“&#43;”新增配置
在这里插入图片描述

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

${prefix}-${spring.profiles.active}.${file-extension}

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

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


Nacos动态配置验证

新建测试类ConfigClientController

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

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


推荐阅读
author-avatar
撩人的东莞博文
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有