当前位置: 首页 > news >正文

微服务学习

在这里插入图片描述
SpringCloud组成
服务注册与发现:consul 阿里Nacos
服务调用和负载均衡:OpenFeign LoadBalance
分布式事务:阿里Seata
服务熔断和降级:阿里Sentinel Circuit Breaker
服务链路追踪:Micrometer Tracing
服务网关:GateWay
分布式配置管理:consul 阿里Nacos

服务发现与注册
consul 是一套开源的分布式服务发现和配置管理系统,consul默认端口是8005,由GO语言开发,提供了微服务系统中的服务治理,配置中心,控制总线等功能 优点:基于raft协议,比较简洁、支持健康检查,同时支持HTTP和、DNS协议,提供图形化界面

实践:实现2个微服务注册与发现,服务提供者,端口8001: 服务消费者,端口80,注册到consul

服务提供者8001注册进consul
1、maven项目8001服务的pom.xml文件,引入spring-cloud-starter-consul-discovery

2、修改maven项目resources下application.yaml文件
server:
port:8001

spring:
application:
name:cloud-payment-service

cloud:
consul:
host:localhost
port:8500
discovery:
service-name:${spring.application.name}

服务cloud-payment-service以端口8001注册到consul

3、开启服务发现
maven项目main下找到8001服务的主启动类 添加@EnableDiscoveryClient

4、启动8001主启动类

5、检查consul是否注册成功

服务消费者80
1、80服务的pom.xml文件,引入spring-cloud-starter-consul-discovery
2、修改yaml文件
server:
port:80

spring:
application:
name:cloud-consumer-service

cloud:
consul:
host:localhost
port:8500
discovery:
service-name:${spring.application.name}

服务cloud-consumer-service以端口80注册到consul

3、开启服务发现
找到80服务的主启动类 添加@EnableDiscoveryClient

4、修改maven项目下main的ontroller类

原配置:paymentSrv_URL=“http://localhost:8001”

修改为:paymentSrv_URL=paymentSrv_URL=http://cloud-payment-service(服务名)

4、启动80主启动类

5、检查consul是否注册成功

分布式系统全局配置和动态刷新:
业务系统拆分成多个子服务,系统会出现大量的服务,每个服务需要必要的配置信息才能运行,所以集中式、动态配置管理是必不可少的,某些配置文件中的内容大部分都是相同的,只有个别配置项不同,例如数据库配置,每个微服务关于数据库的配置基本相同,当数据库配置修改,要使微服务处处生效
微服务自带一个application.yaml,当上百微服务的时候,管理维护配置文件不太方便

通用全局配置信息,直接注册进Consul服务器,从Consul获取,实现一次修改,全局广播

实践:
1、
修改8001微服务的pom.xml文件,引入spring-cloud-starter-consul-config spring-cloud-starter-bootstap

2、新增bootstap.yaml
application 用户级别的
bootstap.yaml 系统级别,优先级更高
bootstap.yaml 替代application或者两者共存

bootstap.yaml
server:
port:80

spring:
application:
name:cloud-consumer-service

cloud:
consul:
host:localhost
port:8500
discovery:
service-name:${spring.application.name}

 config:profile-separator:'-' 文件分隔符format: YAML

application.yaml

spring:


profiles:
active:dev

配置规则说明
Key Valus配置分布式配置和全局刷新
1、创建config文件夹,以/结尾
2、config文件夹分别创建其他3个文件夹
在这里插入图片描述

动态刷新
Maven项目主启动类添加@RefreshScope
@EnableDiscoveryClient
@RefreshScope

阿里云MSE Nacos
https://help.aliyun.com/zh/mse/use-cases/create-a-service-registry-on-mse-for-spring-cloud-applications?spm=a2c4g.11174283.0.0.412e7b26BY8hAO&shareId=aa1fce1325f3814c0fd355c755cbcc1c

负载均衡
Spring Cloud loadBalance是由SpringCloud官方提供的一个开源简单易用的客户端负载均衡

组件:spring-cloud-starter-loadbalancer

loadbalancer工作逻辑:
1、Consul Server从服务端查询并拉取服务列表它有多个服务(上图3个服务),这3个服务实现是完全一样的,默认轮询调用用谁都可以正常执行,
2、按照指定的负载均衡策略从server收到的服务注册列表中由客户端自己选择一个地址
在这里插入图片描述

实践:80通过轮询负载访问8001/8002/8003
步骤:
1、将服务提供者8001微服务拷贝2个微服务,新拷贝的微服务注册到consul

2、80微服务修改pom.xml文件新增loadbalancer依赖组件,RestTemplateconfig配置文件增加@loadBalance、修改80微服务controller文件并启动

MSE
https://help.aliyun.com/document_detail/404845.html

http://www.lryc.cn/news/311501.html

相关文章:

  • 【.NET Core】深入理解IO - 读取器和编写器
  • 【Java项目介绍和界面搭建】拼图小游戏——添加图片
  • 「MySQL」基本操作类型
  • Android 14 权限
  • Springboot整合SSE实现实时消息推送
  • 在pytorch中利用GPU训练神经网络时代码的执行顺序并提高训练效率
  • vue3学习
  • 毫秒生成的时间戳如何转化成东八区具体时间
  • 02. Nginx入门-Nginx安装
  • leetcode73. 矩阵置零
  • 【中间件】RabbitMQ入门
  • rtt的io设备框架面向对象学习-电阻屏LCD设备
  • 商城免费搭建之java商城 java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景
  • 蓝桥杯刷题--python-16
  • 闰年计算中的计算机Bug
  • python水表识别图像识别深度学习 CNN
  • Java对接快递100实时快递单号查询API接口
  • Redis常见的15个【坑】,避坑指南
  • 04. Nginx入门-Nginx WEB模块
  • Python在信息安全领域中具有重要的作用
  • Linux 定时备份文件到另一台服务器
  • C++输入输出(I\O)
  • 基本设计模式
  • 双通道音频功率放大电路,外接元件少, 通道分离性好,3V 的低压下可正常使用——D2025
  • Linux 内核获取函数size
  • Python+neo4j构建豆瓣电影知识图谱
  • DolphinScheduler——介绍及架构设计
  • 【Python】约瑟夫环问题
  • Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘
  • 基于springboot+vue的医院药品管理系统