微服务(3)——分布式组件

1.Spring Cloud Alibaba

  • github:

  • 技术搭配方案:

    • SpringCloud Alibaba - Nacos : 注册中心(服务发现/注册)
    • SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
    • SpringCloud - Ribbon:负载均衡
    • SpringCloud - Feign:声明式HTTP客户端(调用远程服务)
    • SpringCloud Alibab -Sentinel:服务容错(限流、降级、熔断)
    • SpringCloud - Gateway:API网关(webflux编程模式)
    • SpringCloud - Sleuth:调用链监控
    • SpringCloud Alibaba - Seata :原Fescar,即分布式事务解决方案

2.Nacos:

1.安装:nacos-server

2.启动:

​ 进入下载的nacos server的bin目录下,使用cmd命令,输入命令:

startup.cmd -m standalone

3.配置并进入nacos:

  • 在要进行注册的服务的module的application.yml文件中进行配置,端口号为8848:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vDOyuBXX-1647521978076)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220226203036664.png)]

  • 浏览器输入:localhost:8848/nacos

  • 用户名和账号默认为nacos

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yWlOg9cp-1647521978077)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220226203146618.png)]

4.命名

  • 每个服务必须命名之后才会在nacos进行注册,所以我们要进行命名:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7lkR5bsh-1647521978078)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220226203254024.png)]

5.报错处理

  • 无法进行注册启动,此处我们在gulimall-common中加入nacos-client依赖,并且注意要修改spring-cloud-alibaba的版本号为2021.1(因为spring-cloud的版本号为2021.0.1):

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtnKnss2-1647521978079)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220226210402981.png)]

  • spring cloud ,spring boot和spring cloud alibaba nacos的版本对应:版本说明 · alibaba/spring-cloud-alibaba Wiki (github.com)

3.Feign声明式远程调用

1.简介

  • Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入解释,就可以定义好HTTP请求的参数、格式、地址等信息。
  • Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让我们不再需要显式地使用这两个组件。
  • SpringCloudFeign在NetflixFeign的基础上扩展了对SpringMVC注解的支持,在其实现下,我们只需创建一个接口并且用注解的方式来配置它,即可完成对服务提供方的接口绑定。简化了SpringCloudRibbon自行封装服务调用客户端的开发量。

2.使用

1.引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.开启Feign功能
  • 倘若报错,引入依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        <version>3.1.0</version>
    </dependency>
    
3.声明远程接口

4.Nacos配置中心

1.引入依赖

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

2.配置

在/src/main/resources文件夹中创建一个文件:bootstrap.properties
*       配置:1.当前应用的名字 2.配置中心服务器的地址
*   3.需要给配置中心默认添加一个 数据集(Data Id)为当前应用名.properties 的配置。默认规则: 应用名.properties
*   4.给 应用名.properties添加任何配置
*   5.动态获取配置:结合两个注解:
*       1.@RefreshScope  动态获取并刷新配置
*       2.@Value("${配置项的名}")  获取到配置
*       如果配置中心和当前应用的配置文件中都配置了相同的项,那么优先使用配置中心的配置
*   5.如果配置中心的配置不生效,考虑引入依赖:spring-cloud-starter-bootstrap
*       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.0</version>
        </dependency>

3.细节

1.命名空间:配置隔离
默认:public(保留空间):默认新增的所有配置都在public空间
1.开发、测试、生产:利用命名空间来做环境隔离
	注意:在bootstrap.properties 中配置上,需要使用哪个命名空间下的配置
*         spring.cloud.nacos.config.namespace=命名空间的唯一ID
2.每一个微服务之间相互隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
2.配置集:所有的配置的集合
3.配置集ID(Data ID):类似配置文件名
4.配置分组
  • 默认所有的配置集都属于:DEFAULT_GROUP;

    更换分组:

    spring.cloud.nacos.config.group=组名称
    

4.使用

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A92gn2qZ-1647521978079)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220227111047554.png)]

5.同时加载多个配置集

  • 将原本application.yml中的配置放入nacos中,创建对应的yml文件进行配置:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7mKBLHI-1647521978079)(file:///C:\Users\23642\AppData\Roaming\Tencent\Users\2364292400\TIM\WinTemp\RichOle\EY[_A80XRJA{KC4%4%ORPG3.png)]

  • 在项目的bootstrap.properties文件中加载nacos中的yml配置文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5spBGwnh-1647521978080)(file:///C:\Users\23642\Documents\Tencent Files\2364292400\Image\C2C\CZ%AWA$GM3X52VV@L0}8QMX.png)]

    全部加载:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEFFn5pF-1647521978080)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220227112124235.png)]

注意:修改之后需要重启Nacos,否则可能不会生效。

6.总结

  • 微服务无需任何配置信息,任何配置文件都可以放在配置中心中
  • 只需要在bootstrap.properties中说明加载配置哪些配置文件即可。
  • @Value, @ConfigurationProperties…
  • 以前SpringBoot任何方式从配置文件中获取值,都能够使用
  • 配置中心有的优先使用配置中心中的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值