1、 SpringCloud Alibaba-Nacos[作为注册中心]
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、 配置管理和服务管理
平台。 他是使用 java 编写。 需要依赖 java 环境
Nacos 文档地址: https://nacos.io/zh-cn/docs/quick-start.html
-
1、 下载 nacos-server:https://github.com/alibaba/nacos/releases
-
2 、 启动 nacos-server
- 双击 bin 中的 startup.cmd 文件
- 访问 http://localhost:8848/nacos/index.html
- 使用默认的 nacos/nacos 进行登录
-
3 、 将微服务注册到 nacos 中
1、 首先, 修改 pom.xml 文件, 引入 Nacos Discovery Starter。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、 在application.properties 配置文件中配置 Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-coupon
3、 使用@EnableDiscoveryClient 开启服务注册发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4、 启动应用, 观察 nacos 服务列表是否已经注册上服务
注意: 每一个应用都应该有名字, 这样才能注册上去。 修改 application.properties 文件
spring.application.name=service-provider
server.port=8000
5、 注册更多的服务上去, 测试使用 feign 远程调用
Nacos 使用三步
1、 导包 nacos-discovery
2、 写配置, 打开nacos服务器,配置文件指定 nacos 地址, 指定应用的名字
3、 开启服务注册发现功能@EnableDiscoveryClient
Feign 使用三步
1、 导包 openfeign
2、 开启@EnableFeignClients 功能
3、 编写接口, 进行远程调用
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
//声明feign请求,请求路径必须是完整的。这个请求是服务gulimall-coupon路径为/coupon/couponhistory/member/list的方法
@RequestMapping("/coupon/couponhistory/member/list")
public R memberCoupons();
}
2、 SpringCloud Alibaba-Nacos[作为配置中心
1、 pom.xml 引入 Nacos Config Starter。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、 在bootstrap.properties 配置文件中配置 Nacos Config 元数据
主要配置应用名和配置中心地址
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3、 在 nacos 可视化界面中添加配置
在 nacos 中创建一个 应用名.properties。
Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置。
4、 在应用中使用@Value 和@RefreshScope
@Value 读取配置
@RefreshScope 打开动态刷新功能。
@RefreshScope//通过这个注解能够实时刷新来自nacos的配置
@RestController
@RequestMapping("coupon/couponhistory")
public class CouponHistoryController {
@Autowired
private CouponHistoryService couponHistoryService;
@Value("${coupon.user.name}")
private String name;
@Value(("${coupon.user.age}"))
private Integer age;
@RequestMapping("/coupon/test")
public R test() {
return R.ok().put("name",name).put("age",age);
}
}
需在application.properties中定义age和name数据
coupon.user.name=张三
coupon.user.age=18
3、nacos配置中心高级部分
/**
* 如何使用Nacos作为配置中心统一管理配置
* 1、引入依赖
* 2、创建一个bootstrap.properties文件,优先于application文件加载并添加如下信息
* spring.application.name=gulimall-coupon
* spring.cloud.nacos.config.server-addr=127.0.0.1:8848
* 3、在配置中心可视化界面中添加一个数据ID(Data Id)gulimall-coupon。命名默认规则:应用名字.properties
* 4、给 应用名.properties 添加任何配置
* 5动态获取nacos配置
* @RefreshScope:动态获取并刷新配置(实时)
* @Value(${配置名字}):获取配置
*
* 使用nacos的细节
* 1)、命名空间:配置隔离作用(默认为public命名空间,新增的配置默认在存在这个public命名空间下)
* 1、开发、测试、生产环境之间的隔离
* 2、每个微服务之间的相互隔离,每个微服务都有自己的命名空间,只加载自己的所有配置
* spring.cloud.nacos.config.namespace=命名空间
* 2)、配置集:一组相关或者不相关的配置项的集合称为配置集
* 3)、配置集ID:Nacos 中的某个配置集的 ID
* 4)、配置分组:给配置集进行分组
*
*/
4、加载多配置文件
当配置文件多大的时候,将配置文件进行分割成不同的部分,比如数据源模块,mybatis模块,nacos模块,其他模块等等。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=31098de9-fa28-41c9-b0bd-c754ce319ed4
spring.cloud.nacos.config.ext-config[0].data-id=gulimall-datasource.yml
spring.cloud.nacos.config.ext-config[0].refresh=false
spring.cloud.nacos.config.ext-config[0].group=dev