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 将原本注释的部分放开并修改为自己的数据库连接信息。
spring.datasource.platform= mysql db.num= 1 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&#xff0c;增加如下内容
spring : cloud : nacos : discovery : server-addr : 127.0.0.1: 8848 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.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- basecloud : nacos : config : server-addr : 127.0.0.1: 8848 file-extension : yaml group : DEV_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}. p r e f i x . {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 public class ConfigClientController { &#64;Value ( "${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;验证完毕