作家
登录

假如让你来设计数据库中间件

作者: 来源: 2017-11-30 11:19:18 阅读 我要评论

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了


13岁尾负责数据库中心件设计时的设计文档,拿出来和大年夜家分享:

  • 可以懂得下数据库中心件技巧
  • 可以懂得下架构师体系设计的思路

一、总体目标

二、实现的功能

上述目标比拟较较宽泛,具体来说,数据库中心层须要实现以下功能。

(1)同一接入人口

  1. db1.58.com:3306 
  2.  
  3. db2.58.com:3306 
  4.  
  5. im.58.com:3306 
  6.  
  7. jiaoyou.58.com:3306 

而只有

  1. db.58.com:3306 

所有的营业线,对db的拜访,都只有一小我口,由数据库中心层来进行权限验证,由中心件来路由请求,这是一种完美的情况。

当然,同一一个总人口目标有点宏大年夜,可以循序渐进,先各营业线同一读写拜访人口,故调和的目标可所以,大年夜今今后,不再有

  1. im.read.db1.58.com:3306 
  2.  
  3. im.read.db2.58.com:3306 
  4.  
  5. im.write.db.58.com:3306 

而只有

  1. im.58.com:3306 

im营业对db的拜访,同一到一小我口上来了,由中心层来对请求进行智能路由。

更简化的,甚至可以初期同一个营业线的db读写都纰谬营业线透明,数据库中心层只做简单的请求转发,先初步的把数据库拜访人口收拢到数据库中心层来,为后续的同一,再同一打下基本。

ROAD-MAP筹划如下:

  • 营业耳目口同一(中转请求)
  • 营业耳目口同一(智能路由)
  • 全局人口同一

(2)保持拜访接口

分为两种情况:

上述组件可循序渐进,慢慢添加,故一期须要实现的组件及架构图为:

本来db的拜访方法重要有以上三种:

  • 手工用mysql客户端连mysql,直连数据库履行敕令
  •  java应用jdbc连接数据库
  • c/c++应用libmysqlclient.a来对mysql进行拜访

所谓保持拜访接口,是指上游对数据库的拜访接口完全不消变,中心件办事对上游来说,就是数据库。

因为SQL协定是异常复杂的,在db的客户端与办事器插入了一个中心层之后,不必定能对所有的SQL功能都进行支撑,支撑哪些SQL是须要慎重推敲的。

(3)樊篱读写分别

营业层不须要在存眷读写分别,由中心件来进行读写请求路由。

(4)支撑的分库

58的db的程度扩大,根本是用的分库的方法(分库比较好,很轻易实实际例的扩容),即:

db.table会程度拆分为:

db1.table

既然选择了mysql client server protocol作为营业层恿闼殇层之间的协定,那么中心层必定是作为mysql-server接收上游的请求,作为mysql-client向真正的mysql发送请求的,中心层的┞符体构造如下:

db2.table

db3.table

db4.table

如不雅同一接入人口,大年夜今今后,不再有

假设PARTITION分了0和1奇偶两个分区,则sql应当分别被改写为:

如许的话,dao层对于table就只有一个table实例了,比较便利。

根据前期与各营业线同窗的沟通,58在分库上的营业拜访需求为(这个调研的周期比较长,和很多营业线进行了沟通):

  • patition key通俗萌芽
  • patition key上的IN萌芽
  • 非patition key上的萌芽
  • 有限功能的排序+分页萌芽

故对分库上的分布式SQL功能,数据库中心层只须要支撑上上述四项即可。

(5)高可用性的支撑

高可用的支撑又分为两个部分:

第一部分,故障主动发明:下流数据库挂了,可以或许主动发明问题,并报警周知相干人员。

第二部分,故障主动转移:

  • 主库挂了,可以或许主动切换,或者樊篱写请求
  • 大年夜库挂了,可以或许主动主动切换读请求量流量
  • 中心件挂了,主动切换中心件流量,高可用

(6)可运维性的支撑

  • 支撑一些统计数据的┞饭现
  • 支撑一些治理敕令
  • 支撑页面话的运维

三、设计调和

(1)协定与整体架构

如许的话,须要对mysql client server protocol做详尽的研究,懂得:

 1/5    1 2 3 4 5 下一页 尾页

  推荐阅读

  Win10偷笑!Mac重大安全系统漏洞被修复 苹果道歉

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了 昨天我们报道了最新的Mac OS体系出现严重马脚的问题,重要来说就是,你设置的暗码设置形同虚设,输入“root”作为用>>>详细阅读


本文标题:假如让你来设计数据库中间件

地址:http://www.17bianji.com/lsqh/39319.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)