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