目录
1 dubbo的简单介绍
Apache Dubbo 是一款易用的、提供高性能通信和服务治理能力的微服务开发框架
提供构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、
"Dubbo3" 已在阿里巴巴内部微服务集群全面落地,成功取代运行多年的 HSF 框架。
1.1,dubbo大版本介绍:
3.x版本融入云原生
目前市面上dubbo2.7版本用的最多
1.2,dubbo远程调用流程及架构的组件原理介绍
dubbo是一款基于接口的服务调用框架
2 dubbo与boot整合快速入门
2.1 注意事项:
2.2 github案例:
按照github上的说明操作即可
3 dubbo高级特性介绍
3.1 启动时检查:
消费者启动时会去订阅注册中心所有注册的接口然后会
根据我们配置的注解去注册中心去获取相应的服务信息
3.2 集群容错:
例如
客户端调用服务端途中出现错误,
dubbo有很多的容错策略:
第一个容错策略,(dubbo默认的集群容错策略)失败自动切换
在实际开发中接口的调用失败,很难定义有很多原因因此第一种容错策略-该方案有幂等性问题
仅用于读操作读本身就是幂等的,写非幂等
第二种容错策略:该配置为缺省配置
1,快速失败只发起一次调用,
失败立即报错。通常用于非幂等性的写操作,比如新增记录。
2,失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
3,失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
有幂等性问题
4,并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读 操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。
5,广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。
3.3 线程模型
线程模型指的是什么事情应该在什么样的线程中来做
dubbo内部有他自己的IO线程,跟线程池
例如:
如果客户端是io操作,dubbo使用IO线程来执行任务
那么就会导致该线程执行很慢,请求越来越多就可能会导致其他线程进行阻塞,很快就会将dubbo,IO线程耗尽,此时客户端在发读数据的请求,就会导致没有多余IO的线程可用
因此分配合理的线程尤为重要dubbo的线程模型就是解决这个问题的
请求到达后通过dispather决策当前任务是派发到线程池中,还是在当前IO线程中来做如果派发到线程池,那么当前IO线程就可以读下一个请求中的数据了
3.4 负载均衡
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。
可以自行扩展负载均衡策略,参见:负载均衡扩展
随机:
按权重设置随机概率。
在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
轮询:
按公约后的权重设置轮询比率。
存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
可以配置每个服务站的权重
最少活跃调用数:
相同活跃数的随机,活跃数指调用前后计数差。
使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大
3.5 小结
dubbo的高级特性还有很多可自行去官方文档查看,文档中比我这里介绍的更加全面
总结
目录
主要在于dubbo的架构体系,上面给大家做了详细的说明,搞清楚架构了以后,至于其他的特性,就比较好理解,参照官网介绍即可