摘要:
MySQL MySQL的本地事务、全局事务、分布式事务 MySQL高性能索引策略和查询性能优化 MySQL高可用架构-MMM、MHA、MGR、分库分表 Redis Redis的持久化机制 Redis新旧复制 Redis高可用解决方案:哨兵(Sentinel) Redis分布式方案:集群 Redis多 阅读全文
摘要:
可用性之服务隔离 服务隔离的目的 在系统发生故障时限制其影响范围 隔离在保障整个服务的可用性上具有重要作用 隔离维度 线程级别的隔离:不同的任务给不同的线程执行 进程级别的隔离:将系统业务拆分成多个微服务,部署到不同的机器上 进程间的通信方式:不同机器经过远程调用,相同机器通过内存,管道(内存中的一 阅读全文
摘要:
Raft各阶段的描述 node有三个state:follwer candidate leader 所有节点一开始是follower state,如果followers没有收到leader的消息,那么他们可以成为candidate。 然后candidate请求其他节点投票(request vote), 阅读全文
摘要:
采用一致性hash算法将key分散到不同的节点,客户端可以连接到集群中任意一个节点 https://github.com/csgopher/go-redis 本文涉及以下文件: consistenthash:实现添加和选择节点方法 standalone_database:单机database cli 阅读全文
摘要:
将用户发来的指令以RESP协议的形式存储在本地的AOF文件,重启Redis后执行此文件恢复数据 https://github.com/csgopher/go-redis 本文涉及以下文件: redis.conf:配置文件 aof:实现aof redis.conf appendonly yes app 阅读全文
摘要:
实现Redis的database层(核心层:处理命令并返回) https://github.com/csgopher/go-redis 本文涉及以下文件: dict:定义字典的一些方法 sync_dict:实现dict db:分数据库 command:定义指令 ping,keys,string:指令 阅读全文
摘要:
本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行 echo database用来测试协议层的代码 https://github.com/csgopher/go-redis 本文涉及以下文件: conn:定义连接接口 interface/reply:定义各类响应接 阅读全文
摘要:
本文实现一个Echo TCP Server 完整代码:https://github.com/csgopher/go-redis 本文涉及以下文件: handler:处理连接,客户端传来的指令 server:服务端 echo:测试 main interface/tcp/Handler.go type 阅读全文
摘要:
用户确认支付后,支付系统异步调用交易系统,交易系统更新交易状态,通知商家发货。如果交易系统超时未响应支付系统,支付系统会进行重试。有可能这时交易系统已经通知商家发货,这次的重试会让商家发货两次,这是不可以接受的。 这时,需要引入一个防重操作,例如,每次更新交易状态,先查询是否是初始状态,如果是,就更 阅读全文
摘要:
结构演进 早起JDK版本中,ThreadLocal内部结构是一个Map,线程为key,线程在“线程本地变量”中绑定的值为Value。每一个ThreadLocal实例拥有一个Map实例。(Key是线程,Value是值) JDK8中,ThreadLocal内部结构发生了演进,虽然还是Map,但是拥有者变 阅读全文