欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dubbo&SpringCloud学习记要

程序员文章站 2022-07-13 10:56:54
...

一、Dubbo(http://dubbo.apache.org/

1.Dubbo工作原理:

1)service层:接口层,provider和consumer接口、实现自己做

2)config层:配置层

3)proxy层:服务代理层,无论provider和consumer都会生成代理、代理之间进行网络通信

4)registry层:服务注册层,负责服务的注册与发现

5)cluster层:集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务

6)monitor层:监控层,对RPC接口的调用次数和调用时间进行监控

7)protocol层:远程调用层,封装RPC调用

8)exchange层:信息交换层,封装请求响应模式,同步转异步

9)transport层:网络传输层,抽象mina和netty为统一接口

10)serialize层:数据序列化层

 

注册中心挂了也能通信、因为本地有缓存

 

2.Dubbo支持哪些通信协议和序列化协议

通信协议:

默认:dubbo协议、单一长连接、NIO异步通信、hessian序列化协议,适用于传输数据量小(每次请求100KB以内)且并发高的场景;

其他:rmi协议、hessian协议、http协议、webservice

序列化协议:hessian(默认)、java二进制、json、soap

 

3.Dubbo支持哪些负载均衡、高可用以及动态代理的策略 

负载均衡策略:

默认:random loadbalance 随机,对provider实例设置不同的权重,按权重分配、权重越大流量越大;

roundrobin loadbalance 轮询

leastactive loadbalance 机器性能越差流量越小

consistenthash loadbalance 一致性hash策略 相同参数的请求一定分发到一个provider,provider挂掉时会基于虚拟节点均匀分配剩余流量

 

集群容错策略:

failover cluster(默认)、failfast cluster、failsave cluster、failback cluster、forking cluster、broadcast cluster

 

动态代理策略:

javassist动态字节码(默认)、其他可通过spi(service provider interface)扩展机制配置

 

4.基于Dubbo如何做服务治理、服务降级、失败重试、超时重试?

服务治理:调用链路自动生成

服务降级:mock机制

失败重试、超时重试:参数设置 

 

5.如何保证幂等性

 每个请求唯一标识、请求处理后的状态标识、请求处理前判断是否已处理过

 

6.如何保证顺序性

要保证顺序的请求分发到同一台机器+内存队列;百分百保证:分布式锁(开销较高)

 

二、Spring Cloud(https://spring.io/projects/spring-cloud

1.核心架构

Eureka 服务注册中心

Feign 服务调用

Ribbon 负载均衡

Zuul/Spring Cloud Gateway 网关

 

 ——来源于石杉码农学院