Dubbo 总结

Dubbo是一个高性能轻量级的RPC框架,包括业务逻辑层、RPC层和Remoting层。服务提供者在启动时注册到注册中心,消费者订阅服务并缓存信息,实现服务发现和负载均衡。Dubbo支持多种集群容错模式和负载均衡策略。SpringCloud的实现方式类似,通过配置实现服务的暴露和引用。
摘要由CSDN通过智能技术生成

 
Dubbo 高性能轻量级的 RPC 框架
可以理解为三层,业务逻辑层提供接口和实现,RPC 层封装了 RPC 调用过程,负载均衡,集群容错,服务监控等,remoting 封装了 netty
面向接口代理的高性能 RPC 调用
智能容错和负载均衡
服务自动注册和发现
可视化服务治理和运维
---------------------------------------------
Dubbo 工作原理
服务启动的时候,服务提供者会连接注册中心注册服务,服务消费方会连接注册中心订阅服务
注册中心会根据订阅关系把服务提供者的信息返回给服务消费者,服务消费者会本地缓存服务提供者的信息
如果服务列表变更,注册中心会推送给消费者更新缓存
消费者会生成代理对象,代理支持负载均衡,定时向 monitor 发送接口调用次数和时间信息
服务消费者通过代理调用远程接口,服务提供者收到请求后,反序列化数据,通过代理调用具体接口的实现
---------------------------------------------
spring
服务提供方
 <dubbo:application name="user-service"  />
 <dubbo:registry address="N/A" />
 <!-- 用 dubbo 协议在 20880 端口暴露服务 -->
 <dubbo:protocol name="dubbo" port="20880" />
 <!-- 声明需要暴露的服务接口 -->
 <dubbo:service interface="com.gupaoedu.book.dubbo.IUserService" ref="userService" />
 <!-- 和本地 bean 一样实现服务 -->
 <bean id="userService" class="com.gupaoedu.book.dubbo.UserServiceImpl" />

服务消费方
 <dubbo:application name="order-service"  />
 <dubbo:registry address="N/A" />
 <!-- 生成远程服务代理,可以和本地 bean 一样使用 userService -->
 <dubbo:reference id="userService" interface="com.gupaoedu.book.dubbo.IUserService"
           url="dubbo://192.168.13.1:20880/com.gupaoedu.book.dubbo.IUserService"/>
---------------------------------------------
springcloud
服务提供方
1.pom
com.alibaba.cloud/spring-cloud-starter-dubbo

2.application.properties
spring.application.name=spring-cloud-dubbo-sample
dubbo.protocol.port=20880
dubbo.protocol.name=dubbo
spring.cloud.zookeeper.discovery.register=true
spring.cloud.zookeeper.connect-string=192.168.13.106:2181

3.启动类
// 扫描当前注解所在包路径下的 @Service
@DubboComponentScan

4.dubbo 服务
// 发布远程服务
@Service
--------------------------
服务消费方
1.pom
com.alibaba.cloud/spring-cloud-starter-dubbo

2.application.properties
dubbo.cloud.subscribed-services=spring-cloud-dubbo-sample
spring.cloud.zookeeper.discovery.register=false
spring.cloud.zookeeper.connect-string=192.168.13.106:2181

3.服务
@Reference
private IHelloService helloService;
---------------------------------------------
集群容错 6种模式
@Reference(cluster = "failfast")
-------------------------
Failover Cluster
失败自动切换其他节点 retries=2,适合查询
-------------------------
Failfast Cluster
只调用一次,失败就报错,适合增删改
-------------------------
Failsafe Cluster
只调用一次,失败忽略异常
-------------------------
Forking Cluster
并行调用多个服务,一个成功就返回
forks=2
-------------------------
Broadcast Cluster
广播调用所有服务,任一服务报错表示整体调用失败
---------------------------------------------
负载均衡 4种策略
@Reference(loadbalance = "RoundRobin")
-------------------------
Random 随机算法
-------------------------
RoundRobin 轮询
-------------------------
LeastActive 最少活跃,处理慢的节点会收到较少的请求
-------------------------
ConsistentHash 一致性 Hash, 同参数的请求发送同一个服务实例
---------------------------------------------


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我三师弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值