赞
踩
SpringCloud分布式开发五大组件详解
1、服务发现——Netflix Eureka
2、服务消费者——客户端负载均衡——Netflix Ribbon
3、服务消费者 ——Netflix Fegin
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
简而言之:
4、断路器——Netflix Hystrix
在微服务架构中,存在着那么多的服务单元,若一个单元出现故障,就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定。为了解决这样的问题,产生了断路器等一系列的服务保护机制
在分布式架构中,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延
Hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能
Hystrix使用舱壁模式实现线程池的隔离,它会为每一个依赖服务创建一个独立的线程池,这样就算某个依赖服务出现延迟过高的情况,也只是对该依赖服务的调用产生影响,而不会拖慢其他的依赖服务
5、服务网关——Netflix Zuul
Spring Cloud Zuul通过与Spring Cloud Eureka进行整合,将自身注册为Eureka服务治理下的应用,同时从Eureka中获得了所有其他微服务的实例信息
对于路由规则的维护,Zuul默认会将通过以服务名作为ContextPath的方式来创建路由映射
Zuul提供了一套过滤器机制,可以支持在API网关无附上进行统一调用来对微服务接口做前置过滤,已实现对微服务接口的拦截和校验
小结
1、springcloud 与dubbo的区别
服务调用方式不同,dubbo是采用rpc远程调用,srpingcloud是采用rest api远程调用.
注册中心:dubbo是采用zookeepe,springcloud是采用eureka
服务网关不同:dubbo本身是没有实现的,只是整合了第三方的技术.而springcloud是有一个组建zuul作为路由网关,springcloud还支持断路器,与git完美集成分布式配置文件支持版本控制.
2、微服务之间是如何独立通信的?
feign远程调用
优点:没有中间代理件,简单常见
缺点:可用性低,在请求过程中服务端和客户端都必须是可用的.
消息中间件
优点:解耦,提高可用性,可以支持多种相应模式(如:发布/订阅,请求/异步响应等等)。
缺点:增加系统的复杂度,万一消息中间件挂了,整个服务就挂了。
3、微服务的优缺点?
优点:
缺点:
4、springcloud如何实现服务注册?
服务发布时,指定对应的服务名,将服务注册到注册中心
注册中心加上@EnableEurekaServer,服务用@EnableEurekaClient标记这个服务,然后通过ribbon和feign进行远程调用和发现.
5、eureka和zookeeper的区别
eureka取用cap的ap,而zookeeper选用cp注重一致性(C:一致性.A:可用性.P:分区容错性.)
在服务崩溃时,eureka有自我保护机制,各个节点都是平等关系,在一个节点崩溃时,微服务并不会盲目删除这个节点,而是进入保护状态,此时可以正常注册,也可以提供查询服务,但是不与其他节点同步信息,其他节点可以正常使用
zookeeper分为leader和follower两种角色,采用半数存活的原则,超过一般的节点挂机就会使整个服务崩溃 而且在leader崩溃之后需要重新选举,在此期间服务是不可用的.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。