Dubbo(开源分布式服务框架)入门

本文介绍了Dubbo,一个高性能的分布式服务框架,它基于RPC协议,简化了跨项目的远程方法调用。Dubbo支持RMI、hessian等远程调用技术,mina、netty通信交互,hessian2序列化,并且利用zookeeper实现负载均衡。通过@Service和@Reference注解实现服务提供和消费。在使用Dubbo时,需注意服务实现的序列化和Zookeeper的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值