大数据量的存储,主要是清理和分箱。

应对大数据量,包括数据访问,方案一是清理,二是分类。

清理就是定期对数据进行清理和归档。

分类一是根据操作做读写分离。二是做水平划分(分片)。三是做垂直划分,比如微服务的库拆分,还有根据不同的场景选择合理的存储方式。

搜索服务使用ES,日志服务使用MongoDb,业务数据使用Mysql,缓存数据使用Redis和Guava。


微服务框架中数据库的选择

一是按照存储的数据对象划分。

业务数据存放到关系数据库,比如mysql,postsql。资金允许可以用oracle。存储引擎用InnoDB,提供具有提交、回滚和崩溃恢复能力的事务安全存储引擎。

缓存数据用redis。

大数据量的基础数据用MongoDB,比如文章评论。注意MongoDB中一个文档最大16M。

日志数据用ES。全文搜索的业务需求用ES,比如文章(按照标题、发布用户、发布时间、文章内容等)搜索。

二是按照需求来划分。

如果需要做全文搜索,用ES。

如果是范式搜索和增删改查,用关系数据库。

如果是文章评论,而且一个文档小于16M,用MongoDB。

 

去中心化的数据管理,每一个微服务都有自己的数据库。优点在于不同的服务可以选择适合自身业务的数据,比如订单服务用mysql,评论服务可以用MongoDB,商品搜索服务可以用ES。缺点是事务的问题。目前的解决方案是最终一致性。