Java面试官:什么是Dubbo?在项目中怎么用?都支持什么协议?

3987397fc4d59fe8b079f98c9212e225.gif

什么是Dubbo?

Dubbo 是阿里开源的远程服务调用(RPC)的分布式框架,提供了 SOA 服务治理方案;它的架构主要有五个角色/核心组件,分为是 Container(容器)、Provider(服务的提供方)、Registry(注册中心)、Consumer(服务的消费方)、Monitor(监控中心)。

容器主要负责启动、加载、运行服务提供者;

同时服务提供者在启动时,向注册中心注册自己提供的服务;

消费者向注册中心订阅自己的服务;

注册中心返回服务提供者列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者;

对于服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另外一台调用;

服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心;

d19732c2da0520cf55e42908012a0a55.png

Dubbo 在项目中是怎么用的?

Dubbo 在项目中主要用来实现不同系统之间的服务调用,由于项目是按照不同的功能分了不同的系统,按照三层架构又分了不同的服务,其中三层架构中的控制层作为服务的消费方,业务层和持久层共同作为服务的发布方,这样的架构实现了系统的服务化,提高了开发效率,实现了业务的解耦。

项目中通过 Dubbo 和 Spring 的整合,采用全 Spring 配置方式,只需要用 Spring 来加载Dubbo 的配置,完成了服务的发布和调用。

我们主要在服务的暴露方通过<dubbo:service>标签来暴露服务,在服务的消费方通过<dubbo:reference>标签来引用服务,注册中心我们选用的是 zookeeper,对服务的URL进行了管理和配置。

Dubbo 都支持什么协议?

Dubbo 支持 Dubbo 协议、RMI 协议、hessian 协议、Http 协议等。

Dubbo 协议:缺省协议、采用了单一长连接和 NIO 异步通讯、使用线程池并发处理请求,能减少握手和加大并发效率、采用的是 Hession 二进制序列化、性能较好,推荐使用。

主要应用于传入传出参数数据包较小(建议小于 100K),消费者比提供者个数多,由于是单一连接,因为尽量不要传输大文件。

RMI 协议:采用 JDK 标准的 RMI 协议(基于 TCP 协议)、堵塞式短连接、JDK 标准序列化方式、同步通讯。

适用于消费者和提供者个数差不多的,可传文件。测试发现偶尔会连接失败,需要重建 Stub。

Hessian 协议:采用 http 通讯,采用 Servlet 暴露服务,多连接短连接的同步传输方式,采用hession 的二进制序列化,适合提供者比消费者多。

14f866c7077d12e9d06d8aa9deb69dac.png

以上就是播妞为大家分享的干货内容

黑马程序员JavaEE高手班 🔥 火热开班中

基础班仅需 28 元,抢占名额

85cabb2de8d9681bf60a45079791ced7.png

戳视频了解课程详情:

黑马程序员顺应市场发展需求,重磅推出「JavaEE高级软件工程师课程」,现在课程已升级至V12.0,更贴合大厂企业技术要求,助力学员高起点就业。

黑马程序员JavaEE课程体系V12.0,分层次教学,让学员在不同学习阶段,掌握触手可及的技术点,学得扎实学得透,拒绝一锅烩,拒绝浅尝辄止。以“四项目制”打通学生适应各种项目开发阶段、适应不同规模企业开发的“任督二脉”。 

项目课授课时长占比总课时的48%,课程容量、技术深度、项目广度均成为行业变革风向标,让学生在沉浸式项目实战中,完成从“技术小白”到“Java大牛”的华丽升级,大大提升学员的就业竞争力。

播妞再给你说个重磅好消息,现在咨询课程老师基础班仅需28元,你一个不经意的决定,可能就是一个逆风翻盘的机会!赶紧行动吧!

 黑马程序员 

致力于培养高级软件工程师

各学科基础班,限时优惠 28 元

部分学科高手班优惠2000

20f3c334a3b4ca51aa1521eab435b553.png

课程老师1对1服务,全程免费

🔥🔥🔥

6f6775338e584cdc057554b7be48c5b0.png

线上课程也可扫码咨询

更多疑问添加播妞微信为你解答

heiniu526 

- 推荐阅读 -

程序员常用数据库,老少皆宜!这5种你一定得收藏!

2021-09-09

14faa003375f352b893a42c2a03017cc.png

干货丨速度教你创建网页文件,实现HTML入门

2021-09-03

35905846544bcf26feffdf40e926b6d3.png

干货丨Java基础之for循环使用练习

2021-09-07

c2436e8bd0fb2c72e283d461a4ea27fb.png

ba466f43907e2fc3ec33f710ee558007.gif

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值