CacheService
词汇表
英文 | 中文 | 备注 |
---|---|---|
Front Service | 前端服务 | 前端是相对而言的,这里是指调用搜索服务的一方 |
Data Provider | 数据提供者 | 这里是搜索引擎提供数据 |
Cache | 缓存 | 模块主要涉及的部分 |
一、概述
承担的需求(主要秘密)
缓存模块主要负责将搜索引擎认为包含高频关键字的数据转换后存储到缓存中,并提供给前端一个检测数据是否在缓存中的检测接口和一个高效可用的搜索接口。
可能会修改的实现(次要秘密)
- 数据转换算法
- 缓存检测算法
- 缓存存储算法
- 缓存访问算法
涉及的相关质量属性
- R1 数据可靠性
- R6 搜索易用性
- R9 保证存取效率
设计概述
本模块负责存储和提供缓存的商品数据,根据业务需求,着重关注在高并发情况下的稳定性,以及对自身的可扩展性
- 保证稳定性的主要手段是:当请求进入时,首先交给分流器处理,如果当前的负载比较高,分流器就会讲请求分发到注册的从属服务器来处理
- 在高并发的情况下,从属服务器的查询分发策略对整体性能的影响尤为重要,故分流器在查询从属服务器的过程中需要应用不同的查询方式,同时为了保证查询方式的可扩展性,故以策略模式来构建查询方式的维护类
角色
CacheServer: 所有外部请求需要统一由缓存服务器处理和转发
二、类的设计
2.2 类描述
Core 类
类方法 | 描述 |
---|---|
public void init() | 初始化静态资源服务器环境 前置条件:无 后置条件:无 |
StaticHandler 类
类方法 | 描述 |
---|---|
public void handleReq(String url) | 根据传入的url来处理返回的资源 前置条件:无 后置条件:无 |
Diverter 类
类方法 | 描述 |
---|---|
public void forwardReq(request) | 将请求转发到其他的节点中 前置条件:无 后置条件:无 |
Strategy 类
类方法 | 描述 |
---|---|
public void find() | 查找最合适转发的节点 前置条件:无 后置条件:无 |
SequenceStrategy类
类方法 | 描述 |
---|---|
public void find() | 在空闲列表中顺序查找合适转发的节点 前置条件:无 后置条件:无 |
WeightStrategy类
类方法 | 描述 |
---|---|
public void find() | 在空闲列表中按照权重策略来查找合适转发的节点 前置条件:无 后置条件:无 |
Node 类
记录节点的元数据的数据结构
三、重要协作
四、设计模式应用
策略模式
使用策略模式来维护节点查找策略,可以保证在不同的情况下切换到不同的策略,同时保证了策略种类的可扩展性