09.*高性能核心技术
约 619 字大约 2 分钟...
零拷贝技术:
- 避免从内核态到用户态的数据拷贝
多路复用技术:
- 避免阻进程/线程阻塞在io上,而是等内核在io准备好(同步)或者io已完成(异步)时通知进程/线程。这样的好处:将进程/线程切换权限交给操作系统,可以让出CPU执行其他事情。
写时复制(copy on write):
线程池技术:
- 因为线程并不会一直占用CPU,所以为了避免线程无限创建和销毁的开销,预先创建一批线程(CPU * 2)。
无锁编程技术(lock-free):
成为无锁的条件:
- 是多线程
- 多个线程访问共享内存.
- 不会令其它线程造成阻塞.
- 解释:在访问共享资源时,阻塞型同步和非阻塞型同步。阻塞型同步:常用的互斥锁、信号量、条件变量
- CAS
进程间通信技术:
- 管道
- 命名管道
- socket
- 消息队列
- 信号
- 信号量
- 共享内存
RPC && 序列化技术
数据库索引技术
缓存技术 && 布隆过滤器
热点问题:
缓存穿透:强调不存在
- 定义:
- 是指缓存没有发挥作用,业务系统虽然去缓存查询数据,但缓存中没有数据,业务系统需要再次去存储系统查询数据
- 存储数据不存在
- 缓存数据生成耗费大量时间或者资源
缓存雪崩:强调大量过期
定义:
- 是指当缓存集体(大量) 失效(过期)后引起系统性能急剧下降的情况。当缓存过期被清除后,业务系统需要重新生成缓存,因此需要再次访问存储系统,再次进行运算,从而对存储系统造成巨大的性能压力,造成整个系统崩溃。
解决方法有两种:
- 更新锁机制
- 后台更新机制
缓存击穿:强调热点数据过期
- 定义:
- 热点key失效,高并发请求打到数据库,就是缓存击穿,缓存击穿可以理解成是缓存穿透的一种特殊情况
- 解决方法:
全文搜索技术
负载均衡技术
- 负载均衡算法: *
- 一致性哈希