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

文章目录

    • 1.Spring Cloud Alibaba
    • 2.Nacos:
      • 1.安装:nacos-server
      • 2.启动:
      • 3.配置并进入nacos:
      • 4.命名
      • 5.报错处理
    • 3.Feign声明式远程调用
      • 1.简介
      • 2.使用
        • 1.引入依赖
        • 2.开启Feign功能
        • 3.声明远程接口
    • 4.Nacos配置中心
      • 1.引入依赖
      • 2.配置
      • 3.细节
        • 1.命名空间:配置隔离
        • 2.配置集:所有的配置的集合
        • 3.配置集ID(Data ID):类似配置文件名
        • 4.配置分组
      • 4.使用
      • 5.同时加载多个配置集
      • 6.总结

1.Spring Cloud Alibaba

  • github:

  • 技术搭配方案:

    • SpringCloud Alibaba - Nacos : 注册中心(服务发现/注册)
      • spring-cloud-alibaba/readme-zh.md at 2.2.x · alibaba/spring-cloud-alibaba (github.com)
    • 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.cloudgroupId>
    <artifactId>spring-cloud-starter-openfeignartifactId>
dependency>

2.开启Feign功能

  • 倘若报错,引入依赖:

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-loadbalancerartifactId>
        <version>3.1.0version>
    dependency>
    

3.声明远程接口

4.Nacos配置中心

1.引入依赖

<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
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
*       
            org.springframework.cloud
            spring-cloud-starter-bootstrap
            3.1.0
        

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任何方式从配置文件中获取值,都能够使用
  • 配置中心有的优先使用配置中心中的

你可能感兴趣的:(微服务,微服务,分布式,spring,cloud)