-
Notifications
You must be signed in to change notification settings - Fork 0
System Design v1
Robert Peng edited this page Mar 25, 2018
·
1 revision
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 严格按照 RESTful 规范来设计。初版 Server API 只包含卡牌 Card
资源,且只支持查询操作:
-
GET /cards
:检索卡牌。需要考虑翻页 -
GET /cards/:id
:获取指定卡牌详细信息
在实现上述功能后可额外增加卡牌搜索 API:
-
GET /search?kw=123
:按用户指定关键字搜索卡牌文本并返回
可直接从 HearthstoneJSON.com 获取卡牌的数据,并导入到 MongoDB。初版不考虑 i18n 的问题,只考虑英文。
为了提供卡牌搜索的功能,可在相关文本字段上创建 MongoDB Text 索引,并利用 $text
查询来进行文本搜索。
卡牌图片需要自行编写爬虫程序从 HearthHead.com 上获取。