一、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 网关
——来源于石杉码农学院
相关推荐
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Cloud、Spring Security & Spring Security OAuth2,博客Spring系列源码 一、Spring Boot教程 开启Spring Boot Spring Boot基础配置 Spring Boot中使用...
**项目描述**:项目基于 SpringCloud Gateway + Nacos + Sentinel + OpenFeign 作为分布式系统架构,基于 Netty 实现高性能网络通信。主要功能有:一对一聊天以及群组聊天、好友管理、群组管理等。 项目独立完成,...
- chapter1:[基本项目构建(可作为工程脚手架),引入...由于Spring Cloud偏宏观架构,Spring Boot偏微观细节,内容上越来越多,为了两部分内容不互相干扰,所以迁移Spring Cloud内容到:[SpringCloud-Learning项目]...
使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程 工程配置 chapter2-1-1:配置文件详解:自定义属性、随机数、多环境配置等 chapter2-1-2:2.0 新特性(一):配置绑定全解析 chapter2-2-1:2.0 ...
matlab计算器log的代码 记录自己在学习、工作、生活等方面的一些方法与认识,包括但不限于笔试面试知识点、优质博客、资料、技术文章...Dubbo TODO 消息队列 TODO 架构设计与分布式 TODO 面经 Python 工作 值得一读 :
当学习完一个知识点以后,自己做笔记,同时事后要总结,如果自己能把一个知识清晰表达出来的时候,自己也是有很大的收获和成长的; 赠人玫瑰手留余香。 目录 学习知识相关 Java 计算机基础(重要) 需要完善 需要...
Springcloud脚手架 附件,网关,检索,认证,监控 春天的api 弹簧座 注解使用 dubbo-2.7.7 测试 mybatis-3.4.6 原始码 sql日志分析,乐观锁,日志脱敏,关键字过滤,生成代码 净值-4.1.49 春天5.3.1 ...
Spring Cloud Dubbo 架构设计 场景设计 缓存 网络 网络学习资源 性能调优 性能调优学习资源 Tomcat 面试题 互联网大厂面试题 技术博客:IT宅 关注公众号及时获取最新内容: 关于arthinking GitHub
cloud,motan,dubbo 数据库:mysql,oracle,sqlserver,mongodb 消息中间件:kafka,rockerMq 缓存:redis 搜索查询中间件: ES,solr 数据流图 UML建模 需求评审 编码 瀑布模式 敏捷模式 测试 验收 发布 常用开发工具 ...
也为了更好帮助想要使用或者进行改动的同学,所以把所有 markdown 文稿也在这里开源。最后,欢迎 star 该项目,也欢迎使用、修改、与提出意见,希望多多支持!后记:4.2 日收到阿里 offer,暂时停止更新!目录基础1...
1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...