Skip to content
Robert Peng edited this page Mar 25, 2018 · 1 revision

HearthIntellect v1 设计

微服务架构

HearthIntellect 由三个服务组成,服务以 Docker Container 的形式部署。

  • Frontend:Nginx Container,负责接收用户的请求,并 host 用于前端展示的 HTML、CSS、JS 等静态文件。如果接收到用户请求形如 /api/v1/* 的 URL 则将请求转发至 Server Container
  • Server:NodeJS Container,负责利用位于后侧的 MongoDB Container 处理用户对卡牌数据的查询请求
  • MongoDB:MongoDB Container,负责存储卡牌数据并提供搜索功能

除上述服务外,HearthIntellect 还会利用由阿里云提供的 CDN 服务来存储卡牌的牌面图片。

Server API

Server API 严格按照 RESTful 规范来设计。初版 Server API 只包含卡牌 Card 资源,且只支持查询操作:

  • GET /cards:检索卡牌。需要考虑翻页
  • GET /cards/:id:获取指定卡牌详细信息

在实现上述功能后可额外增加卡牌搜索 API:

  • GET /search?kw=123:按用户指定关键字搜索卡牌文本并返回

卡牌数据

可直接从 HearthstoneJSON.com 获取卡牌的数据,并导入到 MongoDB。初版不考虑 i18n 的问题,只考虑英文。

为了提供卡牌搜索的功能,可在相关文本字段上创建 MongoDB Text 索引,并利用 $text 查询来进行文本搜索。

卡牌图片需要自行编写爬虫程序从 HearthHead.com 上获取。

Clone this wiki locally