Categories
technology|技术 中文

以数据库为中心进行架构设计

互联网项目,除了数据库组建,还经常会用到Cache(如:redis or memcache),MQ(如:kafka or RocketMQ)。无论有多少个组件,一定要以数据库为中心,提供数据访问。所有的Cache数据,都是数据库内数据的拷贝。

核心就两条:

  • 1.以数据库的数据为准
  • 2.如果数据跟数据库不一样,参考第一条

切忌:有时候写数据库,有时候写Cache,有的以db为准,有的读Cache为准。后果是:会经常性出现数据不一致。

程序读取数据的规则:

  • 1.先从Cache读取,如果存在,直接返回;如果不存在,就从db中读取,并写入Cache。
  • 2.如果数据更新,通常是直接更新数据库,然后让缓存失效(也可以直接更新Cache)
  • 3.极少数业务需求(例如:秒杀活动)时间短,并发量极大,可以直接读写Cache,然后等活动结束再写回db。

内部项目的数据分享策略:通过从库+视图+权限控制,提供有限的数据访问权限。从库是独立于主业务之外的从库,只提供内部其它项目使用,所以不会影响主业务的性能;用视图可以控制哪些字段可以被访问,也方便对数据进行过滤和排序。

对外提供数据的策略:通过Rest API+权限控制提供数据访问。外部应用通过参数请求API获取需要的数据,加上白名单机制,以及鉴权规则来对访问进行记录和监控。

如果担心数据库的性能问题,请参考:

支撑10亿用户的技术方案(思路篇)

支撑10亿用户的技术方案(细节篇)

Leave a Reply

Your email address will not be published.