Spring Cloud 简单总结

一:什么是微服务(Microservice)

    微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩。

微服务架构需要的功能或使用场景

 1:我们把整个系统根据业务拆分成几个子系统。

 2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。

 3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

 4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。

 5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

 6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

 7:还需要一个监控功能,监控每个服务调用花费的时间等。

 

二:Spring Cloud 基本知识介绍

升级到 Spring boot 2.0.0,引入 Swagger 生成 api 文档。

service-feign(服务的消费:服务与服务之间的调用) 服务调用端代码抽象和封装——Feign

@FeignClient 对内部服务之前提供调用

Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

比如:访问feign服务的hi接口,出现访问hello和hello2的信息循环出现,因为hi接口内部调用的hello服务。

Ribbon,客户端负载均衡,重试机制。

Hystrix,客户端容错保护,服务熔断、请求缓存、请求合并、依赖隔离。

Feign,声明式服务调用,本质上就是Ribbon+Hystrix

 

Spring boot Admin(监控)

spring boot admin为spring boot应用提供了整合的视图,应用的详情视图提供了应用本身及运行时环境(OS和JVM)运维比较关心的数据,应用的运行时信息,log输出,metrics统计,environment和logging level实时调整,thread线程运行时状态,trace,audit和Hystrix

 

zuul(路由网关)对外提供调用入口

Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认实现了负载均衡的功能。

Zuul:类似于网关,反向代理。为外部请求提供统一入口。  

由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,比如:Netflix EurekaConsulZookeeper

 

  • 最大的区别是Eureka保证AP, ConsulCP
  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容忍性(Partition tolerance)

Consul强一致性(C)带来的是:  

  1. 服务注册相比Eureka会稍慢一些。因为Consul的raft协议要求必须过半数的节点都写入成功才认为注册成功
  2. Leader挂掉时,重新选举期间整个consul不可用。保证了强一致性但牺牲了可用性。

Eureka保证高可用(A)和最终一致性:

  1. 服务注册相对要快,因为不需要等注册信息replicate到其他节点,也不保证注册信息是否replicate成功
  2. 当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。如此保证了可用性但牺牲了一致性。

 

在业界,一般有两种微服务的实践方法:基于dubbo的微服务架构、基于Spring Cloud的微服务架构。从概念上来讲,DubboSpring Cloud并不能放在一起对比,

因为Dubbo仅仅是一个RPC框架,实现Java程序的远程调用,实施服务化的中间件则需要自己开发;而Spring Cloud则是实施微服务的一系列套件,

包括:服务注册与发现、断路器、服务状态监控、配置管理、智能路由、一次性令牌、全局锁、分布式会话管理、集群状态管理等。

 

服务注册

Restful基于Http协议,良好的跨平台 dubbo是基于RPCRPC都是基于TCP进行研发的协议)

熔断的原理

猜你喜欢

转载自blog.csdn.net/mawenshu316143866/article/details/81333796