协议
OSI 七层协议
TCP/IP
HTTP
HTTP2.0
- 《HTTP 2.0 原理详细分析》
- 《HTTP2.0的基本单位为二进制帧》
- 利用二进制帧负责传输。
- 多路复用。
HTTPS
- 《https原理通俗了解》
- 使用非对称加密协商加密算法
- 使用对称加密方式传输数据
- 使用第三方机构签发的证书,来加密公钥,用于公钥的安全传输、防止被中间人串改。
- 《八大免费SSL证书-给你的网站免费添加Https安全加密》
网络模型
- 《web优化必须了解的原理之I/o的五种模型和web的三种工作模式》
- 五种I/O模型:阻塞I/O,非阻塞I/O,I/O复用、事件(信号)驱动I/O、异步I/O,前四种I/O属于同步操作,I/O的第一阶段不同、第二阶段相同,最后的一种则属于异步操作。
- 三种 Web Server 工作方式:Prefork(多进程)、Worker方式(线程方式)、Event方式。
- 《select、poll、epoll之间的区别总结》
- select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。
- select 有打开文件描述符数量限制,默认1024(2048 for x64),100万并发,就要用1000个进程、切换开销大;poll采用链表结构,没有数量限制。
- select,poll “醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,通过回调机制节省大量CPU时间;select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,而epoll只要一次拷贝。
- poll会随着并发增加,性能逐渐下降,epoll采用红黑树结构,性能稳定,不会随着连接数增加而降低。
- 《select,poll,epoll比较 》
- 在连接数少并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多函数回调。
- 《深入理解Java NIO》
- NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪,非阻塞是指线程在等待 IO 的时候,可以同时做其他任务
- 《BIO与NIO、AIO的区别》
- 《两种高效的服务器设计模型:Reactor和Proactor模型》
Epoll
Java NIO
kqueue
连接和短连接
框架
- 《Netty原理剖析》
- Reactor 模式介绍。
- Netty 是 Reactor 模式的一种实现。
零拷贝(Zero-copy)
- 《对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解》
- 多个物理分离的buffer,通过逻辑上合并成为一个,从而避免了数据在内存之间的拷贝。
序列化(二进制协议)
Hessian
- 《Hessian原理分析》 Binary-RPC;不仅仅是序列化
Protobuf
- 《Protobuf协议的Java应用例子》 Goolge出品、占用空间和效率完胜其他序列化类库,如Hessian;需要编写 .proto 文件。
- 《Protocol Buffers序列化协议及应用》
- 关于协议的解释;缺点:可读性差;
- 《简单的使用 protobuf 和 protostuff》
- protostuff 的好处是不用写 .proto 文件,Java 对象直接就可以序列化。