目录
- Dubbo 是什么?
- Dubbo 的使用场景有哪些?
- Dubbo 服务器注册与发现的流程?
- Dubbo 和 Spring Cloud 关系和区别?
- Dubbo集群提供了哪些负载均衡策略?
- Dubbo的集群容错方案有哪些?
Dubbo 是什么?
Dubbo 是一款阿里开源的高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。
Dubbo 的使用场景有哪些?
-
透明化的远程方法调用:就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
-
软负载均衡及容错机制:可在内网替代 F5 等硬件负载均衡器,降低成本,减少单点。&*
-
服务自动注册与发现:不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
Dubbo 服务器注册与发现的流程?
Dubbo 服务器注册与发现系统图
-
服务容器Container负责启动,加载,运行服务提供者。
-
服务提供者Provider在启动时,向注册中心注册自己提供的服务。
-
服务消费者Consumer在启动时,向注册中心订阅自己所需的服务。
-
注册中心Registry返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
-
服务消费者Consumer,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
-
服务消费者Consumer和提供者Provider,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心Monitor。
Dubbo 和 Spring Cloud 关系和区别?
-
Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。
-
Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spring、Spring Boot 的优势,两个框架在目标就不一致,Dubbo 定位服务治理、Spring Cloud 是打造一个分布式的生态。
Dubbo 和 Spring Cloud 区别
-
Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于 TCP 协议传输的,配合以 Hession 序列化完成 RPC 通信。
-
Spring Cloud 是基于 Http 协议 Restful 接口调用远程过程的通信,相对来说 Http 请求会有更大的报文,占的带宽也会更多。但是 Restful 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体分析。
Dubbo集群提供了哪些负载均衡策略?
Dubbo内置了4种负载均衡策略
-
RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。
-
RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。
-
LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。每收到一个请求,活跃数加1,完成请求后则将活跃数减1。活跃调用数越小,表明该服务提供者效率越高,单位时间内可处理更多的请求。
-
ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。
Dubbo的集群容错方案有哪些?
-
Failover Cluster:失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。
-
Failfast Cluster:快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
-
Failsafe Cluster:失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
-
Failback Cluster:失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
-
Forking Cluster:并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks=”2″ 来设置最大并行数。
-
Broadcast Cluster:广播调用所有提供者,逐个调用,任意一台报错则报错 。通常用于通知所有提供者更新缓存或日志等本地资源信息。
默认的容错方案是 Failover Cluster。
标签:基本,Dubbo,负载,调用,服务,Spring,介绍,Cluster From: https://www.cnblogs.com/wa1l-E/p/17072691.html