Dubbo 总结

 
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, 同参数的请求发送同一个服务实例
———————————————