空白键|我要消灭一半程序员,10大高性能开发宝石( 三 )
不久 , 老板增加需求了 , 不再满足于只能提供静态网页浏览了 , 需要能够实现动态交互 。 这一次老板还算良心 , 给你加了一台硬件服务器 。
于是你用Java/PHP/Python等语言搞了一套web开发框架 , 单独起了一个服务 , 用来提供动态网页支持 , 和原来等静态内容服务器配合工作 。
这个时候你发现 , 静态服务和动态服务之间经常需要通信 。
一开始你用基于HTTP的RESTful接口在服务器之间通信 , 后来发现用JSON格式传输数据效率低下 , 你需要更高效的通信方案 。
这个时候你需要:
RPC&&序列化技术
什么是RPC技术?
RPC全称RemoteProcedureCall , 远程过程调用 。 我们平时编程中 , 随时都在调用函数 , 这些函数基本上都位于本地 , 也就是当前进程某一个位置的代码块 。 但如果要调用的函数不在本地 , 而在网络上的某个服务器上呢?这就是远程过程调用的来源 。
是否支持跨语言使用 , 能支持哪些语言是否只是单纯的序列化功能 , 包不包含RPC框架序列化传输性能扩展支持能力(数据对象增删字段后 , 前后的兼容性)是否支持动态解析(动态解析是指不需要提前编译 , 根据拿到的数据格式定义文件立即就能解析)下面流行的三大序列化框架protobuf、thrift、avro的对比:
ProtoBuf:
厂商:Google
支持语言:C++、Java、Python等
动态性支持:较差 , 一般需要提前编译
是否包含RPC:否
简介:ProtoBuf是谷歌出品的序列化框架 , 成熟稳定 , 性能强劲 , 很多大厂都在使用 。 自身只是一个序列化框架 , 不包含RPC功能 , 不过可以与同是Google出品的GPRC框架一起配套使用 , 作为后端RPC服务开发的黄金搭档 。
厂商:Facebook
支持语言:C++、Java、Python、PHP、C#、Go、JavaScript等
动态性支持:差
是否包含RPC:是
简介:这是一个由Facebook出品的RPC框架 , 本身内含二进制序列化方案 , 但Thrift本身的RPC和数据序列化是解耦的 , 你甚至可以选择XML、JSON等自定义的数据格式 。 在国内同样有一批大厂在使用 , 性能方面和ProtoBuf不分伯仲 。 缺点和ProtoBuf一样 , 对动态解析的支持不太友好 。
推荐阅读
- 空白键|日常更新全面屏壁纸
- IT168|消灭挖孔屏!小米真全面屏技术上手
- 恐龙|有这种可能吗?其实外星人就是人类,6500万年前到地球消灭恐龙!
- 空白键|你在你男/女朋友的手机里发现过什么秘密?
- 芯片|中国芯需要多久才能造出来,中间的空白期怎么办?
- 空白键|我用什么品牌手机,跟爱国有什么关系?,请问
- 蜜蜂|1小时就能消灭6万只蜜蜂,却被蜜蜂用物理学反制,它有多惨?
- 空白键|iMatch移动固态硬盘体验,抛弃U盘从它做起,ORICO
- 空白键|CORESET和Search Space基本原理,点点滴滴学5G—一文掌握NR
- 空白键|redis学习第一篇