消息队列详细介绍参考:业界有名的 zeromq 核心代码也是用 C++ 编写,如果想深入研究消息队列,可以从这入手试试,下面给出项目主页和门户网站 。
https://cloud.tencent.com/developer/article/1006035
https://zeromq.org/
https://github.com/zeromq/libzmq
序列化
- 序列化: 将数据结构或对象转换成二进制串的过程
- 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
不同的计算机语言中,数据结构,对象以及二进制串的表示方式并不相同 。
数据结构和对象:对于类似Java这种完全面向对象的语言,工程师所操作的一切都是对象(Object),来自于类的实例化 。在Java语言中最接近数据结构的概念,就是POJO(Plain Old Java Object)或者Javabean--那些只有setter/getter方法的类 。而在C++这种半面向对象的语言中,数据结构和struct对应,对象和class对应 。
二进制串:序列化所生成的二进制串指的是存储在内存中的一块数据 。C++语言具有内存操作符,所以二进制串的概念容易理解,例如,C++语言的字符串可以直接被传输层使用,因为其本质上就是以’’结尾的存储在内存中的二进制串 。在Java语言里面,二进制串的概念容易和String混淆 。实际上String 是Java的一等公民,是一种特殊对象(Object) 。对于跨语言间的通讯,序列化后的数据当然不能是某种语言的特殊数据类型 。二进制串在Java里面所指的是byte[],byte是Java的8中原生数据类型之一(Primitive data types) 。
序列化参考链接:Protobuf
https://tech.meituan.com/2015/02/26/serialization-vs-deserialization.html
Protocol Buffer (简称Protobuf) 是Google 出品的性能优异、跨语言、跨平台的序列化库 。
项目主页:
https://github.com/protocolbuffers/protobuf
教程参考:Protobuf 终极教程
RPCRPC (Remote Procedure Call)远程过程调用是一个计算机通信协议 。我们一般的程序调用是本地程序内部的调用,RPC允许你像调用本地函数一样去调用另一个程序的函数,这中间会涉及网络通信和进程间通信,但你无需知道实现细节,RPC框架为你屏蔽了底层实现 。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过「发送请求-接受回应」进行信息交互的系统 。
推荐几个RPC开源项目,供学习研究,先从简单的玩具项目入手:
rest_rpchttps://github.com/qicosmos/rest_rpc
c++11, high performance, cross platform, easy to use rpc framework.
It's so easy to love RPC.
Modern C++开发的RPC库就是这么简单好用!
rest_rpc是一个高性能、易用、跨平台、header only的c++11 rpc库,它的目标是让tcp通信变得非常简单易用,即使不懂网络通信的人也可以直接使用它 。可以快速上手,使用者只需要关注自己的业务逻辑即可 。
再介绍几个业内成熟的后台开发RPC框架:
谷歌gRPC谷歌开源的高性能远程过程调用系统 。
在 gRPC 里
推荐阅读
- 2020年流行的小吃最火的是什么,今年啥小吃最火-
- 月水金火木土|初吻给了生活,拥抱给了工作,《月水金火木土》第6集:假戏真爱
- 月水金火木土|新剧推荐|《月水金火木土》又土又甜又上头的新颖爱情剧
- 火药是谁发明的 火药的发明者
- 曹云金|曹云金前妻直播秀身材!穿吊带后背全是火罐印,红肿一片湿气重
- 金泰希|Rain被曝出轨高尔夫球手,公司火速发声
- 吴宣仪|曝韩流鼻祖Rain出轨!高尔夫女球手长相酷似其老婆,本尊火速回应!
- 火锅和自助的区别,自助餐的火锅和火锅店的区别-
- 陈翔|10快男直播,陈翔说想做个团综,又说苏醒火了李炜更不出来了
- 秦霄贤|德云社秦霄贤拍戏,休息间歇仍在看剧本,粉丝:难怪老秦能火
