Dubbo&SpringCloud学习记要
一、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 网关
——来源于石杉码农学院
上一篇: JMH记要