资讯专栏INFORMATION COLUMN

读写分离之Amoeba

jokester / 2173人阅读

摘要:具有负载均衡高可用性过滤读写分离可路由相关的到目标数据库可并发请求多台数据库合并结果。通过你能够完成多数据源的高可用负载均衡数据切片的功能,目前已在很多企业的生产线上面使用。

相信初创公司,刚开始的时候,一般都是单机数据库。然而数据量上来了,你就不来不考虑数据库集群了。
一般的话,读都会比写多,差不多8:2的比例,具体业务具体不同。
这里就介绍下Amoeba(变形虫)。
Amoeba是什么呢?
Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用。
当然Amoeba也有不利的地方,所以当你设计架构的时候,应该把这些因素考虑进去。

1.目前还不支持事务;
2.暂时不支持存储过程,官方说近期会支持;
3.不适合从Amoeba导数据的场景或者对大数据量查询的query并不合适,比如一次请求返回10w以上甚至更多数据的场合;
4.暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致。

若实际项目中所需要的功能正式Amoeba的短板,建议使用Mysql Proxy作为中间件,或者在应用层通过程序控制数据源,手动实现数据库读写分离。
当然Amoeba除了上面的明显的缺点外。在实际使用中,你会遇到很多问题。一个很明显的问题就是:如何解决主从数据库同步延迟问题?
这里我可以提供一些思路:

1、有更新数据后的 读取相关数据动作,都从默认到主库;
2、利用缓存;插入新的数据,会有last_id返回,组装成数据,缓存到前端。读取此 id 数据时,先从缓存取。
...    

当然问题提出来,有很多解决方案,具体业务具体分析。这里只做参考。
关于Amoeba环境的配置,我也不多介绍,网上一大堆教程。 这里我只简单介绍下Amoeba,具体使用,需要自己去摸索。自己不去摸索,永远学不会。
Amoeba使用指南(http://docs.hexnova.com/amoeba/)
其实技术问题都好解决,关键是要提出问题,然后怎样合理设计架构去解决问题。我喜欢研究各种技术解决方案,然后比较之,吸取精华,设计出最佳的解决方案。
针对上面问题,大家可以提出自己的思考。欢迎留言讨论。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17496.html

相关文章

  • Amoeba实现mysql读写分离

    摘要:具有负载均衡高可用性过滤读写分离可路由相关的到目标数据库可并发请求多台数据库合并结果。通过你能够完成多数据源的高可用负载均衡数据切片的功能,目前已在很多企业的生产线上面使用。一、Amoeba介绍1、优点1)这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。2)座落与 Clie...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

jokester

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<