《架构师训练营》第五周 命题作业
一、基本思路
缓存服务器节点(CacheServerNode),用来模拟从缓存服务器获取缓存数据的行为。
缓存服务器集群(CacheServerNodeGroup),用来创建和管理服务器节点。同时这个服务器集群类组合了负载均衡器的功能,用来命中服务器节点。考虑到真实场景中方便扩容、缩容,这里使用环形单项链表存储缓存服务器节点。
负载均衡器(LoadBalancer),考虑到命中节点的算法会对系统的性能影响很大,这里把负载均衡器设计为一个接口,支持替换成不同的负载均衡算法的实现。
二、具体代码实现(Go 语言)
2.1 缓存服务器节点(CacheServerNode)
为了模拟真是服务器的场景,缓存服务器启动后会在创建一个协程和一个用于和协程通信的 channel。在协程内循环阻塞等待从 channel 读取数据然后记录到计数器上面,直到 channel 关闭,协程才会结束循环然后退出。节点提供了以下功能:
启动、停止缓存服务器节点
从缓存服务器节点获取数据(计数器加1)
2.2 负载均衡器接口(LoadBalancer)
2.3 缓存服务器集群(CacheServerNodeGroup)
缓存服务器集群提供了以下功能:
启动、停止集群中的所有服务器
读取数据(通过负载均衡器命中的缓存服务器节点读取)
计算数据分布标准差
2.4 客户端代码
三、运行结果
版权声明: 本文为 InfoQ 作者【黑】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b6987532b86beb1f56d08f15】。未经作者许可,禁止转载。
评论