- 博客(6)
- 收藏
- 关注
原创 etcd和grpc版本不兼容
记录一次etcd和grpc版本不兼容的解决过程 问题1 undefined: resolver.BuildOption undefined: resolver.ResolveNowOption undefined: balancer.PickOptions 原因:etcd 的 release 版本要求 grpc 的版本是 v1.26.0 之前的,在 go.mod 里添加一句: replace google.golang.org/grpc => google.golang.org/grpc v1.26.
2021-07-19 13:45:51
1097
1
原创 Redis持久化之AOF与RDB
RDB 当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作: Redis 调用forks。同时拥有父进程和子进程。 子进程将数据集写入到一个临时 RDB 文件中。 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。 这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益。 在 Redis持久化时, RDB 程序将当前内存中的数据库状态保存到磁盘文件中, 在 Redis 重启动时, RD
2020-12-03 16:04:25
125
原创 基于Redis实现分布式锁
实现 SET key value [EX <seconds>] [PX [millseconds] [NX] [XX] 可选参数说明 NX:表示key不存在才设置,如果存在则返回NULL XX:表示key存在时才设置,如果不存在则返回NULL EX seconds:设置过期时间,过期时间精确为秒 PX millseconds:设置过期时间,过期时间精确为毫秒 以上set 代替了 setnx + expire 需要分2次执行命令操作的方式,保证了原子性。 如果setnx 返回ok 说明拿到了锁;
2020-12-03 16:01:16
95
原创 go-rpc示例
基于TCP Server package main //方法调用者 type Ret struct{} type Params struct{ Name,Nation string } //服务器需要暴露的方法,暴露一个问候方法 //签名规则 func(r *Reciver) Function(req Request,resp *Response) error func (r *Ret)Greet(p *Params,reply *string) error{ reply = "he
2020-12-03 15:58:22
193
转载 RPC原理整理
RPC基本原理 RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC是跨进程的通信机制,RPC基本框架如下所示: RPC核心功能如下所示: 一个 RPC 的核心功能主要有 5 个部分组成,分别是:客户端、客户端 Stub、网络传输模块、服务端 Stub、服务端等。 核心 RPC 框架的重要组成: 客户端(Client):服务调用方。 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求
2020-12-03 15:54:25
144
原创 Mysql优化策略
mysql避免索引失效: 1.全值匹配 2.遵守最左前缀原则(where,group by,order by) 3.not in或者in可能导致索引失效 4.rang之后索引全失效 5.or全表必须左右都为索引否则索引全失效 6.like通配符若’%'在最左侧则导致索引失效(通过覆盖索引可以避免索引失效) 7.索引列避免任何运算,否则索引失效 8.字符串类型不加引号导致索引失效 9.优化器认为全表扫描更快则索引失效 10.尽量不使用 select * 尽量使用覆盖索引 11.is null和is not n
2020-12-03 15:47:14
188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅