这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
数据结构
各种算法:
- 插入排序 最好:O(n)
平均:O(n^2)
最坏:O(n^2)
- 快速排序 最好:O(n*logn)
平均:O(n*logn)
最坏:O(n^2)
- 堆排序 最好:O(n*logn)
平均:O(n*logn)
最坏:O(n*logn)
RPC远程调用
RPC需要解决的问题
- 函数映射
- 将数据转化为字节流
- 网络传输
一次RPC的完成过程
IDL文件:通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
生成代码:通过编译器工具把IDL文件转换成语言对应的静态库
编解码:从内存中表示到字节序列的转换称为编码,反之为解码。(序列化和反序列化)
通信协议:规范了数据在网络中的传输内容和格式。请求/响应数据、元数据
网络传输:通常走TCP/UDP传输
RPC的好处
1.单一职责,有利于分工协作和运维开发
2.可扩展性强
3.故障隔离
RPC带来的问题
1.服务宕机?
2.消息的可达性?
3.请求量突增导致服务无法及时处理?
RPC分层的思想
-
编解码层
-
传输协议层
特殊结束符、变长协议
-
网络通信层
RPC 框架的核心指标
- 稳定性
- 易用性
- 扩展性
- 观测性
HTTP
超文本传输协议(HTTP)是应用层的一个协议,是万维网生态系统的核心。
HTTP最初的用途是传输文本和图像,但web服务模型的发展需要大量与Web相关的协议和组件来建立运行于Web浏览器里的工具
HTTP的不足
HTTP1中的不足:队头阻塞、传输效率低、明文不安全
HTTP2实现了:头部压缩、多路复用、二进制协议(没有优化队头阻塞)
QUIC: 基于UDP实现、 解决队头阻塞、 加密减少握手次数、 支持快速启动
消息队列
kafak