引言
做了5年开发的我,阿里一直是我心之所向,如今我如愿以偿进入了国内互联网巨头——Alibaba!
其实,今年下半年我面试不少互联网企业,像涂鸦智能,百度,京东,腾讯,字节,滴滴,阿里等等都有三井的身影,之后总结出来的针对Java面试的知识点或真题,每个点或题目都是在面试中被问过的,满满干货,诚意分享!
由于整理成了文档,总结的内容比较多,希望大家都能领取一份,一定对自己有帮助!
主要内容
本文是从大型互联网系统的应用角度探讨分布式缓存的。本文站在原理、框架、架构、案例等多个视角对分布式缓存进行了探讨。
互联网系统随着容量需求的陡增,许多看似简单的存储类场景都面临着巨大的容量问题和稳定性风险,而其中大部分问题都可以通过对缓存的合理使用来规避。读者从本文中将会获得应对这些问题的思路,也会对分布式缓存有一个体系化的认识。
本文内容共分为三个部分,16章的内容,全文按照从理论到实现,再到实践的思路撰写。
首先介绍分布式缓存的背景知识,对“分布式”和“缓存”这两个关键词进行了全面阐述,从而为后续章节的叙述打下基础;
接着介绍业界主流的缓存,关注其原理与实现,囊括了Ehcache、Memcached、Redis、 Tair、 EVCache、Aerospike等六个缓存或类缓存系统;
最后讨论缓存在互联网系统中的实践,从广告、社交、新闻、电商、营销等五类典型的互联网应用入手,分析它们面临的性能稳定性问题以及如何利用分布式缓存解决这些问题。
第1章,缓存为王
在商业的世界中,常说的一句话是“现金为王”。在互联网、移动互联网乃至整个软件技术世界中,与之相近的一个说法就是“缓存为王”。什么是缓存呢?
第2章,分布式系统理论
分布式理论体系宏大精深,可以通过一大厚本专著来专门阐述,本文难以尽述之,本章拟从分布式系统概论、分布式系统概念、分布式系统理论,比如Paxos、分布式系统设计策略、心跳检测、分布式系统设计实践、全局ID生成等几个方面略勾画之。本章可作为后续章节阅读的基础,比如Master-Slave节点切换需要心跳检测、Redis 多节点选主也有相应的理论体系( Paxos或者Raft协议等)支撑,一致性哈希、路由表甚至负载均衡也是常见的分布式服务调用策略。
第3章,动手写缓存
目前市面上已经有很多开源的缓存框架,比如Redis、Memcached、 Ehcache 等,那为什么还要自己动手写缓存?本章将带领大家从0到1写一个简单的缓存框架,目的是让大家对缓存的类型、缓存的标准、缓存的实现及原理有一个系统的了解,做到知其然,知其所以然。
第4章,Ehcache与Guava Cache
Ehcache是一个用Java实现的使用简单、高速、线程安全的缓存管理类库,其提供了用内存、磁盘文件存储,以及分布式存储等多种灵活的管理方案。同时Ehcache作为开放源代码项目,采用限制比较宽松的ApacheLicenseV2.0作为授权方式,被广泛地用于Hibernate、Spring、Cocoon 等其他开源系统。Ehcache 从Hibernate 发展而来,逐渐涵盖了全部功能,是目前发展势头很