谈谈Dubbo的那些事

首先声明,本文并不是什么代码实战类型的文章,适合于想对dubbo有更加全面认识的读者阅读,文章不会过于深奥,只是将一系列的知识点你串通起来,帮助读者温故而知新。

RPC服务的介绍

相信有过一些分布式开发经历的读者都有用过一些RPC框架,通过框架包装好之后提供的API接口调用远程服务,体验感觉起来就和调用本地服务一样轻松。这么方便好用的技术框架,在实际的开发过程中是如何包装的呢?
很早的时候,国外的工程师设计了一种能够通过A计算机调用B计算机上边应用程序的技术,这种技术不需要开发人员对于网络通讯了解过多,并且调用其他机器上边程序的时候和调用本地的程序一样方便好用。A机器发起请求去调用B机器程序的时候会被挂起,B机器接收到A机器发起的请求参数之后会做一定的参数转换,最后将对应的程序结果返回给A,这就是最原始的RPC服务调用了。

RPC调用的优势

简单
不需要开发者对于网络通信做过多的设置,例如我们在使用http协议进行远程接口调用的时候,总是会需要编写较多的http协议参数(header,context,Accept-Language,Accept-Encode等等),这些处理对于开发人员来说,实际上都并不是特别友好。但是RPC服务调用框架通常都将这类解析进行了对应的封装,大大降低了开发人员的使用难度。

高效
在网络传输方面,RPC更多是处于应用层和传输层之间。这里我们需要先理清楚一个问题,网络分层。RPC是处于会话层的部分,相比处于应用层的HTTP而言,RPC要比Rest服务调用更加轻便。

常见的远程调用技术

rmi
利用java.rmi包实现,基于Java远程方法协议(Java Remote Method Protocol) 和java的原生序列化。
Hessian
是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 基于HTTP协议,采用二进制编解码。

protobuf-rpc-pro
是一个Java类库,提供了基于 Google 的 Protocol Buffers 协议的远程方法调用的框架。基于 Netty 底层的 NIO 技术。支持 TCP 重用/ keep-alive、SSL加密、RPC 调用取消操作、嵌入式日志等功能。

Thrift
是一种可伸缩的跨语言服务的软件框架。它拥有功能强大的代码生成引擎,无缝地支持C + +,C#,Java,Python和PHP和Ruby。thrift允许你定义一个描述文件,描述数据类型和服务接口。依据该文件,编译器方便地生成RPC客户端和服务器通信代码。

最初由facebook开发用做系统内个语言之间的RPC通信,2007年由facebook贡献到apache基金 ,现在是apache下的opensource之一 。支持多种语言之间的RPC方式的通信:php语言client可以构造一个对象,调用相应的服务方法来调用java语言的服务,跨越语言的C/S RPC调用。底层通讯基于SOCKET。

Avro
出自Hadoop之父Doug Cutting, 在Thrift已经相当流行的情况下推出Avro的目标不仅是提供一套类似Thrift的通讯中间件,更是要建立一个新的,标准性的云计算的数据交换和存储的Protocol。支持HTTP,TCP两种协议。

Dubbo
Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

上边我们说到了RPC的远程调用发展历史,那么下边我们一起来深入探讨一下RPC的服务。
首先我们来看看OSI的网络协议内容。

OSI的七层网络模型
对于OSI的七层网络模型我绘制了下边的这么一张图:


下边是我个人对于这七层协议的理解:
应用层 主要是对于服务接口的格式多定义,例如提供一定的终端接口暴露给外部应用调用。
表示层 处理一些数据传输的格式转换,例如说编码的统一,加密和解密处理。
会话层 管理用户的会话和对话,建立不同机器之间的会话连接。
传输层 向网络层提供可靠有序的数据包信息。
网络层 真正发送数据包信息的层面,提供流和拥塞控制,从而降

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值