Dubbo知识点
默认用的就是dubbo协议,单一长链接和NIO异步通讯,适合并发小数据量的服务调用,以及消费者远大于提供者,传输协议tcp,异步,hessian序列化
其他支持的协议有rmi,webservice,http,hessian,memecashe,redis
-
dubbo有哪些注册中心:
zookeeper注册中心:基于分布式协调系统zookeeper实现,采用zookeeper的watch机制实现数据变更
redis 注册中心: 基于 redis 实现,采用 key/Map 存储,住 key 存储服务名和类型,Map 中 key 存储服务 URL,value 服务过期时间。基于 redis 的发布/订阅模式通知数据变更;
-
Multicast 注册中心:不需要任何中心节点,只要广播地
址,就能进行服务注册和发现。基于网络中组播传输实现
-
什么是RPC?
RPC:远程过程调用Remote Procedure Call
RPC架构:主要包含客户端,客户端存根,客户端socket,服务端,服务端存根,服务端socket,简单点来说就是,客户端发送请求先到客户端存根,在客户端存根将参数序列化,设置好对应请求地址等,然后给到客户端socket来发送到服务端socket,服务端socket给到服务端存根,在服务端存根解析客户端的请求,并调用服务端的具体资源,然后沿路线返回,给到客户端
RPC(Remote Procedure Calls)远程过程调用 - 孤独的代码 - 博客园 (cnblogs.com)
-
Dubbo是什么?
- dubbo是一个分布式,高性能,透明化的rpc服务框架,提供服务自动注册,自动发现等高效服务治理方案,还可以和spring框架无缝集成(除了注册需要依赖zookeeper外,其余的远程调用,负载均衡,容错降级,动态配置集群,多版本控制都自己解决了,个人理解更像是一种微服务的综合解决框架)
dubbo在调用服务不成功时,默认会重试两次,总共就是三次调用
dubbo和bubbox的区别:bubbox是基于bubbo做了一些扩展,如加了服务科restful调用,更新了开源组件
spring cloud和dubbo的关系:dubbo更多考虑的是服务治理,而spring cloud是基于微服务出发的,它是一个工具包,dubbo有的能力它都有解决方案,另外还有一些dubbo没有的功能比如网关,spring cloud是一个生态。
spring cloud和dubbo最大的区别:Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于TCP 协议传输的,配合以 Hession 序列化完成 RPC 通信。而 SpringCloud 是基于 Http 协议+Rest 接口调用远程过程的通信,相对来说,Http 请求会有更大的报文,占的带宽也会更多。但是REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖。
zookeeper是什么:高可用的分布式数据管理与系统协调框架,可以保证分布式环境中的数据强一致性
dubbo的安全机制:通过token令牌防止用户绕过注册中心直接调用,然后在注册中心上管理授权,dubbo还提供了服务黑白名单,来控制允许谁来调用服务
在springboot项目中集成dubbo时@Autowired or @Reference的区别:@Autowired是获取本地的bean对象,@Reference是获取远程的bean对象