架构师训练营 - 学习总结 第 8 周
数据结构与算法
常规算法,可关注下redis的zset用到的跳表,hashMap键值冲突后的红黑树等的实现方式。
网络与数据库
Web请求的一次网络通信历程,做通信链路优化时要有清晰的网络流向图。
OSI七层模型和TCP/IP四层模型,注意其映射关系和各层的功能点。从上往下看,每一层都会在原数
据包上继续做封装,应用层的HTTP协议头(HTTP方法类型、HTTP访问路径等),传输层的TCP协议头(服务器监听端口,通信端口),网络层的IP协议头(服务器IP、客户端IP),链路层的协议头(mac地址等)。传输前从上往下逐层封包,收到后从下往上逐层解包,最后被应用服务所使用。
网络模型中,需要特别关注TCP的流量控制和拥塞控制,有一些参数需要调优,具体见netty性能调优。也要关注应用层中的HTTP协议,它的请求有7种方法,响应有5类状态。HTTP不同的协议也影响到性能,例如nginx需要开启HTTP1.1的长连接功能,保证其高效的吞吐量。
IO模型是网络模型的重点。阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻
塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。而同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO复用、信号驱动IO都是同步IO,如果不阻塞,而是操作系统帮你做完IO操作再将结果返回给你,那么就是异步IO。
I/O多路复用是指多个TCP连接(即socket或者channel),复用指复用一个或几个线程。其中epoll在2.6内核中提出的,对比select和poll,epoll更加灵活,没有描述符限制,用户态拷贝到内核态只需要一次。它使用事件通知,通过epoll_ctl注册fd,一旦该fd就绪,内核就会采用callback的回调机制来激活对应的fd。 利用多路复用机制,我们得到了Reactor模式: 基于事件驱动,适合处理海量的I/O事件,属于同步非阻塞IO。
数据库架构原理与性能优化
数据库的核心组件有: 连接器,语法分析器,语义分析与优化器,执行引擎等。SQL语句要注意提前生成执行计划,它可以让数据库完成预编译,也能有效防止SQL注入。MySQL的索引的核心存储是B+树,索引又分为聚簇索引(主键索引)和非聚簇索引(需要找到主键后再通过主键找行记录)。注意添加必要的索引,也要谨慎使用索引。数据库的事务特性,即ACID(原子性,一致性,隔离性,持久性)。参考数据库事务日志的结构,也可用在其他系统的设计中,例如分布式事务的本地事务表,涉及TCC的Confirm和Cancel逻辑。
版权声明: 本文为 InfoQ 作者【铁血杰克】的原创文章。
原文链接:【http://xie.infoq.cn/article/83c814fa69e62ca417369d31c】。未经作者许可,禁止转载。
评论 (1 条评论)