Kubernetes简介

Kubernetes(简称K8S,K和S之间有8个字母)是用于自动部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。

Kubernetes具有如下特性:

  • 服务发现与负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。
  • 存储编排:自动挂载所选存储系统,包括本地存储。
  • Secret和配置管理:部署更新Secrets和应用程序的配置时不必重新构建容器镜像,且不必将软件堆栈配置中的秘密信息暴露出来。
  • 批量执行:除了服务之外,Kubernetes还可以管理你的批处理和CI工作负载,在期望时替换掉失效的容器。
  • 水平扩缩:使用一个简单的命令、一个UI或基于CPU使用情况自动对应用程序进行扩缩。
  • 自动化上线和回滚:Kubernetes会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。
  • 自动装箱:根据资源需求和其他约束自动放置容器,同时避免影响可用性。
  • 自我修复:重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器。
第5章 持久化

持久化,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,本章首先介绍RDB和AOF两种持久化配置和运行流程,其次对常见的持久化问题进行定位和优化,最后结合Redis常见的单机多实例部署场景进行优化。

5.1 RDB

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_缓存

5.2 AOF

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_redis_02

5.3 问题定位与优化

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_android_03

5.4 多实例部署

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_运维_04

Tips:由于内容过多,下面章节内容我将主要展示各个知识点以及部分截图

第6章 复制

复制,在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,用于故障恢复和负载均衡等需求,Redis也是如此。它为我们提供了复制(replication)功能,实现了多个相同数据的Redis副本。复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制的基础上实现高可用。

6.1 配置

6.2 拓扑

6.3 原理

6.4 开发与运维中的问题

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_应用程序_05

第7章 Redis的噩梦:阻塞

阻塞,Redis是典型的单线程架构,所有的读写操作都在一条主线程中完成的。当Redis用于高并发场景时这条线程就变成了它的生命线。如果出现阻塞哪怕是很短时间对于我们的应用来说都是噩梦。导致阻塞问题的场景大致分为内在原因和外在原因,本章将进行详细分析。

7.1 发现阻塞

7.2 内在原因

7.3 外在原因

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_redis_06

第8章 理解内存

理解内存,Redis所有的数据存在于内存中,如何高效利用Redis内存变得非常重要。高效利用Redis内存首先需要理解Redis内存消耗在哪里,如何管理内存,最后再深入到如何优化内存。掌握这些知识后相信读者能够实现用更少的内存存储更多的数据从而降低成本。

8.1 内存消耗

8.2 内存管理

8.3 内存优化

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_缓存_07

第9章 哨兵

哨兵,Redis从2.8版本开始正式提供了Redis Sentinel,它有效解决了主从复制模式下故障转移的若干问题,为Redis提供了高可用功能。本章将一步步解析Redis Sentinel的相关概念、安装部署、配置、命令使用、原理解析,最后分析了Redis Sentinel运维中的一些问题。

9.1 基本概念

9.2 安装和部署

9.3 API

9.4 客户端连接

9.5 实现原理

9.6 开发与运维中的问题

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_android_08

第10章 集群

集群,是本书的重头戏,Redis Cluster是Redis3提供的Redis分布式解决方案,有效解决了Redis分布式方面的需求,理解应用好RedisCluster将极大的解放我们对分布式Redis的需求,同时它也是学习分布式存储的绝佳案例。本章将针对RedisCluster的数据分布,搭建集群,节点通信,请求路由,集群伸缩,故障转移等方面进行分析说明。

10.1 数据分布

10.2 搭建集群

10.3 节点通信

10.4 集群伸缩

10.5 请求路由

10.6 故障转移

10.7 集群运维

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_缓存_09

第11章 缓存设计

缓存能够有效加速应用的读写速度,以及降低后端负载,对于开发人员进行日常应用的开发至关重要,但是将缓存加入应用架构后也会带来一些问题,本章将介绍缓存使用和设计中遇到的问题,具体包括:缓存的收益和成本、缓存更新策略、缓存粒度控制、穿透问题优化、无底洞问题优化、雪崩问题优化、热点key优化。

11.1 缓存的收益和成本

11.2 缓存更新策略

11.3 缓存粒度控制

11.4 穿透优化

11.5 无底洞优化

11.6 雪崩优化

11.7 热点key重建优化

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_android_10

第12章 开发运维的“陷阱”

介绍Redis开发运维中的一些棘手问题,具体包括:Linux配置优化、flush误操作数据恢复、如何让Redis变得安全、bigkey问题、热点key问题。

12.1 Linux配置优化

12.2 flushall/flushdb误操作

12.3 安全的Redis

12.4 处理bigkey

12.5 寻找热点key

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_运维_11

第13章 Redis监控运维云平台CacheCloud

Redis监控运维云平台CacheCloud,介绍笔者所在团队开源的Redis运维工具CacheCloud,它有效解决了Redis监控和运维中的一些问题,本章将按照快速部署、机器部署、接入应用、用户功能、运维功能多个维度全面的介绍CacheCloud,相信在它的帮助下,读者可以更好的监控和运维好Redis。

13.1 CacheCloud是什么

13.2 快速部署

13.3 机器部署

13.4 接入应用

13.5 用户功能

13.6 运维功能

13.7 客户端上报

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_redis_12

第14章 Redis配置统计字典

Redis配置统计字典,会对Redis的系统状态信息以及全部配置做一个全面的梳理,希望本章能够成为Redis配置统计字典,协助大家分析和解决日常开发和运维中遇到的问题。

14.1 info系统状态说明

14.2 standalone配置说明和分析

14.3 Sentinel配置说明和分析

14.4 Cluster配置说明和分析

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_缓存_13

Java高频面试专题合集解析:

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_应用程序_14

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,在这也是免费分享给那些有需要的朋友,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_redis_15

更多Java架构进阶资料展示

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_redis_16

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_运维_17

 

真是恍然大悟啊!和快手大佬的技术面谈,最全指南_redis_18