课堂课题:
Thrift,Protobuffer分别是什么,一般用于什么场景?
关联任务:
任务五
直播时间:
2019-06-27 15:00:00
课堂内容:
视频链接:
PPT链接:
提交按钮:
小课堂内容格式
标题:
【修真院xx(职业)小课堂】课题名称
开场语:
大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX
(1)背景介绍:
背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。
(2)知识剖析:
讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。
(3)常见问题:
最少列出1个常见问题。
(4)解决方案:
写清楚常见问题的解决方案。
(5)编码实战:
尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。
(6)拓展思考:
知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。
(7)参考文献:
引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。
(8)更多讨论:
Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答
(9)鸣谢:
感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
标题:Thrift,Protobuffer分别是什么,一般用于什么场景?
开场语:
大家好,我是IT修真院上海分院第13期的学员徐元祥,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java(职业)任务2,深度思考中的知识点——Thrift,Protobuffer分别是什么,一般用于什么场景?
(1)背景介绍:
在没有跨语言通信方案之前是如何进行跨平台服务的,在刚开始进入同一计算机运行多任务的时候,分布式系统开发人员能够在一台或几台通过消息传递连接的计算机内构建和运行整个分布式系统,这就催生了SOA
随着计算能力的提高和计算机价格降低,大量的分布式系统开始出现,但是系统数量的增加,导致服务之间的点对点连接的不可扩展和不可维护,这样就诞生了“服务总线”的概念,在这个之后基于REST的通信更加流行了起来
随后就是分布式大爆炸的时代,在此之间诞生了各种跨语言通信框架,其中就有这次讨论的Thrift和Protobuffer
(2)知识剖析:
RMI和RPC之间的通信框架的区别
消息数据之间的比较,Protobuffer序列化后的大小是json的十分之一,xml格式的二十分之一,二进制序列化的十分之一,意味着相同的数据更快的传输速度,相同的大小更多的数据
2.知识剖析
Protobuffer的优点
灵活、便于接口更新、高效
性能好
代码生成机制
向前向后兼容
易于使用,通过一定的语法定义结构化的消息格式,然后发送给命令行工具,工具将自动生成
语言支持,原生支持C++、java、python
Thrift的优点
支持许多语言的绑定
文件生成目标代码,简单易用
消息定义文件支持注释
数据结构与传输表现的分离,支持多种消息格式
包含完整的客户端/服务端堆栈,可快速实现RPC
支持同步和异步通信
Protobuffer的缺点
功能简单,不能表达复杂的概念
应用不够广泛
缺乏自描述
默认不具备动态特性
只涉及序列化和反序列化技术,不涉及RPC功能
Thrift的缺点
不支持动态特性
支持全套RPC解决方案,学习成本高
Protobuffer的应用场景
对消息大小很敏感的,信息交互场景
小数据场景
使用的语言是C++、java、python的场景
Thrift的应用场景
功能丰富、支持全套RPC处理
小数据场景
使用的语言是C++、java、python的场景
(3)常见问题:
1、客户端的thrift登录不了。
2、protobuf版本冲突问题。
3、修改字段的注意事项。
(4)解决方案:
1、客户端的thrift通信端口,与服务端thrift端口保持一致【且客户端、服务端thrift通信协议必须保持一致】,且服务端thrift通信端口号与http服务端口号不相同。服务端thrift通信端口号,是在项目启动时自动绑定到服务。
2、先查看有多少个protobuf,视情况删除高版本,在下载合适的版本安装
3、不可以改变已经存在的标签的数字,不可以增加或删除必须字段。
(5)编码实战:
(6)拓展思考:
(7)参考文献:
https://zh.wikipedia.org/wiki/Thrift
https://www.infoq.cn/article/the-evolution-of-distributed-systems
https://blog.mimvp.com/article/7491.html
https://www.cnblogs.com/cocos2014/p/4259037.html
(9)鸣谢:
感谢各位师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~