文章目录
Dubbo简介
Dubbo介绍
- Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成
- 一款分布式服务框架、高性能和透明化的远程过程调用方案、SOA服务治理方案
- dubbo中文官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
Dubbo接口
Dubbo与Http区别
- 协议层区别
- HTTP /HTTPS :使用的是 应用层协议,定义了用于在网络中进行通信和传输数据的接口
- DUBBO:使用的是 TCP/IP是传输层协议,管理着网络中的端到端的数据传输;因此要比 HTTP协议快
- socket 层区别
- dubbo默认使用socket长连接,即首次访问建立连接以后,后续网络请求使用相同的网络通道
- http1.1协议默认使用短连接,每次请求均需要进行三次握手,而http2.0协议开始将默认socket连接改为了长连接
Dubbo支持的协议
- Dubbo本身支持多种远程调用方式,例如Dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议)、hessian(二进制序列化 + http协议)、WebServices (文本序列化 + http协议)等。
Dubbo基础架构
基础架构
- Provider:暴露服务的提供者。(开发人员写的代码)
- Consumer:调用远程服务的消费者。(*代码、telnet命令、jmeter插件)
- Registry:服务注册与发现的注册中心。(平台、zookeeper)
- Monitor:统计服务的调用次数和调用时间的监控中心
- Container:服务运行容器(dubbo内置容器、jetty)
Dubbo Registry
- Dubbo目前支持4种注册中心:multicast、zookeeper、redis、simple。
- ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Dubbo Provider
- 服务注册:Provider会把自身的一系列参数拼接成url,然后存放到zookeeper的provider节点上。
- Provider暴露服务的时候会通过export方法在本地启动一个Netty Server,监听暴露的端口,等待连接建立
Dubbo Consumer
- 服务发现:从Zookeeper获取Provider的所有节点,解析得到Provider列表,从而得到IP和地址
- Consumer则会启动一个Netty客户端和Provider建立单一长连接来收发数据,Netty连接建立后会返回一个Channel,这就是数据传输的管道