微服务学习

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

相关推荐
藥瓿锻30 分钟前
2024 CKA题库+详尽解析| 15、备份还原Etcd
linux·运维·数据库·docker·容器·kubernetes·cka
zyjyyds1133 小时前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr3 小时前
Docker基础(一)
运维·docker·容器·eureka
搬运Gong3 小时前
Dockerfile使用与最佳实践
docker·容器·虚悬镜像
小兔子酱#3 小时前
【Docker 01】Docker 简介
运维·docker·容器
叶落闲庭12 小时前
【k8s】k8s集群搭建
云原生·容器·kubernetes
藥瓿亭12 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks
xyhshen12 小时前
k8s下离线搭建elasticsearch
elasticsearch·容器·kubernetes
椰汁菠萝13 小时前
k8s集群安装坑点汇总
云原生·容器·kubernetes
背太阳的牧羊人13 小时前
sudo docker exec -it backend bash 以交互方式(interactive)进入正在运行的 Docker 容器的命令行环境
docker·容器·bash