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 // 加载总耗时纳秒 }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2571167.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!