微服务化的数据库设计与读写分离
数据库永远是应用最关键的一环,同时越到高并发阶段,数据库往往成为瓶颈,如果数据库表和索引不在一开始就进行良好的设计,则后期数据库横向扩展,分库分表都会遇到困难。 对于互联网公司来讲,一般都会使用Mysql数据库。 一、数据库的总体架构 我们首先来看Mysql数据的总体架构如下: 这是一张非常经典的Mysql的系统架构图,通过这个图可以看出Mysql各个部分的功能。 当客户端连接数据库的时候,首先面对的是连接池,用于管理用户的连接,并会做一定的认证和鉴权。 连接了数据库之后,客户端会发送SQL语句,而SQL接口这个模块就是来接受用户的SQL语句的。 SQL语句往往需要符合严格的语法规则,因而要有语法解析器对语句进行语法解析,解析语法的原理如同编译原理中的学到的那样,从语句变成语法树。 对于用户属于的查询可以进行优化,从而可以选择最快的查询路径,这就是优化器的作用。 为了加快查询速度,会有查询缓存模块,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。 上面的所有的组件都是数据库服务层,接下来是数据库引擎层,当前主流的数据库引擎就是InnoDB。 对于数据库有任何的修改,...