1.1 PRC和HTTP
**RPC:**远程控制调用,其是基于socket,工作在会话层,可以自定义数据格式,速度快效率高。
**http:**是一个网络传输协议,是基于TCP,工作在应用层,规定了数据传输格式
1.2 spingcloud主要涉及组件
- Eureka:注册中心
- zuul,gateway:服务网关
- ribbon:负载均衡
- feign:服务调用
- hystrix和resilience4j:熔断器
1.3 EureKa注册中心
@EnableEurekaServer:声明当前应用为eurrka服务
@EnableDiscoveryClient:开启客户端功能
默认情况下每隔30秒服务向注册中心发送一次心跳证明自己还活着,超过90秒没有发送心跳,EurekaServer服务就会认为该服务宕机。当服务正常关闭时会发送请求给EurekaServer,告诉注册中心自己要下线了,服务中心接到信息之后将其状态设置为下线状态。
**失效剔除:**当服务由于内存溢出或者网路故障时不能正常进行工作,而服务中心未收到下线通知时则服务中心会创建一个定时任务每隔一段时间默认(60秒)将当前清单中超过(默认90秒)的服务进行剔除
**自我保护:**当关闭服务时会出现警告,这是触发了自我保护机制。
1.4 负载均衡Ribbon
Ribbon是Netflix发布的负载均衡器,可以助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者列表之后就可以基于负载均衡算法,如轮询,随机等实现自定义的负载均衡算法。
@LoadBalanced:开启负载均衡
1.5 熔断器 Hystrix
Hystrix是一款提供保护机制的组件,是一个延迟和容错库,用于隔离远程访问,第三方库,防止出现级联失败
Hystrix解决雪崩的手段包含线程隔离和服务熔断。
**线程隔离:**Hystrix为每个用户分配一个小线程池,如果线程池已满调用则将立即拒绝,默认采取排队。加速失败判定时间。用户请求不在直接访问服务,而是通过线程池的空闲线程进行访问,如果线程池满或请求超时则会进行降级服务。
@EnableCircuitBreaker:开启熔断服务
1.6 Feign
其可以将rest请求进行隐藏,伪装成controller一样,可以不用拼接url,参数等。
@EnableFeignClients:开启feign功能
1.7 Gateway网关
GateWay网关组件的核心就是一系列过滤器,通过这些过滤器可以将客户端发送请求进行转发到路由器,它是加在整个微服务最前端的防火墙和代理器,隐藏微服务终点ip端口信息。从而加强保护。需要注册到注册中心。核心功能是过滤和路由。
Gateway和feign区别:
Gateway作为整个应用流量入口,可以接收所有请求,如pc,移动端等,并且可以将不同的请求转发到不同的微服务进行处理,大部分可以作为鉴权,服务端流量控制。
feign是将当前微服务接口暴露出来,主要用于各个服务之间的调用。