背景

最近将广告下发从php迁移到了go,以微博为例,请求qps最大可能能超过1k,如果算上其他的几个渠道,qps峰值可以超过3k.

每个请求基本涉及1次数据库插入,3k/s的速度写入我们线上的polardb,基本就把机器挂了。

针对这个问题,虽然已经根据业务特点,采用了异步写入+批量写入的优化方式,把对数据库的写入操作qps减少了N倍(N=每批量的写入数量)。

当时出方案时,考虑了异步写入的弊端,就是异步写入总是有可能存在不一致的(回复写入成功,但是程序崩溃了)。 就是说如果业务不允许异步写入,那要怎么办呢,如何可以保证100%的一致性呢。

今天我在看一篇博客时(附录2),看到了nosql相关的场景描述,发现这也是一个方案(我这里特指mongodb). 在我遇到的场景中:

nosql的优势:写入数据很快(待确认),存储的数据库很大()

nosql的劣势:查询语法学习成本,公司未使用mongodb需要新购买和维护

附录

1.Sql Or NoSql,看完这一篇你就懂了

2.搞定系统设计 01:从 0 到百万用户的系统:下面这几个场景更适合使用 NoSQL: 服务需要超低延迟。 服务的数据是非结构化的。 只需要序列化反序列化数据(Json/XML/YAML) 需要存储大量数据。

原创文章转载请注明出处: 什么时候用NoSql