公众号【国民程序员】回馈粉丝福利: 每天现金红包和送书活动火热进行中,点击参与!
GitHub严选:每天推荐一个GitHub优质开源项目
人生的每个抉择都是自己的选择。
大家好,我是严选哥。
今天给大家带来的项目是:后端架构师技术图谱
后端在一个技术团队中的作用不言而喻,学好后端的知识需要日积月累乃至常年的实战。后端是一个宽泛而且知识点很广的技术栈,因此有一个学习的技术图谱,一方面能够展示后端有多少技术栈,另一方面也能帮助我们规划如何学习这些技术栈,查漏补缺。
拿服务器缓存来说,就包含以下内容:
Web缓存
- nuster - nuster cache
- varnish - varnish cache
- squid - squid cache
Memcached
- 《Memcached 教程》
- 《深入理解Memcached原理》
- 采用多路复用技术提高并发性。
- slab分配算法:memcached给Slab分配内存空间,默认是1MB。分配给Slab之后 把slab的切分成大小相同的chunk,Chunk是用于缓存记录的内存空间,Chunk 的大小默认按照1.25倍的速度递增。好处是不会频繁申请内存,提高IO效率,坏处是会有一定的内存浪费。
- 《Memcached软件工作原理》
- 《Memcache技术分享:介绍、使用、存储、算法、优化、命中率》
- 《memcache 中 add 、 set 、replace 的区别》
区别在于当key存在还是不存在时,返回值是true和false的。 - 《memcached全面剖析》
Redis
- 《Redis 教程》
- 《redis底层原理》
- 使用 ziplist 存储链表,ziplist是一种压缩链表,它的好处是更能节省内存空间,因为它所存储的内容都是在连续的内存区域当中的。
- 使用 skiplist(跳跃表)来存储有序集合对象、查找上先从高Level查起、时间复杂度和红黑树相当,实现容易,无锁、并发性好。
- 《Redis持久化方式》
- RDB方式:定期备份快照,常用于灾难恢复。优点:通过fork出的进程进行备份,不影响主进程、RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。缺点:会丢数据。
- AOF方式:保存操作日志方式。优点:恢复时数据丢失少,缺点:文件大,回复慢。
- 也可以两者结合使用。
- 《分布式缓存--序列3--原子操作与CAS乐观锁》
架构
《Redis单线程架构》
回收策略
《redis的回收策略》
Tair
- 官方网站
《Tair和Redis的对比》 - 特点:可以配置备份节点数目,通过异步同步到备份节点
- 一致性Hash算法。
- 架构:和Hadoop 的设计思想类似,有Configserver,DataServer,Configserver 通过心跳来检测,Configserver也有主备关系。
- 几种存储引擎:
- MDB,完全内存性,可以用来存储Session等数据。
- Rdb(类似于Redis),轻量化,去除了aof之类的操作,支持Restfull操作
- LDB(LevelDB存储引擎),持久化存储,LDB 作为rdb的持久化,google实现,比较高效,理论基础是LSM(Log-Structured-Merge Tree)算法,现在内存中修改数据,达到一定量时(和内存汇总的旧数据一同写入磁盘)再写入磁盘,存储更加高效,县比喻Hash算法。
- Tair采用共享内存来存储数据,如果服务挂掉(非服务器),重启服务之后,数据亦然还在。
其它更多内容,请大家自行前往阅读。
欢迎关注我的技术公众号:国民程序员,我们的目标:输出干货
- 每天分享原创技术文章
- 海量免费技术资料和视频学习资源
- 分享赚钱门道,带领程序员走向财务自由
网友评论