一,扩容思路
内存,服务器,
数据库:扩容.
二,高并发解决方案--缓存
缓存特征:
FIFO:先进先出的策略,在缓存空间不够的情况下,或者超出空间最大限度的时候,优先被清除掉.以腾出新的空间接受新的数据.(算 法:根据缓存数据的创建时间,)
LFU:最少使用策略,无论是否过期,优先清楚使用次数最少的数据.来释放空间.(算法:主要比较元素的命中次数在保证高频数据有效 性场景下)
LRU:最近最少使用策略,无论是否过期,根据元素最后一次使用的时间戳,清除最远使用的元素.(算法:被get的时间,优先保证热点数 据有效性)
影响缓存命中率的几个因素:
(读多 写少)
(粒度越小 命中率越高)
缓存的应用和应用场景:
A,Guava Cache
B,
slab的个数是有限的,page大小是1M.
memcache:单线程在32位机中最大使用内存是2G,在64位机中,则没有限制.其中key的大小最大为250个字节,item的最大数据 是1M,服务器端是不安全的.通过命令可让已经存在键值对立即失效.不能遍历里面的item因为速度缓慢. 会阻塞其他的操作.器高性能来源于两个阶段的hash,第一个是在客户端.根据key算出一个节点.第二阶段是在服务端.通过内部的一个算法,查到到对应的item并返回给客户端.是一个分阻塞的基于事件的服务器程序.可以设置key永久有效,但是这个值也会在30天后失效.
C,
Redis.
读的速度11万次每秒,写的速度是八万一每秒.每个操作都是原子性的.
学习地址: http://redis.cn/
只的是当某个key被高并发访问并且没有被命中,就需要查询数据库.导致大量请求到数据中.导致不必要的查询操作.缓存为空(空集合而不是null),避免请求到后面的数据库.
三,消息队列
使用消息队列的原因:
好处:
举例:
四:拆分思路:
针对性的优化,哪个模块访问量大,可以适当的扩容.
拆分原则:
应用 拆分
五,限流
六,服务降级与熔断
业务降级要考虑的问题:
\
Hystrix:
七,数据库瓶颈
数据库切库.
数据库分表.
横向分表:切割为相同的表,取余,可以保证单表的容量不会很大.垂直企分表:根据数据的活跃度分表,把一张表拆分成多个表.
八,搭建高可用的系统
总结: