微服务项目是通过众多的小服务,提供restful接口,再通过网关给用户调用,主要目的是服务之间的解耦合
微服务的三个特点
单一指责/面向服务/自治
常见的远程调用方式:RPC / http
RPC:自定义数据格式,远程过程调用。基于原生的TCP通信,速度快,效率高
HTTP:规定了数据传输格式,基于TCP 。缺点:臃肿
springcloud涉及的组件:
Eureka:注册中心
服务可以通过注解@EnableDiscoveryClient注册到注册中心
注册中心通过心跳机制进行监控
消费者定期拉取服务列表,并对服务进行远程调用
Zuul:服务网关 //因为zuul的更新速度问题,现在已经多用spring Gateway
核心是 路由/断言/过滤器
Ribbon:负载均衡
在我们实际开发过程中可能会有很多的user-server集群
ribbon可以告诉你调用哪一个
eureka里面已经集成了ribbon,我们无需再添加ribbon的依赖
如果添加了会报错
添加注解 @LoadBalanced进行负载均衡
Feign:服务调用
调用过程有点类似controller
一种优雅的通过注解的方式使消费者调用服务
Hystrix:熔断器
在进行服务调用的时候往往是错综复杂的,会出现线程死锁雪崩等问题
Hystric进行服务降级和线程隔离防止雪崩问题
产生服务降级的情况:1.线程池已满 2.请求超时