摘要: 1. 复制状态机 复制状态机,就是说每一台服务器上维持着一份持久化Log,然后 通过一致性协议算法,保证每一个实例中的Log保持一致,并且顺序存放,这样客户端就可以在每一个实例中读取到相同的数据。 如上图所示,有一个Consensus Module就是一致性协议模块,它可以是Paxos算法的实现或者 阅读全文
posted @ 2022-03-22 09:41 aganippe 阅读(1592) 评论(0) 推荐(0) 编辑
摘要: 1. redis分布式锁原理 redis实现分布式锁其实就是对key进行操作 加锁:给对应的lockkey赋值,就进行了加锁操作,其他进程发现该lockkey已经值了有值了,就说明锁已经被别人获取 解锁:获取到锁的进程删除这个lockkey 锁超时:避免客户端宕机导致无法正常释放锁 1.1 加锁 加 阅读全文
posted @ 2022-03-21 20:01 aganippe 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1. hostname hostname 没有选项,显示主机名字 hostname –d 显示机器所属域名 iwhostname –f 显示完整的主机名和域名 hostname –i 显示当前机器的ip地址 2. ping ping 将数据包发向用户指定地址。当包被接收,目标机器发送返回数据包。pi 阅读全文
posted @ 2022-03-21 19:58 aganippe 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1. linux有哪些进程 linux下的主要进程状态有: R(TASK_RUNNING) -- 可执行状态 S(TASK_INTERRUPTIBLE) -- 可中断的睡眠状态 D(TASK_UNINTERRUPTIBLE) -- 不可中断的睡眠状态 T(TASK_STOPPED or TASK_T 阅读全文
posted @ 2022-03-21 19:30 aganippe 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 1. 上下文context 上下文context.Context在golang中用于设置截止日期、同步信号、传递请求相关值的结构体。 上下文概念和goroutine有着较为密切的关系,是go中独有的设计。 在goroutine构成的树形结构中对信号进行同步以减少计算资源的浪费是context最大的作 阅读全文
posted @ 2022-03-21 17:07 aganippe 阅读(607) 评论(0) 推荐(1) 编辑
摘要: 面试时间:2022.03.21 1. 自我介绍 2. 云端存储项目介绍 3. 项目里redis做什么的?仅仅是缓存吗? -- 分布式锁 4. redis分布式锁怎么实现的 5. 除了redis还知道什么分布式锁? -- mysql和etcd 6. etcd的实现了解吗?简单说说 -- 底层不太清楚, 阅读全文
posted @ 2022-03-21 16:29 aganippe 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 1. golang垃圾回收 golang的垃圾回收算法是三色标记法,其中三个颜色分别为:灰色、黑色、白色,其对应了垃圾回收过程中变量的三种状态: 灰色:对象还在标记队列中等待 黑色:对象已经被标记,该对象不会在本次GC中被回收 白色:对象为被标记,该对象会在本地GC中被回收 1.1 垃圾回收流程 假 阅读全文
posted @ 2022-03-21 13:50 aganippe 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 尝试基于grpc和docker pubsub包,提供一个跨网络的发布和订阅系统 安装依赖: go get github.com/moby/moby/pkg/pubsub 首先通过proto定义一个发布和订阅服务接口: syntax="proto3"; package pb; option go_pa 阅读全文
posted @ 2022-03-21 12:39 aganippe 阅读(1592) 评论(0) 推荐(1) 编辑
摘要: 1. 什么是gRPC gRPC是谷歌公司基于protobuf开发的跨语言的开源RPC框架,基于http/2协议设计,对移动设备更加友好。 go语言gRPC技术栈最底层为TCP或者Unix套接字协议,在此之上是http/2协议的实现,然后在http/2协议之上有构建了针对go语言的gRPC核心库。应用 阅读全文
posted @ 2022-03-20 21:01 aganippe 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 1. RPC简介 RPC是远程系统调用的缩写,通俗地讲就是调用远处的一个函数,可能是一个文件内的不同函数,也可能是一个机器上另一个进程的函数,也可能是远处机器上的函数。 RPC是分布式系统中不同节点之间的通信方式,Go的标准库也实现了一个简单的RPC。 2. RPC简单使用 首先构造一个HelloS 阅读全文
posted @ 2022-03-20 20:04 aganippe 阅读(257) 评论(0) 推荐(0) 编辑