拓展性的聊一聊RPC(Remote Procedure Call)

拓展性的聊一聊RPC(Remote Procedure Call)
RPC使用于大型公司内,由于公司的业务增多避免不了将不同的业务分配到不同的主机上进行解耦,它请求其他主机上的服务就像请求自己本机上的服务一样简单。



-HTTP是属于面向接口,通常所谓的RESTful风格的服务接口,很多企业都是这样,一边开发一边写文档。比如,
POST http://www.httpexample.com/restful/buyer/info/share

然后注明所有的参数和返回值类型,可能是json对象或者xml类型文件。
那么RPC和HTTP对比来说,RPC适用于大型企业,公司的子系统比较多,借口非常多的情况下,其优越性就体现出来了,首先是长链接,不用每次都像HTTP三次握手,减小网络开销,其次就是RPC框架一般都有注册中心,有丰富的监控管理。例如Facebook的Thrift,Google的gPRC和阿里的Dubbo。

  • -RPC可以利用NIO进行实现,提出NIO就相应名词就有BIO和AIO,
  1. -BIO(Block IO)阻塞IO,它是面向流的,之前进行的socket时,Client发送一个读、写请求后,线程进入阻塞阶段,当完全读完或者写完后才算执行结束,这样及其浪费资源。这样就在Java 1.7的时候提出了NIO。
  2. -NIO (No-block IO) 非阻塞IO,它是面向缓冲区的(ByteBuffer),NIO其实现原理是当用户发送一个读请求后,它不仅可以读取到目前可用的数据,如果当没有数据可读的时候,线程会做其他的事情,而不是在那傻傻的等(阻塞住);当发送一个写请求是,它将数据写到某个通道上,不用等待写完成,这个线程可以去做其他的事情。这样可以单独的启动一个线程,去管理和选举多个输入输出的通道(Channel)。从逻辑上来讲,这个是同步的。
  3. -AIO (Asynchronous IO) 异步非阻塞IO,实现原理和NIO差不多,但是其创建了多个回调函数,当处理结果结束后,它会自动的去通知其他函数进行处理数据,这样也不用去傻傻的等待结束。这个有点类似于前段的Ajax异步通信。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值