赞
踩
目录
1. SpringCloud和SpringBoot的区别和关系?
4. Zookeeper保证的CP和Eureka保证的AP是什么?
这句话是在比较Zookeeper和Eureka两个分布式服务架构的一致性和可用性之间的权衡。
Zookeeper和Eureka都是提供分布式服务的框架,他们在一致性和可用性做了不同的权衡:
因此在选择Zookeeper和Eureka作为分布式服务框架,需要根据具体的场景和需求进行权衡利弊,如果注重数据一致性,并且可以忍受一定的服务不可用,则可以选择Zookeeper;如果需要保证服务高可用,并且接受一定的数据不一致,可以选择Eureka。
Eureka是Netflix开源的基于RESTful API服务发现的框架。它旨在帮助开发者构建更加可靠和可扩展的云端应用,同时也是SpringCloud微服务架构体系中非常重要的一环。
Eureka工作原理可以简单概括为:服务提供者向Eureka注册自己的服务实例,服务消费者从Eureka获取可用的实例列表,并通过负载均衡算法选择其中一个实例进行调用。
工作流程如下:
总之Eureka通过心跳检测,服务注册,缓存机制等多种方式,提供了一种可靠的服务发现和负载均衡的解决方案,帮助开发者更好地构建高可用和可扩展的云端应用。
Feign是一种声明式的,模块化的HTTP客户端,可以轻松地使用Netflix OOS(Ribbon,Hystrix等)实现基于HTTP的服务调用。其调用过程如下:
总结:使用Feign惊醒服务调用的过程主要包括接口定义,服务选择,HTTP请求转换,响应处理等步骤。它使服务调用更加简明扼要,规范。
Hystrix是Netflix开源的一款容错框架,主要用于处理复杂分布式系统交互中的延迟和故障,防止因依赖服务的不可用而导致整个系统的崩溃。
在微服务架构中,服务之间的调用是通过HTTP请求完成的。当某个服务因为网络故障或其他原因不能正常响应时,这会导致服务调用方的请求被阻塞,最终可能导致整个系统瘫痪。Hystrix就是为了解决这类问题而诞生的。
Hystrix提供了以下功能:
总之Hystrix是一个非常有用的容错框架,可以有效地提高分布式系统的稳定性和可靠性。而且,Hystrix与SpringCloud等微服务框架紧密集成,使得使用Hystrix在微服务模型中变得更加简单和方便。
异步通信和同步通信各有优缺点,实际开发根据业务需求选择合适的通信方式。同步通信实用性高,但容易导致调用方阻塞和系统资源消耗过多;异步通信开销小,但是对系统的可靠性较高,需要考虑消息丢失等问题。
SpringCloud和dubbo都是优秀的微服务框架,他们提供了分布式系统开发所需要的核心功能。如:服务注册与发现,负载均衡,服务容错,服务熔断,服务降级等,但是还是存在一些差异:
总之,Dubbo主打RPC通信,高性能,多协议支持,灵活拓展等;SpringCloud则以全面的生态系统,灵活的配置方式,集成众多的开源组件,丰富的云原生功能等方面脱颖而出。
Eureka是一个服务注册与发现的工具,通过Eureka可以将服务提供者的信息注册到EurekaServer并且服务消费者可以从EurekaServer获取可用的服务提供者列表。
保证高可用性,可以采取以下措施:
网关相当于网络服务架构的入口,所有的网络请求必须通过网关转发到具体的服务。网关可用统一管理微服务请求,权限控制,负载均衡,路由转发,监控,安全控制黑名单和白名单等。
Zuul是对SpringCloud提供的成熟对的路由方案,会根据不同的请求路径,网关会定位到指定的微服务,并代理请求到不同的微服务接口,对外隐蔽了微服务的真正接口地址。
三个重要概念:动态路由表,路由定位,反向代理
Zuul可用于Eureka,Ribbon,Hystrix等组件配合使用
Zuul使用场景:对外暴露,权限校验,服务聚合,日志审计等
网关是对所有服务的请求进行分析过滤,过滤器是对单个服务而言。
Nginx,Zuul,Gateway
Zuul是Java语言实现的,主要为java服务提供网关服务,尤其是在微服务架构中可用更加灵活的对网关进行操作。Nginx使用C语言实现,性能高于Zuul,但是实现自定义操作需要熟悉lua语言,对程序员要求较高,可使用Nginx做Zuul集群。
负载均衡是指将网络流量分发到多个服务器上,以实现系统资源的合理利用和请求处理能力的提高
负载均衡可以改善跨计算机,计算机集群,网络连接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载均衡是指再优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。
Ribbon是Netflix发布的开源项目,主要功能提供客户端的软件负载均衡算法。
Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。简单说,就是在配置文件中列出所有的及其,Robbin会自动的帮助你基于某种规则(如轮询,随机等)去连接机器。我们也很容易使用Robbin实现自定义的负载均衡算法。
Ribbon使用discoveryClient从注册中心读取目标服务信息,对统一接口请求进行计数。使用%取余算法获取目标服务集群索引,返回获取到的目标服务信息。
一般使用Hystrix框架,实现服务隔离来避免出现服务的雪崩效应,从而达到保护服务的效果。当微服务中,高并发的数据库访问量导致服务线程阻塞,使单个服务宕机,服务的不可用会蔓延到其他的服务,引起整体服务灾难性后果,使用服务降级能有效为不同的服务分配资源,一旦服务不可用规则返回友好提示,不占用其他服务资源,从而避免单个服务崩溃引发整体服务的不可用。
雪崩效应使大型互联网项目中,某个服务发生宕机,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用使相通的,这样就会将服务的不可用逐步扩大到各个服务,从而使整个项目的服务宕机崩溃。
发生雪崩的原因:
Netflix OOS开源组件集成,包括Eureka,Hystrix,Ribbon,Feign,Zuul等核心组件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。