spring Cloud Alibaba 常用组件

spring Cloud Alibaba 常用组件

1、Nacos 【做注册中心】

Nacos 文档地址

1.1、下载 nacos-server

nacos下载地址:Releases · alibaba/nacos · GitHub

1.2、启动 nacos-server

  • cmd 运行startup.cmd 文件
  • 访问localhost:8848/nacos/
  • 使用默认的 nacos/nacos 登录

1.3、注册进入 nacos 中

1、修改 pom.xml 文件,引入 Nacos Discovery Starter

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、在应用的 /resource /application.properties 中配置 Nacos Server地址

​ 配置应用名(一般是微服务模块名)以及端口

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name= service provider
server.port=8000

3、启动类使用@EnableDiscoveryClient 开启服务注册发现功能

简单来说分为三步:

  1. 导包
  2. 写配置,指定 nacos 地址,指定应用的名字
  3. 开启服务注册发现功能 @EnableDiscoveryClient

2、openFeign远程调用

假设一个场景,现在有两个微服务 coupon优惠券会员member ,现在有一个业务:想要知道某会员有咩有优惠券

就需要member 微服务调用coupon微服务 中的方法获取数据:

1、在coupon 微服务模块中写一个方法用来拿到优惠券数据
在这里插入图片描述

2、在 member 微服务模块中新建一个文件夹,然后新建一个声明式接口 ,将要远程调用的方法丢进去(这里有个小细节哦,方法的映射路径一定要写完整),接口上面加上注解@FeignClient("要调用的微服务名")

在这里插入图片描述

3、主启动类上添加注解 @EnableFeignClients("com.king.gulimall.umember.feign")

4、现在可以在member 微服务中写方法调用啦

在这里插入图片描述

5、启动两个微服务,nacos 中查看是否成功注册

在这里插入图片描述

6、访问路径看结果
在这里插入图片描述

至此,远程调用就测试成功啦(注意这里只是写了两个假数据,真实开发要从数据库中获取数据哦)

小总结:

​ Feign 使用三步:

	1. 导包 openfeign
	2. 开启 @EnableFeignClients 功能
	3. 编写接口,进行远程调用

3、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 中配置

spring.application.name=微服务名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3、nacos 中添加配置

​ 需要给配置中心默认添加一个叫 数据集 (Data Id) gulimall-coupon.properties (默认规
​ 则 应用名.properties)

​ 可以添加任何配置,例如:

coupon.user.name=好好
coupon.user.age=18						

4、在应用中使用@Value@RefreshScope动态获取配置

@RefreshScope // 刷新对应controller
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @Autowired
    private CouponService couponService;
    
    @Value("${coupon.user.name}")//获取到配置
    private String name;
    @Value("${coupon.user.age}")
    private Integer age;
    
    @RequestMapping("/test")
    public R test() {
    	return R.ok().put("name",name).put("age",age);
}

5、bootstrap.properties 配置

spring.application.name=gulimall-coupon # 服务的名称
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 服务注册地址
spring.cloud.nacos.config.namespace=ae34901c-9215-4409-ae61-c6b8d6c8f9b0 # 命名空间地址

#若是以微服务名做配置文件隔离,则使用如下配置 
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml # 配置集指定data_id
spring.cloud.nacos.config.ext-config[0].group=dev # 配置集指定 group分组
spring.cloud.nacos.config.ext-config[0].refresh=true # 是否动态刷新 在配置中心修改后 微服务自动刷新

相关解释

1、可以给 应用名.properties 添加任何配置

2、动态获取配置

  • @RefreshScope: 动态获取并刷新配置
  • @Value ( " (" ("{配置项的名字}")
  • 如果配置中心和当前应用的配置文件中都配置了相同的配置文件,优先使用配置中心的文件

3、细节

命名空间:配置隔离:

  • 默认:public(保留空间);默认新增的所有配置都在 public 空间

  • 开发 测试 生产 利用命名空间来做环境隔离

    注意: 在bootstrap.properties配置上 需要使用哪个命名空间下的配置

    spring.cloud.nacos.config.namespace=b1e89ce0-784f-4a80-9de0-e9b080eeaca5

    每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

  • 配置集:所有配置的集合

  • 配置集ID:类似文件名

    Data ID:类似文件名

  • 配置分组:

    默认所有的配置都属于 DEFAULT_GROUP

    每个微服务创建自己的命名空间,使用配置分组区分环境,dev、test、prod

  • 同时加载多个配置集

    微服务任何配置信息,任何配置文件多可以放在配置中心中

    只要在 bootstrap.properties 说明加载配置中心中哪些配置文件即可

    @Value,@ConfigurationProperties…

    配置中心有的 优先使用配置中心的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King Gigi.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值