什么是RPC Dubbo

一、RPC

  1. 什么是RPC?

    RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。 
    RPC的目标是:使得本程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单,并且屏蔽编程语言的差异性。 
    要实现上述目标首先是设计一种通讯协议,称之为:RPC协议(Protocol)

    • RPC协议不是一个具体的协议,而是一个类型名,代表一类协议,这类协议叫做RPC协议;
    • RPC协议在TCP/UDP之上,广义上可以跨越平台、语言进行应用间通讯(说广义是因为可以开发一个协议且不支持跨语言);
  2. 为什么要用RPC? 
    其实这是应用开发到一定的阶段的强烈需求驱动的。

    1. 如果我们开发简单的单一应用,逻辑简单、用户不多、流量不大,那我们用不着;

    2. 当我们的系统访问量增大、业务增多时,我们会发现一台单机运行此系统已经无法承受。此时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也可以不需要RPC,因为应用之间是互不关联的。

    3. 当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用 交互,以此来完成完整的业务功能。所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以你看,RPC大显身手的时候来了!

    其实#3描述的场景也是服务化 微服务 分布式系统架构 的基础场景。即RPC框架就是实现以上结构的有力方式。

  3. 有哪些RPC? 
    有很多RPC框架:CORBAR、Thrift、Dubbo等等。基本上他们分为两种类别:

    • 一种是跨语言的;
    • 一种是同语言的,如果你的分布式应用架构主体都是Java应用,显然我们不应该使用跨语言的RPC来多一层中转浪费效率。

    就Java来说,我认为其本身API提供的RMI就是一种RPC协议,但是其毕竟太原始,需要自己去添加很多机制才能上生产环境。所以,今天介绍下我最近使用的Dubbo框架。

二、Dubbo使用实例

    1. 什么是Dubbo? 
      Dubbo是阿里巴巴为Java开发的RPC,据网上评价来看,非常不错。在Dubbo开源后很多公司都使用其来构建自己的分布式架构。今天我来做一个使用实例。

      由于Dubbo官方文档已经把一切都说的很详细了,我就不没意思的摘抄了,放上地址:官网

    2. 官网上也有详细使用方法,那我为什么还要写个使用实例呢? 
      是因为,似乎到2012年,Dubbo已经比较稳定的完成了所有开发,所以现在Dubbo其实是在一个松散的维护状态下的。有些文档内容已经失效:地址无法访问,一些错误没有明确说明。 
      所以参照官网会有一些问题,我这里就是解决了某些问题而完成的一个实例,放在这里供大家参考。

posted on 2017-09-08 15:29  杭州糊涂虫  阅读(192)  评论(0)    收藏  举报

导航