SpringCloud总结

SpringCloud

        轻量级的微服务框架,可以基于springboot的自动配置(减少了自定义的大量代码的编写),实现了多个微服务框架的组件功能。

Eureka

服务治理

Ribbon

客户端负载均衡调用

Zuul

网关,微服务唯一对外提供的接口

Feign

和ribbon同一种客户端,封装了ribbon

Hystrix

熔断器

Config

微服务中配置文件的管理者

 

微服务框架

微服务:

        从一个功能比较集中的单体项目中纵向拆分出来独立运行的功能,每个功能的系统叫微服务。

微:纵向拆分。

服务:功能被调用。

微服务框架:

        一个框架技术能够管理大量的拆分的独立系统,监控,熔断等功能,这种框架技术叫微服务框架。

 

1.Eureka服务治理组件

        springcloud中的核心组件,可以实现对整个微服务集群所有节点进行服务的发现,服务的抓取和服务监听功能。

服务治理中的三个角色:

服务注册中心:

所有服务的集中管理角色。

服务的提供者:

        服务提供者会将自己的信息打包(ip:port,服务名称等),注册在注册中心被注册中心管理和维护(注册)。

服务的调用者:

        可以通过对注册中心的访问,获取服务提供者的信息,从而进行负载均衡的调用(抓取发现)。

注册中心的作用:

       

管理注册者的服务请求:

        内部接收注册者的请求,注册者携带本机/节点的详细信息参数(ip:port,服务名称)发送给注册中心,/eureka接收请求,在内存中存储一个双层map对象,保存所有的内容。

 

服务的监听超时:

        多个注册者同时注册一个服务,相当于一个具体的服务被一个集群管理者接收请求,每60秒钟判断是否有服务提供者的续约超时达到90秒,一旦满足条间,将会从内存中间超时的实例中剔除。

 

注册者实现的逻辑:

注册:

        启动后,当前eureka client一旦被赋予注册能力registerWithEureka=true,将会访问注册中心接口8888/eureka,携带详细信息,注册在注册中心,注册中心以服务名称为key值记录一个当前服务的所有节点信息的map对象。

续约:

        eureka client一旦在注册中心提供注册的信息,将会在每30秒内发起一次心跳(heartbeat)请求,告知注册中心,当前实例时存货的。    

服务剔除:

30:客户端,发起心跳。

60:注册中心,每隔60秒检测一次心跳最后时间。

90:注册中心,检测发现超过90秒没有发起心跳检测,将会把该实例剔除。

注册中心的保护机制:

        庞大的集群中,如果按照正常的逻辑,管理一个微服务集群(100个服务,每个20节点,2000个注册者),超时续约的个数如果在15%以内,eureka注册中心,判断是正常超时,将会按照剔除对实例进行内存数据的清除,如果超过15%,认为是不正常超时,将会开启保护机制,一旦开启,所有服务信息(map对象)不会做任何的剔除,形成对微服务的保护。

 

2.ribbon组件

        配合服务治理组件eureka客户端的发现功能,从注册中心抓取最新的服务注册信息,从而可以在代码内部发起向该服务的访问,使用注册信息中实例的详细信息访问不同的节点实现负载均衡--是一个可以调用服务,支持负载均衡访问的springcloud客户端组件。ribbon只能实现管理抓取的拦截逻辑,对restTemplate发送的请求做拦截处理。

 

实现动态添加扩充服务提供者:

        单独访问ribbon工程可以实现springcloud的ribbon组件做服务调用,服务的功能测试,对于被调用的服务service-hi,只要启动9003作扩容的节点,添加到eureka注册中心,注册中心维护的注册信息,将会发生变动。ribbon工程整合了eureka client可以实现服务的抓取,每30秒重新更新抓取一次服务注册信息的map数据。

负载均衡的方式:

RoundRobinRule

轮询,默认实现的负载均衡的逻辑

RandomRule

随机,随机访问后端服务

WeightedResponse

TimeRule

权重访问,权重占比根据后端服务提供者响应的速度,

速度越快占比越高

        ribbon组件会根据定义的bean对象实现负载均衡,只要创建bean对象就可以,没有发现工程创建任何负载均衡对象,就会默认使用轮询。

//修改自定义的随机负载均衡逻辑

@Bean

@LoadBalanced

public Irule initRule(0{

return new RandomRule();

}

ribbon实现负载均衡访问服务的原理:

 

 

 

  • ribbon具备注册和抓取的能力,启动后会将eureka注册中心的所有map数据抓取到本地存储,每隔30秒更新一次抓取内容。
  • restTemplate的创建过程是通过@LoadBalanced注解,ribbon会对当前这个对象的所有请求做拦截处理。
  • restTemplate发送请求http://service-hi/hello?name=wang。
  • ribbon通过拦截解析了服务名称service-hi。
  • 通过抓取的map对象找到service-hi   value(三个节点的详细信息)。
  • 通过负载均衡对象IRule从3个节点选取一个ip:port拼接到域名所在位置最终发送请求。

注意:SpringCloud中只要是服务调用服务的过程都是通过ribbon+restTemplate实现。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • ribbon具备注册和抓取的能力,启动后会将eureka注册中心的所有map数据抓取到本地存储,每隔30秒更新一次抓取内容。
  • restTemplate的创建过程是通过@LoadBalanced注解,ribbon会对当前这个对象的所有请求做拦截处理。
  • restTemplate发送请求http://service-hi/hello?name=wang。
  • ribbon通过拦截解析了服务名称service-hi。
  • 通过抓取的map对象找到service-hi   value(三个节点的详细信息)。
  • 通过负载均衡对象IRule从3个节点选取一个ip:port拼接到域名所在位置最终发送请求。
  • 服务的监听超时:
  • 管理注册者的服务请求:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值