我们在遗留系统中有一个写入密集型表(在AWS RDS MySQL上),我们希望将该表中的每个写入事件(插入或更新)流式传输到kinesis。我们的想法是创建一个管道来预热缓存并更新搜索引擎。
目前我们使用rudimentar轮询架构,基本上使用SQL,但最理想的是使用推送架构直接从事务日志中读取事件。
有人试过吗?任何建议的架构?
答案 0 :(得分:10)
在Oracle中,我已与一些客户合作过。似乎LinkedIn还使用了很多将数据从数据库传输到其他地方的技术。他们创建了一个名为Databus的平台,以不可知的方式实现这一目标 - https://github.com/linkedin/databus/wiki/Databus-for-MySQL。
Github中有一个公共项目,遵循LinkedIn原则,已经将来自Mysql的binlog流式传输到Kinesis Streams - https://github.com/cmerrick/plainview
如果你想深入了解LinkedIn方法的细节,可以找到一个非常好的(并且广泛的)博客文章 - https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying。
最后但并非最不重要的是,Yelp也是如此,但是使用Kafka - https://engineeringblog.yelp.com/2016/08/streaming-mysql-tables-in-real-time-to-kafka.html
为了简洁起见,没有深入了解Kinesis Streams的基础知识,如果我们将Kinesis Streams带入游戏,我不明白为什么它不起作用。事实上,它是为此而构建的 - 您的数据库事务日志是一个事件流。借用Amazon Web Services公共文档的摘录: Amazon Kinesis Streams允许实时数据处理。借助Amazon Kinesis Streams,您可以在生成数据时不断收集数据,并及时响应有关业务和运营的关键信息。
希望这有帮助。
答案 1 :(得分:1)
aws DMS服务提供了从SQL db到kinesis的数据迁移。