码迷,mamicode.com
首页 > 其他好文 > 详细

RPC

时间:2019-05-29 16:41:33      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:tcp协议   服务端   pre   add   for   机器   效率   corba   mit   

RPC是什么

RPC(Remote Procedure Call,远程过程调用)容许程序调用另一个地址空间的过程或者函数。

RPC的实现方式很多,可以基于常见的HTTP协议,也可以在TCP上层封装自己的协议,由于HTTP报头较为冗长,性能较差,基于TCP协议的RPC可以建立长连接,速度和效率明显。
在分布式系统中,最重要的就是各个服务之间的RPC调用。

RPC从通信协议层面可以分为:

  • 基于HTTP文本协议
  • 基于二进制协议

第一代RPC

  • CORBA
  • DCOM
  • Java RMI
    实现复杂,没有统一标准

    第二代RPC

  • PHPRPC
  • HProse
  • Thrift
    实现了跨平台和多语言

    第三代RPC

  • dubbo
  • gRPC
    偏重服务治理功能

服务发现与服务注册

客户端发现模式

客户端从一个服务注册服务表中查询,客户端利用负载均衡算法从多个服务实例中选择出一个,然后发出请求。

服务端发现模式

客户端通过向代理服务器提出请求,代理服务器通过负载均衡算法,查询服务器列表,实现服务转发。
服务发现关键的服务注册表,服务注册表提供管理请求api的功能,常用的:

  • Apache ZooKeeper
  • etcd
  • consul

ZooKeeper

工作模式

单点模式。有单点故障问题。
为分布式。在一台机器运行多个Zookeeper实例,仍然有单点故障问题。
完全分布式。多台机器部署zk集群,适合线上环境使用。

配置

tickTime=2000:客户端与服务端维护心跳的时间间隔
dataDir:zk保存数据的目录
clientPort:zk服务端口号
initLimit:zk服务器集群中Follower服务器连接到Leader服务器最长能忍受的心跳时间间隔数
syncLimit:Leader与Follower之间发送数据,最长不能超过多少个tickTime
server.n=A:B:n是数字,代表是第几台服务器,A/B代表zk服务的ip地址

安装

brew install zookeeper

启动服务端

找到zk的安装目录,执行

./zkServer start-foreground

启动客户端

./zkCli

常用命令:

ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port
[zk: localhost:2181(CONNECTED) 1] create /server "baidu.com" //创建节点
Created /server
[zk: localhost:2181(CONNECTED) 2] get /server //获取节点
baidu.com
cZxid = 0x10
ctime = Wed May 29 13:30:31 CST 2019
mZxid = 0x10
mtime = Wed May 29 13:30:31 CST 2019
pZxid = 0x10
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0

RPC

标签:tcp协议   服务端   pre   add   for   机器   效率   corba   mit   

原文地址:https://blog.51cto.com/13990437/2402125

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!