微服务中mysql数据库的动态扩容思考
(2018-12-12 19:37:41)
标签:
it |
分类: 小记 |
1 背景
目前很多大公司已经都走上了微服务的道路,因为业务、技术、维护等多方面的考虑都会选择微服务,微服务在利用上也大部分都会与容器相结合。
那么服务前端和后端进行前后端分离后,数据库怎么做到动态扩容以及数据汇总呢
2 mysql的思考
mysql目前大部分微服务采用是分库分表,只是满足了高可用和分布式,但是无法做到动态扩容以及数据汇总,目前了解到常用的有两种解决方案。
2.1 中间数据库
中间数据库至在业务层与底层数据接入一个三方数据库,类似于redis,ES,solr等内存数据库,这样做的好处有以下几点:
1)内存数据库可以保证页面查询效率,具体选择哪种内存数据库可以根据自身业务考虑
2)不改动底层数据的情况下将增删改查等操作前置,减少直接对生产库的操作错误,减少造成生产库的负荷
3)满足多维度统计计算等需求,可以减少在数据库中计算缓存中间表造成数据冗余
4)从维护方面减少了mysql相关维护,提高了自动化运维的便捷性
2.2 分库分表 多库合一
分库分表,多库合一指的是数据库根据不同业务模块进行分库分表,再根据mysql自身的配置,实现多从一主,将各个业务的数据库作为从库通过binlog方式复制到主库,
主库作为共同业务或者全局查询来使用,从库作为各个业务模块使用
3 docker的结合
目前常用的容器docker已经很成熟的应用在各大微服务场景中,编排工具常见的有docker自身的集群管理swarm和大名鼎鼎的k8s,那么如何做到动态扩容呢