SpringCloud学习第一季-4
目录
16.SpringCloud Alibaba Nacos服务注册和配置中心
SpringCloud Alibaba简介
1. 为什么出现 SpringCloud Alibaba
2. SpringCloud Alibaba带来了什么
2.1 能干什么
2.2 去哪里下载
2.3 怎么玩
3. 学习资料的获取
17.SpringCloud Alibaba Nacos服务注册和配置中心
一、 Nacos简介
1 是什么
2 能干什么
3 下载地址
4 各注册中心比较
二、 安装并运行Nacos
三、 Nacos作为服务注册中心演示
1 基于Nacos的服务提供者
1.1 建moudle
1.2 pom
1.3 yml
1.4 主启动类
1.5 业务类
1.6 测试
1.7 相同配置再新建一个module 9002
2 基于Nacos的服务消费者
2.1 新建module cloudalibaba-consumer-nacos-order83
2.2 pom
2.3 yml
2.4 主启动类
2.5 业务类
2.6 测试
3. 服务注册中心对比
3.1 Nacos与CAP
3.2 CP与AP的切换
四、 Nacos作为服务配置中心演示
1. Nacos作为配置中心——基础配置
1.1 建module cloudalibaba-config-nacos-client3377
1.2 pom
1.3 yml
1.4 主启动类
1.5 业务类
1.6 在Nacos中添加配置信息
1.7 测试
2. Nacos作为配置中心——分类配置
2.1 分布式开发中的多环境多项目管理问题
2.2 Nacos的图形化管理界面
2.3 Namespace+Group+Data ID三者关系?为什么这么设计?
3. 三种方案加载配置
3.1 DataID方案
3.2 Group方案
1新建一个配置文件,添加到RPOD_GROUP分组
2新建一个配置文件,添加到TEST_GROUP分组
3在config下增加一条group的配置即可。可配置为PROD_GROUP或TEST_GROUP
4测试:
3.3 namesapce方案
1.新建Namesapce
2.回到服务管理-服务列表查看
3.在这两个新建的namespace中分别新建配置文件
4.修改3377的yml文件
5.测试
3.4 总结
4. Nacos集群和持久化配置(重点)
4.1 官网说明
4.2 Nacos嵌入式数据库derby切换到mysql-windows单机版derby到mysql切换步骤
1.首先在nacos安装目录的conf目录下找到一个名为nacos-mysql.sql的sql脚本
2.在conf目录下找到application.properties
3.重新启动nacos,可以看到是个全新的空记录界面,以前是记录进derby
4.在naocs新建配置时,会自动保存到mysql数据库中
(踩坑)1.1.4版本nacos使用外部数据库Mysql8 (这种方式我也亲自试了OK)
5.修改nacos源码(可行)
4.3 Linux版Nacos+MySQL生产环境配置
4.3.1 Nacos 下载Linux版
4.3.2 集群配置步骤(重点)
4.4 微服务cloudalibaba-provider-payment9002启动注册进nacos集群
18.SpringCloud Alibaba Sentinel实现熔断与限流
16.SpringCloud Alibaba Nacos服务注册和配置中心
SpringCloud Alibaba简介
1. 为什么出现 SpringCloud Alibaba
Spring Cloud Netflix项目进入维护模式
Spring Cloud Greenwich.RC1 available now
进入维护模式意味着Spring Cloud Netflix 将不再开发新的组件
我们都知道Spring Cloud 版本迭代算是比较快的,因而出现了很多重大ISSUE都还来不及Fix就又推另一个Release了。进入维护模式意思就是目前一直以后一段时间Spring Cloud Netflix提供的服务和功能就这么多了,不在开发新的组件和功能了。以后将以维护和Merge分支Full Request为主
新组件功能将以其他替代平代替的方式实现
2. SpringCloud Alibaba带来了什么
官网
2.1 能干什么
服务限流降级:默认支持 Servlet、Feign、RestTemplate、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
2.2 去哪里下载
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
之前在父工程的pom文件中已经引入了alibaba的依赖
2.3 怎么玩
3. 学习资料的获取
官网:Spring Cloud Alibaba
英文:
https://github.com/alibaba/spring-cloud-alibaba
Spring Cloud Alibaba Reference Documentation
中文:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
17.SpringCloud Alibaba Nacos服务注册和配置中心
对应着我们前面学的:Eureka/Consul/Zookeeper(服务注册) Config+Bus(配置中心)
一、 Nacos简介
Nacos——Naming Configuration Service
1 是什么
●一个更易于构建云原生应用的动态服务发现、配置管理和服务的管理平台。
●Nacos:Dynamic Naming and Configuration Service
●Nacos就是注册中心 + 配置中心的组合, Nacos = Eureka + Config + Bus
2 能干什么
替代Eureka做服务注册中心;替代Config做服务配置中心
3 下载地址
https://github.com/alibaba/Nacos
官网文档:Redirecting to: https://nacos.io/
Spring Cloud Alibaba Reference Documentation
4 各注册中心比较
二、 安装并运行Nacos
本地需要准备java8+maven环境。
官网下载:https://github.com/alibaba/nacos/releases
老师安装的1.1.4,我这里使用的最新版2.0.3
解压安装包,运行bin目录下的startup.cmd
默认的是集群模式,我们需要单机启动cmd中输入:
startup.cmd -m standalone
(nacos单机模式启动命令) 即可通过单机模式启动
命令运行成功后直接访问http://localhost:8848/nacos 默认账号密码都是nacos
启动成功。
三、 Nacos作为服务注册中心演示
官网手册
1 基于Nacos的服务提供者
1.1 建moudle
cloudalibaba-provider-payment9001
1.2 pom
父工程中需要引入alibaba的依赖,之前已经引入过了
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope>
</dependency>
本模块pom
<dependencies><!--SpringCloud ailibaba nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringBoot整合Web组件 --><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><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
1.3 yml
按照官网上的说明配置。
server: port: 9001 spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址 management: endpoints: web: exposure: include: '*'
1.4 主启动类
package com.springcloud.alibaba; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 { public static void main(String[] args) { SpringApplication.run(PaymentMain9001.class,args); } }
1.5 业务类
package com.springcloud.alibaba.controller; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController; @RestController
public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id) { return "nacos registry, serverPort: "+ serverPort+"\t id"+id; }
}
1.6 测试
这里不像eureka还要写注册中心微服务,直接安装打开nacos即可。
启动9001,查看nacos控制台,注册成功
访问http://localhost:9001/payment/nacos/1
nacos服务注册中心+服务提供者9001都OK了
1.7 相同配置再新建一个module 9002
步骤与9001一致,就是端口号改成9002
这里有一个简单的方法,虚拟映射一个和9001配置相同的9011微服务模块,端口号是9011
控制台服务名称
现在有两个支付模块,9001和9002。