一、什么是SpringCloud
集成,把世界上最好的框架拿过来,集成到自己的项目中:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态
- **Eureka:**服务治理组件,包含服务注册中心,服务注册与发现机制,(服务治理,服务注册/发现)- **Zuul**:网关组件,提供智能路由,访问过滤功能- **Ribbon**:客户负载均衡的服务器调用组件(客户端负载)- **Feign**:服务调用,给予Ribbon和Hystrix的声明式服务调用组件(声明式服务调用)- **Hystrix**:容错管理组件,实现短路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力(熔断,断路器,容错)
二、Eureka-服务治理
1、基础架构
1.1.1、服务注册中心(xxx-eureka)
1.1.2、Eureka服务集群
服务同步:
多个Eureka服务可以相互注册,每个服务会把自己的信息同步给其他Eureka服务,只要客户端访问任意一个Eureka服务就可以看到完整的服务列表信息
集群启动就是改变端口号,改变Eureka注册地址再次启动
# 指定服务端口号server:port: 10086# 指定应用名spring:application:name: eureka-servereureka:client:service-url: Eureka注册地址-----配置其他的Eureka服务地址,相互注册,多个的话,逗号隔开defaultZone: http://127.0.0.1:10087/eureka, http://127.0.0.1:10088/eureka
1.2.1、服务提供者(xxx-service-provider)
提供服务的应用,SpringBoot应用或者是其他任意技术实现,对外提供Rest风格服务
1.2.2、服务注册
服务提供者要向EurekaServer注册服务,并且完成服务续约等工作
服务提供者在启动时,会检测配置文件属性中的:eureka.client.register-with-eureka=true参数 是否正确,默认为true,若为true,服务提供者会想EurekaServer发起一个Rest请求,请求中携带自己的元数据信息,EurekaServer会把这些信息存储到一个双层Map结构中
第一层Map的Key就是服务id:一般是配置文件中的spring.application.name属性值
第二层Map的Key是服务的实例id:一般是host+serviceId+port,就是主机加服务名加端口号:localhost:service-provider:10010
# 指定服务端口号server:port: 10010# 指定应用名spring:application:name: provider-servereureka:client:service-url: Eureka注册地址defaultZone: http://127.0.0.1:10086/eureka# 服务续约instance:lease-expiration-duration-in-seconds: 90 # 服务失效时间,默认90秒lease-renewal-interval-in-seconds: 30 # 服务续约间隔时间,默认30秒
1.3.1、服务消费者(xxx-service-consumer)
从注册 中心获取服务,从而得知各个服务方的信息,知道去哪里调用服务方
当服务启动时,会检测:eureka.client.fetch-registry=true参数的值,如果为true,就会拉去EurekaServer服务列表的只读备份,然后缓存到本地,并且每隔30秒重新获取并更新数据,
# 指定服务端口号server:port: 10000# 指定应用名spring:application:name: consumer-servereureka:client:service-url: Eureka注册地址defaultZone: http://127.0.0.1:10086/eurekaregistry-fetch-interval-seconds: 5 # 修改拉去服务列表的时间间隔为5秒
