分布式Mysql

Contents
  • 常说的方向有水平拆分,垂直拆分;水平扩展,垂直扩展
  • 强调的是对于个体性能的优化
  • 就是更换性能更强的服务器
  • 在需求方面,设计一张表,即使满足了三范式,也可能分成经常使用的字段和不经常使用的字段,不经常使用的字段可以单独拿出来做一张附属表;
  • 对功能模块的划分,在表层面,比如,可以分成用户表,商品表之类的;这是在建表的时候就应该考虑好的东西;
  • 在数据库层面,创建独立的用户库,商品库;这是将功能进行细化。
  • 强调的是对于资源的累计
  • 就是添加更多的服务器
  • 在表层面,对于一个有较好设计的表,在达到一定的数据量后,可以实行分区,分表操作;
  • 在数据库层面,可以实行分库操作;
  • 这些扩展的东西的业务功能是与原先一致的,字段是完全的一致的
  • 先是合理地设计每张表,做好查询缓存;
  • 然后是主从数据库,读写分离,一主多从,主库负责写,从库负责读;
  • 之后才是垂直方向,再是水平方向;
  • 多次查询,取出所有数据,再进行查询排序等操作
  • Twitter 的 Snowflake(又名“雪花算法”),这种方案把64-bit分别划分成多段,分开来标示机器、时间等
  • Redis生成ID,这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。可以用Redis的原子操作 INCR和INCRBY来实现。
  • zookeeper生成唯一ID,zookeeper主要通过其znode数据版本来生成序列号,可以生成32位和64位的数据版本号,客户端可以使用这个版本号来作为唯一的序列号。
  • 美团分布式ID生成开源项目:Leaf
coffee
评论
  • 按正序
  • 按倒序
  • 按热度
来发评论吧~
Powered by Waline v2.15.8