RPC即远程服务调用

出现原因:随着项目越来越大,访问量越来越大,为了突破性能瓶颈,需要将项目拆分成多个部分,这样比起传统的项目都是本地内存调用,分布式的项目之间需要在网络间进行通信

服务之间的远程调用通常有两种方式,即基于TCP的远程调用和基于Http的远程调用
基于TCP的RPC实现

主要是服务提供方定义socket端口和提供的方法名称已经需要的参数结构,服务调用方通过连接服务方的socket端口,进而调用相关方法,并且将需要通信的数据作为参数传递,需要值得注意的是参数在传递的时候需要在服务调用端进行序列化然后在服务提供端进行反序列化,个人理解就行netty之间的通信方式,就是一种基于tcp的远程调用
基于HTTP的RPC实现

对于HTTP的RPC实现,本人觉得与现在的restful风格很类似,主要是在服务调用方通过标识请求,GET,POST然后通过url来定位到服务提供方提供的服务,数据通过xml或者json来传输,省去了TCP的序列化和反序列化
区别

RPC是基于socket通信,在协议层面处于较底层,优点是传输效率高,但是开发难度相对较高,而HTTP处于较高层面,开发难度相对较小,不用维护socket端口和数据序列化相关问题,但是传输效率比起TCP来低了一些

最新文章

  1. PHP会话管理:cookie和session
  2. Java_I/O输入输出_使用输入输出流读取文件,将一段文字加密后存入文件,然后读取,将加密前与后的文件输出
  3. javascript学习总结(三):如何较好的使用js。
  4. 对二进制加密(分散保存-s=sy+a+b)
  5. 关于delphi PAServer 远程调试DLL文件
  6. ios事件传递
  7. 【POJ】3415 Common Substrings
  8. [译]CSS content
  9. Android 开发之自定义Dialog及UI的实现
  10. MyBatis深入理解一
  11. springmvc+maven
  12. Python统计列表中的重复项出现的次数的方法
  13. ARM总线方面知识
  14. 构建Nginx均衡LAMP高性能服务器
  15. easyUI返回类型total,rows
  16. C++之多继承
  17. Android Studio编译卡死
  18. ES6学习:Map结构的目的和基本用法
  19. 实验3 敏捷开发与XP实践实验报告
  20. Angular4.0.0正式发布,附新特性及升级指南

热门文章

  1. WPF 精修篇 属性触发器
  2. mysql关联两张表时的编码问题
  3. cd 到目录自动ls
  4. python--基础知识点梳理(一)数据类型、迭代生成装饰器、函数
  5. 现象:SpringApplication.run后面的语句未执行
  6. Thymeleaf入门与基础语法
  7. JDBC释放数据库连接
  8. node 连接 mysql 数据库三种方法------笔记
  9. SqlServer ----- 拷贝数据表
  10. SynchronusQueue