一个用户可以发布多个帖子,一个帖子只对应一个发布者。
任何脱离业务的架构设计都是耍流氓,先来看看帖子中心对应的业务需求。
帖子中心,是一个提供帖子发布,修改,删除,查看,搜索的服务。
帖子中心,有什么写操作?
- 发布(insert)帖子;
- 修改(update)帖子;
- 删除(delete)帖子;
帖子中心,有什么读操作?
- 通过tid查询(select)帖子实体,单行查询;
- 通过uid查询(select)用户发布过的帖子,列表查询;
- 帖子检索(search),例如通过时间、标题、内容搜索符合条件的帖子;
在数据量较大,并发量较大的时候,架构如何设计?
典型的,通常通过元数据与索引数据分离的架构设计方法。
架构中的几个关键点,如上图所示:
- tiezi-center:帖子服务;
- tiezi-db:提供元数据存储;
- tiezi-search:帖子搜索服务;
- tiezi-index:提供索引数据存储;
- MQ:tiezi-center与tiezi-search通讯媒介,一般不直接使用RPC调用,而是通过MQ对两个子系统解耦。
此时,读需求怎么满足?
tiezi-center和tiezi-search分别满足两类不同的读需求。
如上图所示:
- tid和uid上的查询需求,可以由tiezi-center从元数据读取并返回;
- 其他类检索需求,可以由tiezi-search从索引数据检索并返回;
写需求怎么办呢?