本文实现一个EchoTCPServer 完整代码:https://github.com/csgopher/go-redis 本文涉及以下文件:handler:处理连接,客户端传来的指令server:服务端echo:测试main interface/tcp/Handler.go typeHandlerinterface{ Handle(ctxcontext.Context,connnet.Conn)//处理连接 Close()error } Handler:业务逻辑的处理接口 Handle(ctxcontext.Context,connnet.Conn)处理连接 tcp/serv...

  bWx0JUwGurrh   2023年11月02日   52   0   0 Go

本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行 echodatabase用来测试协议层的代码 https://github.com/csgopher/go-redis 本文涉及以下文件:conn:定义连接接口interface/reply:定义各类响应接口consts:定义常用响应errors:定义错误响应resp/reply:实现reply接口parser:解析指令conn:实现conn接口handler:解析指令再交给database层database:定义核心层接口echo_database:测试 RESP协议 RESP是客户端与服务端通信的...

  bWx0JUwGurrh   2023年11月02日   31   0   0 Go

实现Redis的database层(核心层:处理命令并返回) https://github.com/csgopher/go-redis 本文涉及以下文件:dict:定义字典的一些方法sync_dict:实现dictdb:分数据库command:定义指令ping,keys,string:指令的具体处理逻辑database:单机版数据库 datastruct/dict/dict.go //遍历字典所有的键值对,返回值是布尔,true继续遍历,false停止遍历 typeConsumerfunc(keystring,valinterface{})bool typeDictinterface{...

  bWx0JUwGurrh   2023年11月02日   60   0   0 Go

将用户发来的指令以RESP协议的形式存储在本地的AOF文件,重启Redis后执行此文件恢复数据 https://github.com/csgopher/go-redis 本文涉及以下文件:redis.conf:配置文件aof:实现aof redis.conf appendonlyyes appendfilenameappendonly.aof aof/aof.go typeCmdLine=[][]byte const( aofQueueSize=1<<16 ) typepayloadstruct{ cmdLineCmdLine dbIndexint } //AofHa...

  bWx0JUwGurrh   2023年11月02日   37   0   0 Go

采用一致性hash算法将key分散到不同的节点,客户端可以连接到集群中任意一个节点 https://github.com/csgopher/go-redis 本文涉及以下文件:consistenthash:实现添加和选择节点方法standalone_database:单机databaseclient:客户端client_pool:实现连接池cluster_database:对key进行路由com:与其他节点通信router,ping,keys,del,select:各类命令的转发具体逻辑 一致性哈希 为什么需要一致性hash?在采用分片方式建立分布式缓存时,我们面临的第一个问题是如何决...

  bWx0JUwGurrh   2023年11月02日   79   0   0 Go

Raft各阶段的描述 node有三个state:follwercandidateleader所有节点一开始是followerstate,如果followers没有收到leader的消息,那么他们可以成为candidate。然后candidate请求其他节点投票(requestvote),nodes将以投票方式回应,如果candidate获得了大多数node的投票它将会成为leader。这个过程就是LeaderElection。现在,对系统的所有更改都要经过leader,每个更改都作为entry添加到节点的日志中。logentry如果还未提交,就不会更新节点的值。要提交entry,节点首先将其...

  bWx0JUwGurrh   2023年11月02日   55   0   0 Go

可用性之服务隔离 服务隔离的目的 在系统发生故障时限制其影响范围隔离在保障整个服务的可用性上具有重要作用 隔离维度 线程级别的隔离:不同的任务给不同的线程执行进程级别的隔离:将系统业务拆分成多个微服务,部署到不同的机器上进程间的通信方式:不同机器经过远程调用,相同机器通过内存,管道(内存中的一种特殊的文件),消息来通信快慢隔离:避免队列阻塞。视频审核优先处理小视频;error日志和非error日志分开采集热点隔离:有静态和动态热点数据。实现动态发现热点的功能。提前预热缓存;隔离,使用单独的服务来处理业务核心程度隔离:按照服务的核心程度,将服务分级。重要程度高的服务单独部署,并提供冗余资源提高容...

  bWx0JUwGurrh   2023年11月01日   49   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~