数据库读写分离方案,实现高性能数据库集群( 二 )


如何优雅使用读写分离我们现在使用了数据库读写分离的机制,但是我们代码该怎么去友好的去访问数据库呢?以前我们一个数据源配置就可以了,现在有好多个数据源了,代码里既要区分哪个地方使用写数据库的数据源,哪个地方需要使用读数据的数据源 。当然,肯定是有办法的,业界大佬们都早于我们遇到了这些问题,下面我会分享出两种方案:
1,程序代码嵌入
代码嵌入,是指通过在我们的代码中开发出数据库访问中间层,由这个数据库访问中间层去访问不同的数据源,以实现读写分离和数据源的管理 。现在推荐使用淘宝开源的TDDL(Taobao Distributed Data Layer),使用方便,直接集成到我们代码就可以了,它自己管理读写分离和数据库配置 。

数据库读写分离方案,实现高性能数据库集群

文章插图
 
特点是:
  • 实现简单,可以根据自己业务进行定制化开发
  • 语言不同,就得开发不同语言版本的数据库访问层
2,部署独立代理层
部署代理层是指,在我们的业务服务器和数据库直接引入数据访问代理层,并不用自己写代码 。现在为代表的开源中间件有阿里的MyCat、360的Atlas、美团的DBProxy等 。这些都是使用标准的MySql通信协议 。
数据库读写分离方案,实现高性能数据库集群

文章插图
 
特点:
  • 不用自己编写多余代码,使用方便 。
  • 支持对语言
  • sql语句会跨两层网络,性能稍微低一点 。
建议,在自己公司没有比较成熟的中间件团队的话就用程序代码封装的方案,虽然写代码麻烦点,但是自己可以把控;要是公司有成熟中间件团队,就尽量考虑代理层部署的方案,因为需要有个团队要研究和长期维护这个代理层,才能确保业务正常发展,现在我们公司大部分都用的是代理层方案,是有个专门团队来维护 。
总结,今天讲到了当我们读多写少的场景下,采取数据库读写分离的方式来分摊大流量 。从而引出了主从复制,并且对主从复制的延迟进行了优化方案的讲解和给出来相应的建议,希望对大家有所帮助 。如果大家喜欢就关注我,让我们一起聊公司的各种技术,共同学习共同进步,有什么想说的是想学的评论区里说啊,大家都可以给方案,谢谢

【数据库读写分离方案,实现高性能数据库集群】


推荐阅读