Cache缓存项目学习2

项目架构
缓存服务器设计
ETCD使用:

当Server实例初始化时建立ETCD客户端,当server启动时,进行服务注册。

当服务器实例化peeker时,进行服务发现,服务发现分为全量发现与增量发现。增量更新维持一个watch goroutine,监视etcd的变化,如有新的服务变化,更新peeker缓存。

GRPC使用

Server层进行grpc.Server创建,实现了Get/Set/Delete方法。

Group缓存层当本地缓存未命中时,会调用PickPeer,获取远程客户端发起gRPC调用。

对于Peer节点层,PickPeer会使用一致性哈希选择返回对应的client,方便对其进行RPC调用。

Group设计
复制代码
// Group 是一个缓存命名空间
type Group struct {
    name       string
    getter     Getter
    mainCache  *Cache                //缓存空间
    peers      PeerPicker            //选择器
    loader     *singleflight.Group    //单飞设计
    expiration time.Duration // 缓存过期时间,0表示永不过期
    closed     int32         // 原子变量,标记组是否已关闭
    stats      groupStats    // 统计信息
}

// groupStats 保存组的统计信息
type groupStats struct {
    loads        int64 // 加载次数
    localHits    int64 // 本地缓存命中次数
    localMisses  int64 // 本地缓存未命中次数
    peerHits     int64 // 从对等节点获取成功次数
    peerMisses   int64 // 从对等节点获取失败次数
    loaderHits   int64 // 从加载器获取成功次数
    loaderErrors int64 // 从加载器获取失败次数
    loadDuration int64 // 加载总耗时(纳秒)
}
相关推荐
山楂树の7 小时前
H.265 (HEVC) 视频解码转逐帧图像 完整实现方案
学习·音视频·h.265
星幻元宇VR7 小时前
VR观景台推动安全科普走向沉浸体验
科技·学习·安全·vr·虚拟现实
十安_数学好题速析7 小时前
【多选】成比之道:巧解三角形中比例综合
笔记·学习·高考
嵌入式小企鹅7 小时前
RISC-V车规专委会成立、AI模型集中开源、半导体产能加速爬坡
人工智能·学习·ai·程序员·算力·risc-v·半导体
我想我不够好。7 小时前
消防监控学习 4.30 1.5hour
学习
全栈工程师修炼指南7 小时前
Moodle | ‌开源学习管理系统简体中文包安装配置
学习·开源
冷小鱼7 小时前
Valkey 深度剖析:Redis 最佳平替的技术全景
数据库·redis·缓存·valkey
努力努力再努力FFF7 小时前
运维工程师想学习AI来提升系统自动化水平,该怎么切入?
运维·人工智能·学习
木木_王7 小时前
嵌入式Linux学习 | 数据结构(Day06)全解:线性表 + 栈队列 + 静态库 / 动态库(原理 + 代码 + 编译实战 + 易错点)
linux·数据结构·笔记·学习