RPC框架设计概要-性能
RPC,全称为Remote Procedure Call,即远程过程调用,是一种计算机通信协议。作为微服务中的核心组件,在一个系统中RPC的调用量往往是很高的,所以性能是一个很重要的考虑点。
1.I/O模型
常见的Unix5种I/O模型分别是:阻塞I/O,非阻塞I/O,I/O复用(select,poll,epoll等支持I/O多路复用),信号驱动I/O,异步I/O;从早期的阻塞I/O方式只能创建大量的线程来保证每个用户互不影响,到现在广泛使用的I/O多路复用模型,再到异步I/O;从select模型到现在主流的epoll模型,性能有了质的升级;当然我们没必要自己去实现,可以直接使用网络通讯框架Netty,Mina等;
2.长连接短连接
短连接表示每次通讯完就关闭连接,而长连接通讯完继续保持连接,这样下次再通讯就不需要重新建立连接了,如果通讯频繁,很明显长连接性能更高;但是长连接需要做一些额外的工作,比如保活处理;另外就是如果客户端太多的话,服务器端是无法支撑的。
3.序列化方式
网络传输中的数据都需要经过序列化和反序列化处理,所以这一块的性能也很重要;常见的序列化包括:json和二进制方式,json常见的如fastjson,jackson等,二进制如protobuf,thrift,kryo等;这个可以分别从序列化的性能,大小,以及使用方便性考虑;当然稳定性和安全性也需要考虑,比如fastjson频繁爆出安全漏洞;
4.协议
这里主要讲的是应用层协议,RPC一般都会自定义协议,当然也有直接使用现有协议的比如http协议;自定义协议可以自己掌控,协议可以做的很小很精简,当然解码和编码需要自己去实现;如果使用现有的http协议,相对来说整个协议包是比较大的,但是已经是一种规范了,很多东西可以直接拿来用,更加通用
RPC框架设计概要-性能相关推荐
- 从(新浪)motan看RPC框架设计
kris的文章开始 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决 从零开发一款RPC框架,说难也难说简单也简单.难的是你的设计将如何面对实际中的复杂应用场景:简单的是其思想可以仅仅浓缩 ...
- 轻量级Rpc框架设计--motan源码解析六:client端服务发现
一, Client端初始化工作 client端通过RefererConfigBean类实现InitializingBean接口的afterPropertiesSet方法, 进行下面三项检查配置工作: ...
- 从motan看RPC框架设计
kris的文章开始 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决 从零开发一款RPC框架,说难也难说简单也简单.难的是你的设计将如何面对实际中的复杂应用场景:简单的是其思想可以仅仅浓缩 ...
- 滴滴青桔单车跨端技术方案和业务技术架构,及框架设计和性能提升实践
导读:经过将近两年的发展,小程序已经深入用户的日常生活,小程序应用数量超过了百万量级,覆盖众多细分行业,日活用户达到两个亿.青桔单车是日活相对较高的小程序,这也要求我们对小程序的性能.稳定性及安全有较 ...
- 图文分析:如何利用Google的protobuf,来思考、设计、实现自己的RPC框架
[CSDN 编者按]本文主要分析 Google 的 protobuf 序列化工具的基本原理和使用.利用 protobuf 序列化功能, libevent 网络通信功能,来设计.实现自己的 RPC 远程 ...
- 如何手撸一个较为完整的RPC框架
[文章作者/来源]一个没有追求的技术人/https://sourl.cn/sJ4Brp 缘 起 最近在公司分享了手撸RPC,因此做一个总结. 概 念 篇 RPC 是什么? RPC 称远程过程调用(Re ...
- RPC框架(一)RPC简介
一.概述 二.RPC 2.1.RPC定义 2.2.RPC主要组成部分 三.影响RPC框架性能的因素 四.工业界的 RPC 框架一览 4.1.国内 4.2.国外 五.如何选择RPC框架 一.概述 随着公 ...
- 经典项目|手撸一个高质量RPC框架
hi, 大家好,RPC是后端系统节点之间通信的核心技术,属于后端开发必须要学习的技能. 后端技术趋势指南|如何选择自己的技术方向 如何从0搭建公司的后端技术栈 远程过程调用(Remote Proced ...
- 如何手撸一个较为完整的RPC框架?
点击关注公众号,实用技术文章及时了解 来源:juejin.cn/post/6992867064952127524 缘起 最近在公司分享了手撸RPC,因此做一个总结. 概念篇 RPC 是什么? RPC ...
最新文章
- 免费的新一代私有云平台Nano v0.3.1发布:云主机快照及媒体管理
- php网站通过什么联网,PHP通过Ajax调用连接百度效果实现检测网站是否联网的功能...
- 福利来了!国内TOP3的超级云计算,免费领2000核时计算资源!
- Node.js 启动调试方式
- 【开源项目----Android OPenGLES渲染YUV视频文件】
- css3禅密花园叫什么名字_新生儿起名:2021元旦出生男孩叫什么名字
- python 矩阵库_NumPy 矩阵库(Matrix)
- java复制文件夹_java实现拷贝一个文件夹,里面存在目录和文件,使用文件创建和文件流...
- 安装pypcap = 安装flex:the fast lexical analyser + 安装libpcap-1.7.4
- 工具之wireshark保存rtp数据
- php mysql zend linux,Linux系统安装配置PHP+MySQL+zend+PHPadmin开发环境
- 1012 数字分类 (20 分)—PAT (Basic Level) Practice (中文)
- [0418] 程序设计实训小结(更新1420)
- 电子双缝干涉,可以在穿过缝前进行探测
- Windows phone 7
- Linux学习第八篇之文件搜索命令find、locate、which、whereis、grep
- 分享我的Latex模板(数学建模/论文通用,附下载链接)
- 篮球记分牌c语言程序和报告,基于单片机的篮球比赛电子记分牌最终版(备份存档)...
- cubic算法优化_安卓cpu优化 tcp拥塞算法cubic和reno怎么选择
- IKBC键盘win键失效