侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

DUBBO

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 110 阅读 / 4,350 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
官方文档(超详细)
https://dubbo.gitbooks.io/dubbo-user-book/quick-start.html


. dubbo 服务负载均衡策略? l Random LoadBalance 随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比 较均匀,有利于动态调整提供者权重。 (权重可以在 dubbo 管控台配置) l RoundRobin LoadBalance 轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调 到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。 l LeastActive LoadBalance 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的 调用前后计数差会越大。 l ConsistentHash LoadBalance 一致性 Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节 点,平摊到其它提供者,不会引起剧烈变动。缺省只对第一个参数 Hash
Dubbo 在安全机制方面是如何解决的 Dubbo 通过 Token 令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。 Dubbo 还提供服务黑白名单,来控 制服务所允许的调用方


不开启ZooKeeper报错如下
java.lang.IllegalStateException: Failed to register dubbo://172.16.31.187:20880/com.fz.service.TbContentCategoryService?anyhost=true&application=fz-manager&dubbo=2.0.2&generic=false&interface=com.fz.service.TbContentCategoryService&methods=removeById,lambdaQuery,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,getBaseMapper,removeByIds,updateBatchById,lambdaUpdate,saveOrUpdate,listMaps,saveBatch,query,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=1504&revision=0.0.1-SNAPSHOT&side=provider&timeout=10000×tamp=1573433772148 to registry localhost:2181, cause: Failed to register dubbo://172.16.31.187:20880/com.fz.service.TbContentCategoryService?anyhost=true&application=fz-manager&dubbo=2.0.2&generic=false&interface=com.fz.service.TbContentCategoryService&methods=removeById,lambdaQuery,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,getBaseMapper,removeByIds,updateBatchById,lambdaUpdate,saveOrUpdate,listMaps,saveBatch,query,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=1504&revision=0.0.1-SNAPSHOT&side=provider&timeout=10000×tamp=1573433772148 to zookeeper zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=fz-manager&dubbo=2.0.2&interface=com.alibaba.dubbo.registry.RegistryService&pid=1504×tamp=1573433772132, cause: KeeperErrorCode = ConnectionLoss for /dubbo

DUBBO是一个开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是SOA服务化治理方案的核心框架。
Dubbo是一款高性能轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现


(1) 连通性:
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小
监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示
服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销
注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
(2) 健壮性:
监控中心宕掉不影响使用,只是丢失部分采样数据
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
注册中心对等集群,任意一台宕掉后,将自动切换到另一台
注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者无状态,任意一台宕掉后,不影响使用
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
(3) 伸缩性:
注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心
服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者


(服务唯一标识:IP+PORT+GROUPNAME+INTERFACESERVICE)

涉及到JAVA NIO SOCKET通讯框架NETTY



1、Can not lock the registry cache file问题 2、传输限制大小8m 3、传输超时默认时间10s 4、传输重试次数


Dubbo 框架设计一共划分了 10 个层:  服务接口层( Service) :该层是与实际业务逻辑相关的,根据服务提 供方和服务消费方的业务设计对应的接口和实现。  配置层( Config) :对外配置接口,以 ServiceConfig 和 ReferenceConfig 为中心。  服务代理层( Proxy):服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton。  服务注册层( Registry) :封装服务地址的注册与发现,以服务 URL 为中心。  集群层( Cluster) :封装多个提供者的路由及负载均衡,并桥接注册 中心,以 Invoker 为中心。  监控层( Monitor) : RPC 调用次数和调用时间监控。  远程调用层( Protocol) :封将 RPC 调用,以 Invocation 和 Result 为中心,扩展接口为 Protocol、 Invoker 和 Exporter。  信息交换层( Exchange) :封装请求响应模式,同步转异步,以 Request 和 Response 为中心。  网络传输层( Transport) :抽象 mina 和 netty 为统一接口,以 Message 为中心。
Dubbo 支持哪些协议,每种协议的应用场景,优缺点?  dubbo: 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务 调用,以及消费者远大于提供者。传输协议 TCP,异步, Hessian 序 列化;  rmi: 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要 实现 Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连 接,传输数据包大小混合,消费者和提供者个数差不多,可传文件, 传输协议 TCP。 多个短连接, TCP 协议传输,同步传输,适用常规的 远程服务调用和 rmi 互操作。在依赖低版本的 Common-Collections 包, java 序列化存在安全漏洞;  webservice: 基于 WebService 的远程调用协议,集成 CXF 实现, 提供和原生 WebService 的互操作。多个短连接,基于 HTTP 传输, 同步传输,适用系统集成和跨语言调用;  http: 基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实现。多个短连接,传输协议 HTTP,传入参数大小混 合,提供者个数多于消费者,需要给应用程序和浏览器 JS 调用;  hessian: 集成 Hessian 服务,基于 HTTP 通讯,采用 Servlet 暴露 服务, Dubbo 内嵌 Jetty 作为服务器时默认实现,提供与 Hession 服 务互操作。多个短连接,同步 HTTP 传输, Hessian 序列化,传入参 数较大,提供者大于消费者,提供者压力较大,可传文件;  memcache: 基于 memcached 实现的 RPC 协议  redis: 基于 redis 实现的 RPC 协议
dubbo 推荐用什么协议? 默认使用 dubbo 协议 Dubbo 有些哪些注册中心?  Multicast 注册中心: Multicast 注册中心不需要任何中心节点,只 要广播地址,就能进行服务注册和发现。基于网络中组播传输实现;  Zookeeper 注册中心: 基于分布式协调系统 Zookeeper 实现,采用 Zookeeper 的 watch 机制实现数据变更;  redis 注册中心: 基于 redis 实现,采用 key/Map 存储,住 key 存储 服务名和类型, Map 中 key 存储服务 URL, value 服务过期时间。基 于 redis 的发布/订阅模式通知数据变更;  Simple 注册中心 Dubbo 默认采用注册中心? 采用 Zookeeper
0

评论区