欢迎来到cep-china!以下文章翻译
https://wso2.com/library/article/2018/01/making-real-time-applications-simpler-with-wso2-stream-processor/
仅供学习参考,未经许可不得转载。
随着快速变化的商业环境,对于任何组织来说即时处理业务事件都是保持竞争力的至关重要的环境。目前,代码、多节点部署、系统快速更新的复杂性都阻碍了企业实现实时流处理的潜力。WSO2通过其下一代分析产品——WSO2流处理引擎使其更加简单,将实时流处理提升到了一个新的水平。
本文讨论了第一代流处理解决方案中遇到的挑战,并进一步介绍了WSO2流处理引擎的实现方式,以及其解决的问题以及它为什么应该成为实时流处理引擎的首选。
简介
在当今竞争激烈的环境中,业务创新的步伐正在加快。为了获得竞争优势并赢得客户,公司需要对新市场趋势、客户行为和环境格局迅速进行反馈和响应,因此具有数据处理并能在短暂的时间内做出决策的能力是非常重要的。流处理(流分析)提供了进行实时决策的能力,是敏捷业务的重要组成部分。
流处理系统允许通过实时接受事件,处理事件,形成摘要、生成报警来了解当前环境。这有助于对各种市场事件快速作出反应,为他们提供竞争优势来保持领先。
为什么建立一个流处理引擎这么困难
第一代流式分析产品(如Apache Storm)旨在帮助开发人员在通用的编程语言中实现流处理管道。这使开发人员可以灵活地实现任何需求。它还提供了以分布式方式部署实现代码的平台,这样他们可以大规模地运行流处理。
然而,第一代流处理引擎存在两个挑战:
1.当今企业有不断变化的要求适应。因此,用传统语言编写流处理逻辑很困难。需求变更会更改相关功能和代码修改,这是一项耗时的任务。
2.为了流畅的运行流应用,市场上现有的大多数流处理引擎需要多到5至6个节点来设置生产环境。这是一个复杂且不便于维护的过程。
为什么WSO2流处理使得流处理更加简单
WSO2目标就是解决快速开发、快速需求变更带来的挑战。我们尽可能的把控制权交给业务员用户,来帮助他们独立的微调他们的系统,例如管理一些规则,从而通过无缝的敏捷流程优化日常业务运营。
WSO2流处理引擎通过多种传输方式来收集多种消息格式的事件。它使用流式 SQL来处理数据流、检测复杂事件模式并使用机器学习模型进行预测。它还可以即时生成处理的结果并作为警报进行通知,并通过实时交互多维度展现的Dashboard对其进行可视化。
WSO2通过仅以2个节点部署,降低了部署的复杂程度,并提供了高可用性的流处理来使得企业更具有竞争性。
WSO2流处理引擎是一个轻量级、开源、高性能的流处理平台,其能够支撑流式SQL查询,以便支持实时抓取、分析、处理和操作。这有助于实时的、智能的、洞察业务和数据的产品,凭借WSO2流处理引擎的简单部署来适应快速变化的能力,企业现在可以更快的进入市场并获得更高的投资回报率。
WSO2流处理引擎以三种方式简化了流处理应用的生命周期:
1.快速部署
开发者现在可以更快地构建可靠且高性能的流应用程序。这是通过Siddhi流处理引擎和复杂事件处理引擎实现的,该引擎是WSO2 流处理的核心。它还包括:
a.易于使用流式 SQL语言,因为开发者已经非常熟悉SQL语言及数据库
b.通过Siddhi实现流处理运算操作的强大工具包,例如过滤、窗口、聚类、摘要、状态机和事件关联。
c.支持50种算法扩展,支持更复杂的用例,例如地理位置处理、自然语言处理、机器学习、异常检测等等。
d.支持处理事件,并通过常用的协议,如HTTP、Email、Kafka、MQTT、JMS、TCP发出警告,并支持文件类型如XML、JSON、文本、二进制和Key-Value的消息。
e.开箱即用的集成了流行的数据存储系统,如RDBMS数据库、Apache Solr、MongoDB、Apache HBase、Hazelcast等。
下面代码段说明了如何计算每个cookie生产线上每个事件到达时每个小时生产总量,并在过去30分钟内生产总量降低5%以下发出报警。
为了开发者使用起来更简单,Stream Processing Studio具有自动编译,语法高亮,并在创建流应用程序时提供集成的文档帮助。当开发者开发程序时,通过提供随机数、CSV、数据库数据回放的方式来支持模拟。同时提供了调试功能,以便帮助开发人员在开发期间发生逻辑错误时进行调试。
2.简易部署
应用生命周期最重要的一个方面就是部署。WSO2仅需要2个节点即可作为流处理所需要的最少节点数,因此部署变得非常简单。因为生产部署至少需要两个节点才能保证高可用性。然而,这种简化的部署方式并不能以牺牲性能为代价。为了确保达到最好的性能,WSO2嵌入了Siddhi流处理引擎。这样,在JVM内每秒能够处理超过2M个事件,在网络情况下支持每秒900K个事件支持简单的流式查询。对于复杂的事件处理场景,它可以轻松地处理每秒超过100K个事件。
当然,在物联网分析或设备监控等场景中,有一些用力超出了每秒100K事件的基准测试。对于这样的用例,可以使用Apache Kafka将多个流处理节点连接到一个集群中,这样,WSO2流处理提供了一个平台可以让你实现低延迟、零宕机的事件处理,每天处理事件超过30亿。
由于流处理系统是有状态的,传统的流处理系统强制开发者重做应用以实现可伸缩性。为了解决这个问题,WSO2流处理可以智能的决定是否以扩展的方式进行部署。对于熟悉系统并希望获取控制扩展的用户,他们可以对Siddhi应用进行注释,以便提供扩展的一些更加简洁的信息而无需重写应用程序。
DevOps遇到的一个挑战就是在一些为了新功能或修正bug而进行的升级系统时必须修改一些配置,通过使用WSO2更新管理(WUM)和WSO2流处理的单一配置文件就可以解决这个问题,需要做的就是使用WUM更新包并替换单个配置文件。
分布式系统本质上容易出现故障,WSO2流处理引擎也不例外。当节点加入或离开集群,就容易发生自动恢复或重新部署的逻辑问题。如果没有适当的集群概览并了解细节,DevOps将无法隔离出现问题的组件并采取主动措施。系统的可由Dashboard进行观察,Dashboard不仅监视其JVM运行状况,还通过深入分析部署的每一个查询元素的性能来监视流处理节点。
3.业务人员自主控制与数据全知
业务员人员讨厌提出需求变更并等待着开发人员交付解决这些问题。为了解决这个痛点,WSO2流处理有效的促进了协作,构建需求变更的开发人员可以通过预先达成共识的配置、参数、简单条件作为约束,允许业务员用户修改业务逻辑。这样,开发人员和业务员经历的生活变得更加简单,因为现在他们的系统可以由业务经理直接访问并自己更改执行逻辑,而不需要等待漫长的交付。通过业务用户配置规则时自动部署托管规则,从而将开发简洁性提升到新水平。
一个分析系统如果不能多维度展现分析内容,则是不完整的。WSO2流处理包含了一个可自定义的Dashboard,允许业务员用户编写自己的的视图。它还配备了一个生成向导帮助他们构建自己的图标,以便更好的帮助他们了解数据。在访问数据时,所有的组织机构都有自己的隐私规则,WSO2的Dashboard强制要求基于角色权限来访问dashboard。
不同的组织结构对于数据可视化有着自己的偏好,也需要访问原始数据来与他们已有的系统进行深度的融合。WSO2流处理提供丰富的REST API构建方式来支持开箱即用的数据和系统集成。
让我们开始吧!
使用WSO2流处理引擎,您可以在不到10分钟的时间内开始使用并创建实时流应用程序。请参阅快速入门指南以开始使用。
WSO2流处理器可以更快的构建复杂的、企业级的流处理分析解决方案,以及轻松的部署管理。有关更多的详细信息,或尝试其他功能,请尝试教程。