表格 习技固然可以成为人杰. 悟道才能羽化升仙. 思想才是王道.
没有唯一的正确标准, 只有在某种情况下适合的方案.
共享数据
共享变量
主动询问
被动通知
缩短处理时间
利用阻塞时间
数据协议(应用层通信协议)数据格式(序列化协议): 序列化与反序列化线程模型网络IO模型: BIO NIO 多路复用...数据传输方式: TCP UDP图 本地数据传输 - 数据格式 与 传输方式
网络数据传输 - 数据格式 与 传输方式
内存IO
磁盘IO
网络IO
随机IO
顺序IO
BIO Acceptor
NIO Selector
延迟写
同步写
异步写
一切皆'文件'
文件描述符 File Descriptor read() write()
套接字描述符 Socket Descriptor recv() send()
本地套接字
网络套接字
- 未连接套接字
- 监听套接字
- 已连接套接字
从输入流里面读 - 以流的方式将数据移出 C Heap Buffer缓冲区
向输出流里面写 - 以流的方式将数据移进 C Heap Buffer缓冲区
从通道里读
向通道里写
面向流 将C Heap Buffer缓冲区中的数据以流的方式移进移出
面向缓冲区
操作系统在DMA的协助下将内核缓存中的数据'批量'移进移出
减少数据传输次数 - 减少系统调用次数
单次批量传输数据 - 缓冲区
原子性 一致性 隔离性 持久性
原子性 可见性 有序性
秒 分 时 日 月 星期 年
高性能 高可用 易伸缩 可扩展 安全性
高性能 高可用 高并发
高并发的核心问题在于如何平衡性能与数据一致性
高可用包括数据高可用和服务高可用
高并发系统架构口诀: 读多写少用缓存 写多读少用队列 从而缓解数据库压力
缓存 - 利用空间换取时间是网站优化第一定律
队列之异步 - '能推迟处理则推迟处理'是网站优化第二定律
高并发架构
- 缓存
- 消息队列
- 读写分离
- 分库分表
高可用架构
- 限流
- 熔断
- 降级
性能与数据一致性之间的平衡
时间与空间之间的平衡
时间与次数之间的平衡
时间与次数与速度之间的平衡
读取-修改-写入 CAS-原子性操作内存
打开-操作-关闭 一切皆文件
阻塞 是否可以响应中断
阻塞一定时间 是否可以响应中断
非阻塞
'结构决定特性' '位-构-性'
机制-特性
定位-特性
定时 定量 同步 异步
集中式服务一致性 - 本地事务
分布式服务一致性 - 分布式事务
本地锁 - 分布式锁
集中式系统 - 成功 失败
分布式系统 - 成功 失败 超时
数据副本
服务副本
分布式CAP 一致性 可用性 分区容错性
Linux CPU 进程 内存 磁盘IO 网络
系统监控 - 性能评估与优化 - 故障处理与恢复
常量池 线程池 连接池 对象池...
锁 - 状态的变化
大刀阔斧与精雕细琢
空间 时间 次数 优先级等要素满足的情况下进行处理操作
随机操作变成顺序操作
线程间通信2种类型[同一进程内] 1.共享内存[in Java] -> 需要线程同步
2.消息传递 Channel[in Go] Actor模型[in Erlang] Akka[in Scala]
线程同步3种机制 1.[ 锁机制 ]
1.1 互斥量
1.2 条件变量
1.3 读写锁
2.[ 信号量机制 ]
3.[ 信号机制 ]
进程间通信2种类型[借助操作系统] 1.[ 本地进程间通信 ]
1.1进程间数据共享
[ 管道 ][ FIFO ][ 消息队列 ][ 共享存储(shm机制|mmap机制)(&互斥量|信号量|记录锁) ][ UNIX Domain Socket ] 1.2异步通信
[ 信号 ] 1.3同步和互斥
[ 互斥量(互斥性) ] [ 信号量(互斥性与同步性) ] [ 记录锁 ] 2.[ 网络进程间通信 ] 套接字
内存映射mmap可以实现进程间通信, 读写文件, 内存申请, 零拷贝等功能.读写文件两种方式: read/write 内存映射mmap 互斥是种特殊的同步
互斥即无序协同步调
同步即时序协同步调
基于共享内存模型的线程通信,它的基石在于线程同步
基于消息传递模型的线程通信,它的...
进程通信目的在于数据交换
基于共享内存模型的线程通信,对象可以直接访问或修改它的属性,也可以直接调用它的方法.
基于消息传递模型的线程通信,Actor模型中的Actor的状态不能直接读取或修改,方法也不能直接调用.Actor只能通过消息传递的方式与外界通信.
多任务-线程 操作系统调度单位
多任务-进程 资源分配单位
进程
线程
协程
对象池
连接池
线程池
内存池
等待队列
同步队列
同步容器
并发容器
同步编程
并发编程
异步编程
响应式编程
线程Thread生命周期和状态
线程池ExecutorService生命周期和状态
任务FutureTask生命周期和状态
存储{数据/数据结构} + 计算{动作/算法} + 网络
计算向数据移动
事件机制
轮询机制
Linux内核三驾马车
进程管理
内存管理
文件系统与IO
编程基础'四大件'(内功)
1.数据结构与算法 百度网盘/移动硬盘/学习资料视频/玩转数据结构
2.设计模式
3.操作系统 阿里云盘/操作系统设计与实现 操作系统真象还原
4.计算机网络 阿里云盘/Linux网络编程,Linux高级网络编程,Linux网络编程-华清创客
Linux -> 汇编 -> C/C++ -> JVM -> Netty -> Python
阿里云盘/C语言教程
阿里云盘/Netty源码分析
编程(外功)
(*)MySQL
(*)分库分表
(*)Flink
(*)ES
(*)Netty
(*)Kubernetes
JVM
并发编程
Spring
Dubbo
MQ
MyBatis
Redis
Nginx
分布式
Linux系统故障排查与性能调优