微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 在删除服务器A中的数据的同时,将数据从服务器A连续移动到服务器B?

我正在开发一个广告服务器,预计每天处理广告展示次数/十亿次点击次数.

我面临的最困难的挑战是将数据从一台服务器移动到另一台服务器.

基本上流程是这样的:

>多个前置负载均衡器将流量(http负载均衡)分配给称为流量处理器节点的多个服务器.
>这些流量处理程序节点作业是将点击日志存储在mysql表中(数据,如地理位置,设备,商品ID,用户ID等),然后将流量重定向到商品登录页面.
>每分钟cron作业在所有流量节点中运行,这些节点将所有点击日志传输到报告服务器(完成所有报告生成的服务器),每分钟10000行,然后在确认数据成功接收后删除数据由报告服务器.报告服务器使用clickhouse数据库引擎

我需要从流量节点替换MysqL数据库引擎,因为我面临很多MySQL问题.在沉重的插入物之间然后重的删除它变得缓慢.此外,数据通过cron作业传输,因此平均延迟时间为2分钟.

我不能在这些服务器中使用clickhouse,因为Yandex clickhouse还不支持更新和删除,并且点击日志应该多次更新(访问时发生了多少事件)

我正在考虑kakfa,但我不知道如何实现单向数据传输,然后删除数据.

也许我的整个方法都是错的.我非常感谢任何专家指导正确的方向.

解决方法:

我不认为你的方法是错的,但我没有太多的信息.您的问题很明确,但与系统的复杂性相比,这个空间有限.

绝对不应该考虑使用Clickhouse for OLTP.不仅因为(还)支持DELETE和UPDATE,还因为此数据库旨在为分析提供良好的性能.它缺少或多或少的优化OLTP工作负载所需的一切.

卡夫卡是个好主意?也许.但是,例如,你不会有交易.

我建议先尝试优化你的MysqL环境.一些非常通用的观点 – 抱歉,如果它们听起来很明显,但当然我不知道你的技能杠杆:

>调整配置的速度,据我所知,你可以放弃一些一致性.
>在没有冲突风险的地方使用READ UNCOMMITTED.这种隔离级别的好处被大大低估了.
>不要运行多个DELETE,而是考虑按时间对表进行分区,并定期删除最旧的分区.这要快得多.
>考虑切换到针对写密集型工作负载优化的存储引擎,即MyRocks或TokuDB.
>考虑使用多个从站进行扩展读取.
>考虑使用多个主机进行缩放写入.
>如果需要,甚至可以以地理方式分发这些服务器.
>不要考虑galera或InnoDB Cluster,因为写入不能真正扩展.

希望这些提示很有用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐