我的公司有一个B2C网站,每天为数千名网络用户提供服务。
它使用PHP,angular.js和MySQL。
我们希望加入新的技术领域,我们看到一些热门趋势是 kafka / spark / storm 。
我们如何在我们的架构中使用这些技术,我们如何从中受益?
由于
答案 0 :(得分:1)
迁移到上面描述的新堆栈有一些共同的动机,例如:
在你的情况下,从你已经拥有的东西中迁移是否有意义,当然由你来评估和决定。例如,您当前的设置可能已经足够满足您的需求,可能不是。
但是,如果你想朝着这个方向前进,这里有一些进一步的指示可以帮助你开始:
The Log: What every software engineer should know about real-time data's unifying abstraction,来自Apache Kafka的创作者之一Jay Kreps
活动采购,微服务。为了给您一些具体的例子,您可以阅读沃尔玛(blog post)等零售商,以及采用这些概念的大型金融公司,如Capital One(来自StrangeLoop 2016的slides/talk)。如果您想阅读所有这些内容的更高级别概述,您可能需要查看Event sourcing, CQRS, stream processing, and Apache Kafka: What's the connection?。一个关键的想法是,通过事件采购,您实际上是在架构层面利用不变性的好处(另一个Rich Hickey谈话,The Value of Values,解释了为什么不变性/价值如此重要)。这意味着您拥有一个不可变的"会计分类账"在您的应用程序中发生的所有事件(例如"客户ABC在时间T&#34时购买物品XYZ;),您可以利用这些事件来重新处理历史数据(例如修复错误)你在生产中发现了),A / B测试(在同一组历史数据上),等等。
另一篇好文章恕我直言The Data Dichotomy: Rethinking the Way We Treat Data and Services,它与上述主题联系在一起,并在概念层面解释了为什么现在很多工程师用卡夫卡等技术重新设计他们的架构火花。正如作者所写,这里的一个动机就是“缩放”这个想法。以人为本,因为与计算机不同,我们的人脑不会double its capacity every 18 months。
如果您想了解有关此主题的更多信息,我建议使用Martin Kleppmann简短且免费的电子书Making Sense of Stream Processing: How can event streams help make your application more scalable, reliable, and maintainable(IIRC it' s约60页)。马丁还撰写了一本较长的书Designing Data Intensive Applications,IIRC计划于2017年3月以最终形式出版;您已经可以通过O' Reilly Early Access获取当前几乎完整的草稿。
答案 1 :(得分:0)
您正在使用的技术,形成Web应用程序堆栈。 而kafka,spark,storm等技术完全不同的目的。所以我将解释每一个用于什么,以及它们如何帮助你。
<强>卡夫卡强> 是一个分布式流媒体平台。在外行人的术语中,它只是一种排队机制。如果您的应用程序具有在群集上运行的某种后端进程。因此,您的PHP后端会将请求数据发送到后端进程。
Apache Spark 嗯,它主要用于大规模数据处理。它还为您提供流媒体功能(小批量流媒体),图形API,ML API。当您想要在群集中处理大量数据时,您应该考虑这一点。
Apache Storm 这是一个分布式实时计算系统。根据我的理解,这为您提供了更好的实时数据流处理能力。
总之,所有这些技术都适用于具有实时处理能力的分布式处理。如果要合并任何这些系统,您的PHP后端可能会充当代表最终用户使用这些系统的中间人。此外,您可能希望拥有PHP后端的多个实例,以免造成瓶颈。