| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> RPC框架设计概要-性能 -> 正文阅读 |
|
[网络协议]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协议,相对来说整个协议包是比较大的,但是已经是一种规范了,很多东西可以直接拿来用,更加通用 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:25:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |