一:Dubbo简介
Dubbo是一个常用的分布式服务框架,它致力于提供高性能、透明化的RPC远程服务方案。底层是rpc协议,学习Dubbo有助于提高企业级应用的开发效率,以及可通过简单的配置就可以实现负载均衡,提高服务的效率,是SOA(分布式架构)的核心框架。
SOA架构与OA架构的区别:
soa分布式架构, 是一种设计.也就是将以前传统的一个项目拆分, 一个模块就创建一个项目, 多个项目之间松耦合.这种结构利于维护方便扩展.
首先什么是rpc协议呢?
rpc远程过程调用协议: 是JDK底层提出的协议, dubbo只是对这个协议的实现的一个框架技术. rpc协议就是跨服务器, 跨tomcat, 从一个项目, 调用另一个项目中的方法.
使用dubbo的主要目的在于跨项目调用方法,也就是从A项目中的controller调用B项目中的service方法
由于spring只能在同一个项目中完成注入, 所以不能跨项目, 我们分布式架构中, controller是一个项目, service又是一个项目, 所以controller调用service需要用dubbo进行跨项目注入.
二:dubbo涉及到的知识
(1)远程调用:RMI、hassion、webService、thrift
Dubbo都会在底层真正调用的时候,使用这些框架来做远程调用。
(2)通信交互:HTTP、mina、netty
其中mina与netty都是NIO的框架。
(3)序列化:hessian2、java、json
Dubbo默认使用hessian2
(4)容器:jetty、spring
Dubbo在容器方面支持像jetty这样的轻量级容器,或者spring这样的IOC容器。
(5)多线程:异步,线程池
Dubbo涉及了异步的调用和线程池的管理。
(6)负载均衡:zookeeper、redis
Dubbo大部分使用zookeeper来实现负载均衡。
dubbo同类型的技术都有哪些?
rpc协议实现框架: dubbo, dubbox, springCloud
优点: 传输效率快,
缺点: controller和service两个项目必须都是Java语言实现
webService技术: 代表框架有cxf
底层使用的协议叫做soap协议, 其实传输的就是xml数据
优点: 可以跨语言跨平台, controller可以是Java语言实现, service可以是.net或者C语言等语言实现
缺点: 传输效率低
三:dubbo的工作原理图
注意事项:
a) service实现类上写@Service注解, 注意这个@service注解不是spring包的是阿里的dubbo包下的
b) controller注入的时候使用@Refrence注解来进行注入, 也是阿里dubbo包下面的.
c) 如果controller和service之间传输pojo实体类, 那么实体类必须实现Java的序列化接口.
使用dubbo就使用到了注册中心,此处使用的是zookeeper
(
注册中心还有什么?
主要使用zookeeper,还有Multicast,Redis,Simple等
dubbo协议还支持什么协议?默认dubbo,还有其他rmi,http,等等…
)
zookeeper三个重要命令:
启动: ./zkServer.sh start
关闭: ./zkServer.sh stop
查看状态: ./zkServer.sh status