微服务学习

服务注册与发现: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

MSE

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

相关推荐
Hadoop_Liang1 小时前
使用Kubernetes Gateway API实现域名访问应用
容器·kubernetes·gateway
java_cj4 小时前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
源图客7 小时前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
码云骑士10 小时前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
木雷坞11 小时前
Firecrawl Docker Compose 自托管排查:镜像、Redis、队列和 Playwright
redis·docker·容器·firecrawl
whyfail11 小时前
Colima:把 Docker Desktop 从 Mac 上“瘦身”的那把刀
macos·docker·容器
人工智能培训12 小时前
数字孪生的未来发展方向探析
gpt·深度学习·机器学习·容器·知识图谱
大佐不会说日语~13 小时前
在 Windows 本地用 Docker 部署向量模型(bge-m3)
windows·docker·容器·llm·ollama
xsc-xyc14 小时前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士14 小时前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django