RPC的应用:Apachethrift的ubuntu14.04的安装与应用

    项目使用了一种RPC技术,开源Apache thrift,到底RPC是什么,有什么用途,下面进行了最容易理解的总结。

一 RPC的使用场景,原理和使用方法

    1.什么是RPC

       RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像 LPC(本地过程调用).

       越底层,代码越复杂、灵活性越高、效率越高;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说 明了这点。

       在传统的编程概念中,过程是由程序员在本地编译完成,并只能局限在本地运行的一段代码,也即其主程序和过程之间的运行关系是本地调用关系。因此 这种结构在网络日益发展的今天已无法适应实际需求。众所周知,传统过程调用模式无法充分利用网络上其他主机的资源(如CPU、Memory等),也无法提 高代码在实体间的共享程度,使得主机资源大量浪费。

      通 过RPC我们可以充分利用非共享内存的多处理器环境(例如通过局域网连接得多台工作站),这样可以简便地将你的应用分布在多台工作站上,应用程序就像运行 在一个多处理器的计算机上一样。你可以方便的实现过程代码共享,提高系统资源的利用率,也可以将以大量数值处理的操作放在处理能力较强的系统上运行,从而 减轻前端机的负担。

    RPC作为普遍的C/S开发方法,开发效率高效,可靠.但RPC方法的基本原则是--以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之 间的通讯协议,集中精力对付实现过程.这就决定了 RPC生成的通讯包不可能对每种应用都有最恰当的处理办法,与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽.
RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源.另外,在对程序优化时,程序员虽然可以直接修改由rpcgen产生的令人费解的源程序,但对于追求程序设计高效率的RPC而言,获得的简单性则被大大削弱.

    2.RPC的结构原理及其调用机制

    如前所述RPC其实也是种C/S的编程模式,有点类似C/S Socket 编程模式,但要比它更高一层。 当我们在建立RPC服务以后,客户端的调用参数通过底层的RPC传输通道,可以是UDP,也可以是TCP(也即TI-RPC—无关性传输),并根据传输前 所提供的目的地址及RPC上层应用程序号转至相应的RPC应用程序服务端,且此时的客户端处于等待状态,直至收到应答或Time Out超时信号。当服务器端获得请求消息,则会根据注册RPC时告诉RPC系统的例程入口地址,执行相应的操作,并将结果返回至客户端。

当一次RPC调用结束后,相应线程发送相应的信号,客户端程序才会继续运行。

在这个过程中,一个远程过程是有三个要素来唯一确定的:程序号、版本号和过程号。

    程 序号是用来区别一组相关的并且具有唯一过程好的远程过程。一个程序可以有一个或几个不同的版本,而每个版本的程序都包含一系列能被远程调用的过程,通过版 本的引入,使得不同版本下的RPC能同时提供服务。每个版本都包含有许多可供远程调用的过程,每个过程则有其唯一标示的过程号。

   3.基于RPC的应用系统开发

    通过以上对RPC原理的简介后,我们再来继续讨论如何来开发基于RPC的应用系统。

    一般而言在开发RPC时,我们通常分为三个步骤:

    a.定 义说明客户/服务器的通信协议:这里所说的通信协议是指定义服务过程的名称、调用参数的数据类型和返回参数的数据类型,还包括底层传输类型(可以是UDP 或TCP),当然也可以由RPC底层函数自动选择连接类型建立TI-RPC。最简单的协议生成的方法是采用协议编译工具,常用的有Rpcgen,我会在后 面实例中详细描述其使用方法。

    b.开发客户端程序。

    c.开发服务器端程序。

    开发客户端和服务器端的程序时,RPC提供了我们不同层次的开发例程调用接口。不同层次的接口提供了对RPC不同程度控制。一般可分为5个等级的编程接口.

二 Apache thrift的安装与使用方案

    1.安装方法

      下载Apache thrift

    2.安装需要的依赖库

sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

    3.配置安装:解压后,进入到顶层目录下

./configure --with-boost=/usr/local
make 
make install

    就这样,安装成功,没有什么难的,如下图查看版本以及生成的动态库RPC的应用:Apachethrift的ubuntu14.04的安装与应用

    4.使用方法

(待续)

更多相关文章
  • 二、Ubuntu14.04下安装Hadoop2.4.0伪分布模式
    在Ubuntu14.04下安装Hadoop2.4.0 (单机模式)基础上配置 一.配置core-site.xml     /usr/local/hadoop/etc/hadoop/core-site.xml 包含了hadoop启动时的配置信息.     编辑器中打开此文件     sudo gedi ...
  • Ubuntu14.04下安装Hadoop2.5.1单机模式
    本文地址:http://www.cnblogs.com/archimedes/p/hadoop-standalone-mode.html,转载请注明源地址. 欢迎关注我的个人博客:www.wuyudong.com, 更多云计算与大数据的精彩文章 一.在Ubuntu下创建hadoop组和hadoop用 ...
  • Ubuntu14.04下安装GitLab
    0.硬件要求 官方要求:http://doc.gitlab.com/ce/install/requirements.html CPU 1 core works supports up to 100 users but the application can be a bit slower due t ...
  • KinectV2+Ubuntu14.04+Ros安装教程
    前言      个人理解错误的地方还请不吝赐教,转载请标明出处,内容如有改动更新,请看原博:http://www.cnblogs.com/hitcm/      如有任何问题,feel free to contact me [email protected]      最近经常有朋友问到 ...
  • 安装步骤 1.ubuntu14.04.1版本下是不能直接安装有道词典的,首先需要把14.04.版升级为14.04.2版. 在终端窗口中输入以下命令: sudo apt-get updatesudo apt-get upgrade 2.在浏览器中搜索 "有道词典 for linux" ...
  • ubuntu14.04下安装Naigos和pnp4nagios
      Nagios是一个监视系统运行状态和网络信息的监视系统.Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等. 安装环境:ubuntu14.04,全是最新的nagios和nagios插件 useradd nagios .. 这就说明check_nrpe连接nrpe daemo ...
  • GEM5 在 Ubuntu 14.04中安装过程
  • Run: apt-get install dkms linux-headers-$(uname -r) build-essential psmisc2 - Run: git clone https://github.com/rasa/vmware-tools-patches.git3 - Run: ...
一周排行
  • Jquery操作cookie,实现简单的记住用户名的操作
     一.jquery.cookie.js介绍  jquery.cookie.js是一个基于j ...
  • Linux中的系统和网络资源监测工具:Monitorix
    我第一次看到Monitorix这个开源的软件就被它优美的图形化界面吸引了!!!项目背景:为 ...
  • shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这 ...
  • 一.定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 ...
  •  我们来看看这篇在51cto.com网站上的文章. Android中的handler类是它特有的用于管理线程的工具类,方便于线程间通讯.每一个应用程序(apk),都是一个单独的进程,运行于单独的Dalvik虚拟机实例 ...
  • 工作项跟踪.使用Team Foundation Server可以对工作项进行管理,并且当开发人员签入代码时进行自动更新.团队开发无论何时当有代码签入时,增量式的项目创建和自动化的测试都会发生.如果存在错误将会立刻以E ...
  • linuxgrep学习整理
    第一部分:补充 umask  遮罩码    目录权限为777-umask       用户 ...
  •  受了伤却恋上了受伤,失了意却变成了诗意.<有没有那么一首歌>,你会轻轻跟着哼.<我不后悔>,眼泪可以不流,只是会有一丝的寂寞.每次见到你,心情都万分地激动,但是我只表现出安静,总爱沉默.很想 ...
  • ISP就是为用户提供互联网接入和信息服务的公司或机构.在选择ISP时需要注意的问题有: 一是通信质量.包括ISP是否具有对各种通信线路的连接能力,所用的调制解调器(Modem)的速率是否足够高,线路是否优良及对线路的 ...
  • <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta h ...