B2C网站中kafka / storm / spark的可能用例

时间:2017-01-11 06:44:08

标签: apache-spark apache-kafka apache-storm

我的公司有一个B2C网站,每天为数千名网络用户提供服务。

它使用PHP,angular.js和MySQL。

我们希望加入新的技术领域,我们看到一些热门趋势是 kafka / spark / storm

我们如何在我们的架构中使用这些技术,我们如何从中受益?

由于

2 个答案:

答案 0 :(得分:1)

迁移到上面描述的新堆栈有一些共同的动机,例如:

  • 解耦:例如,团队1的应用程序A不应影响团队2的应用程序B.您应该能够独立开发和部署这两个应用程序(" A /团队1不需要等待B /团队2,反之亦然"),例如A上的负载激增同样不会对B造成附带损害。Event sourcingCQRS,微服务等等都是有助于解耦的概念。 (对于关于"脱钩的脑筋急转弯"在更广泛的意义上,我建议观看Clojure的创建者和Datomic的联合创始人Rich Hickey的Simple Made Easy
  • 可扩展性,弹性,容错性,“反应性”和“反应性”。 (这与解耦有关):例如,您可能需要多台计算机(通常是几十台)来处理应用程序的传入数据或向客户端提供请求。您的应用程序也应该动态响应增加/减少的容量需求,这是Reactive Manifesto背后的想法之一(参见Lightbend的最近whitepaper,以前是Scala和Akka背后的TypeSafe公司。

在你的情况下,从你已经拥有的东西中迁移是否有意义,当然由你来评估和决定。例如,您当前的设置可能已经足够满足您的需求,可能不是。

但是,如果你想朝着这个方向前进,这里有一些进一步的指示可以帮助你开始:

如果您想了解有关此主题的更多信息,我建议使用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后端的多个实例,以免造成瓶颈。