文章目录

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

微服务(3)——分布式组件相关推荐

  1. SpringCloud微服务架构分布式组件如何共享session对象

    参考文章: https://www.cnblogs.com/fengli9998/p/7881331.html https://blog.csdn.net/dsen726/article/detail ...

  2. 微服务和分布式的区别什么?有什么特点?

    微服务是什么? 微服务架构是团队面对互联网产品爆发式增长的最优选择,要解决的是快速迭代.高可靠和高可用等问题,把复杂度很高的产品拆分成一些较小的模块,并遵循康威定律,每一个模块用5-9个小团队来维护, ...

  3. 微服务架构实战第十节 微服务的模拟组件测试和契约服务测试

    32 测试方案:如何正确理解针对微服务的测试解决方案? 作为整个课程最后一部分内容,我们将讨论微服务架构中的测试解决方案.对于微服务而言,测试是一个难点,也是经常被忽略的一套技术体系.当系统中存在多个 ...

  4. 微服务和分布式和SpringCloud三者的关系

    微服务架构和分布式 分布式 分布式系统:由一组为了完成共同任务而协调工作和计算机节点组成,通过网络通信 ​ 特点:大数据存储.高并发.快速响应.分而治之的思想 分布式的好处 高性能:大量请求分摊到不同 ...

  5. 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现...

    目录 什么是微服务 微服务与分布式的区别 HOW - 怎么具体实践微服务 So What - 思考 服务发现 微服务之客户端发现,服务端发现 参考资料和推荐阅读 什么是微服务 https://zhua ...

  6. 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现

    目录 什么是微服务 微服务与分布式的区别 HOW - 怎么具体实践微服务 So What - 思考 服务发现 微服务之客户端发现,服务端发现 参考资料和推荐阅读 什么是微服务 https://zhua ...

  7. 微服务和分布式的联系与区别什么?

    微服务和分布式的联系与区别什么?分布式只是一种手段把不同的机器分散在不同的地方,然后这些机器间相互协助完成业务,而微服务是一种特殊的分布式.分布式将一个大的系统划分为多个业务模块,业务模块分别部署到不 ...

  8. 一、【SpringCloud】微服务与分布式架构

    狂神-SpringCloud笔记目录 文章目录 一.微服务与分布式架构 1.1分布式架构 1.2微服务架构 1.3分布式架构的四个核心问题 与解决方案 1.4 Spring Cloud 五大组件 1. ...

  9. 微服务与分布式的理解

    一.微服务是什么? 二.什么是分布式 总结 前言 今天在工作中和一个刚毕业同事在讨论软件设计问题,把微服务误用为分布式了,另一哥们儿直接吐槽:大哥那是微服务...然后就是各种说教. 哎!这不又让我这种 ...

最新文章

  1. python3 import execjs ModuleNotFoundError: No module named ‘execjs‘
  2. python中一共有多少个关键字-Python 为什么会有命名关键字参数?
  3. simulated annealing
  4. ABP vNext微服务架构详细教程——基础服务层
  5. integer 负数字符串比较_JAVA源码之Integer-1
  6. 解决ubuntu 图标消失问题(ubuntu 16)
  7. php导出excel表格例子,PHP导出excel表格示例
  8. 日本第四次产业革命瞄准物联网
  9. java使用poi.xssf 写入内容到excel表格中 和 读取 表格里面的数据
  10. tap code —— 两个一位数字编码一个字母
  11. 【字符串】旋转字符串
  12. 【Spring】Spring常用配置-Bean的初始化和销毁(生命周期)
  13. 使用微博提供的API接口发送微博
  14. 步进电机转速 与 pwm 关系
  15. Http的会话跟踪和跨站攻击(xss)
  16. Python银行风控模型的建立(解决Grapviz的中文显示问题)
  17. DELL G7 重装win10系统
  18. myd文件 php项目,MYSQL表引擎与文件.frm,.myd,.myi
  19. linux电脑关机命令是什么问题,linux下正常关机之命令详解 -电脑资料
  20. Yuma格式历书的总结

热门文章

  1. CreateDirectory 和 PathFileExists 为什么调用dllhost.exe进程
  2. java uniqueresult_Hibernate uniqueResult方法的使用
  3. resnet 中bottleneck
  4. http://lfs.linuxsir.org/main/ LFS中文用户组
  5. 通信基础之什么是信号
  6. 诺奖得主涉嫌学术不端!30余篇论文被指涉嫌P图造假、复制粘贴,合作者包括中国学者-1
  7. 山东大学2019年操作系统试题(回忆)
  8. PEG衍生物多巴胺-聚乙二醇-羧基,Dopamine-PEG-COOH,Dopamine-PEG-acid
  9. 数字图像处理-编程实现染色体计数 C语言实现
  10. rk3288固件烧写