iam场景与授权方案 IAM(Identity and Access Management)IAM是用来管理用户和系统对资源的访问权限,覆盖了对用户,组织,角色和策略的身份验证,授权和管理。 IAM功能IAM核心功能如下: 身份验证: 常见身份认证方式有用户名密码认证、多因素认证(MFA)、单点登录(SSO)、生物识别认证。 授权: 确保对应用户有相关权限,比如用户A对资源ABC具有读写权限,但是在D资源上只有读权限 2024-05-04 #iam
kubelet(一)源码分析 背景接触K8S这么久以来,对K8S内部原理还不是理解的很深,加上对K8S源码分析的书不多,所以打算从各个组件源码入手。关于kubelet,主要关心它是如何通过CRI,CSI,CNI来为Pod创建相关资源的,以及它对容器的监控。版本使用1.25。 组件编译在深入kubelet源码之前,先对kubelet组件进行编译,这样做可以快速对kubelet源码有一个认识。 入口函数Pod创建-CRI流程 2024-04-02 #kubernetes
Redis源码调试环境 背景深入学习redis绕不过去的肯定是源码,源码学习的最好方式就是带着问题去debug,所以这里使用vscode进行调试。 编译我比较顺利,一遍跑通了,如果缺少什么可以根据错误去自行解决。 1make CFLAGS="-g -O0" #-O0不进行优化处理 如果编译成功,在src目录下可以看到redis二进制文件: 1234567-rwxr-xr-x 1 root root 2024-03-14 #redis
redis持久化使用与场景 Redis持久化方案持久化是指将数据写入到磁盘上,Redis提供了以下几种方案: RDB: AOF RDB+AOF 除了上面三种持久化方案,还有不开启持久化,这种场景一般是将redis当作缓存使用,不过不推荐使用,因为 RDB(Redis Database)RDB优点 RDB非常适合容灾场景,因为它可以设置定期时间来生成快照备份,比如每小时备份最近24小时数据。 在键值对较多的情况下,换句话来 2024-03-13 #redis
WaitGroup使用与实现 背景WaitGroup主要应用场景是等待一组goroutine完成,主goroutine使用Add来设置等待goroutine的数量,之后每个goroutine使用Done来表示它们已经运行完成,同时Wait可以用于阻塞,直到所有goroutine都已经使用了Done。简单来说WaitGroup就是用来解决并发-等待问题。 WaitGroup在被创建之后,不能被复制,这里有点绕,用代码来说明: 1 2024-03-13 #Go
Channel使用与实现 背景channel之前使用的不多,虽然也看过源码和一些使用案例,但是在使用中还是会犯错。这里简单记录下channel使用和一些源码实现。 使用Go中经常提到的一句话就是不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存。也就是使用CSP并发模型。Goroutine之间使用channel传递。 例子1 通过channel传递信息先来理解一下CSP模型,这里设置两个Goroutine,分 2024-03-13 #Go
redis主从模式 背景redis Replication 在redis作为缓存的时候,用户访问应用,应用会先从redis中读取信息,如果没有再从mysql中读取。但是当redis失效的时候,应用流量会直接打到mysql,对mysql造成压力。为了保证redis的可靠性,就需要添加redis实例。也就是主从模式。 redis在4.0版本提供了主从模式,在主从模式中master和slave采取读写分离的模式,为了保证一 2024-03-12 #redis