Skip to main content

Orchsym Studio概述

什么是Orchsym Studio?

简单地说,Orchsym Studio就是为了实现系统间数据流的自动化而构建的。而术语“数据流” 在各种环境中含义不同,我们在这里使用它来表示系统之间自动化和托管的信息流。因为企业有多个系统,其中一些系统产生数据,一些系统消费数据,行业内已经讨论并广泛阐述了这之间会出现的问题和解决方案及模式。企业集成模式 Enterprise Integration Patterns eip 里面提供了全面的阐述.

数据流的一些高级别挑战包括:

系统故障
网络故障,磁盘故障,软件崩溃,人们犯错误。

数据访问超出了消耗的能力
有时,给定的数据源可能超过处理或交付链的某些部分- 它只需要破坏一个薄弱环节就能产生问题。

数据的边界条件仅仅是摆设
你总是会得到太大,太小,太快,太慢,损坏,错误或格式错误的数据。

组织要求快速响应变化
组织的优先事项突然发生变化。必须快速地启用新流程和更改现有流程。

系统以不同的速率发展
不同系统使用的协议和格式是多变的,而不管其他的系统如何对接。数据流需要连接的本质上是分布式的系统,这些系统间是松散的,或着根本没有设计为能在一起工作。

合规与安全
法律,法规和政策的变化。业务协议的变化。系统到系统和系统到用户的交互必须是安全的,可信的,可追责的。

生产中持续改进
通常不可能在实验室中复制生产环境。

多年来,数据流一直是架构中难以避免的痛点之一。虽然现在有许多活跃且快速发展的技术,包括面向服务的体系结构soa,API的兴起api api2,物联网iot,以及大数据bigdata等使数据流更有趣和助力企业的成功,而且合规性,隐私性和安全性规范也在不断提高。即便如此,在所有这些新概念中,数据流的模式和需求也仍然和以前大致相同。而复杂度变高,变化频度变快,处理大规模特殊情况却变得越来越常见。Orchsym Studio旨在帮助解决这些现代数据流的挑战。

Orchsym Studio的核心概念

Orchsym Studio的基本设计理念的核心概念与基于流程的编程fbp 的主要思想密切相关。以下是一些主要的Orchsym Studio概念以及它们如何映射到FBP:

Orchsym Studio术语FBP术语描述

流文件

信息包

流文件表示在系统中移动的每个对象,对于每个对象,Orchsym Studio跟踪键/值对属性字符串的映射及其相关的零个或多个字节的内容。

组件

黑盒

组件是执行实际工作的。在“eip”术语中,组件对系统之间的数据路由,转换或中介进行某种组合。组件可以访问给定流文件及其内容流的属性。组件可以在给定的工作单元中对零个或多个流文件进行操作,并提交该工作或回滚。

连接

有界缓冲区

连接提供组件之间的实际链接. 它们充当队列并允许各种进程以不同的速率进行交互。这些队列可以动态优先化,并且可以在加载时设置上限,从而实现回压功能。

流控制器

调度程序

流控制器负责维护流程如何连接和管理所有流程使用的线程及其分配。流控制器充当代理的角色,方便流文件和组件之间的进行数据的交互。

模块

子网

模块是一组特定的组件及其连接,可以通过输入端口接收数据并通过输出端口输出数据。

这种设计模式也类似于 seda(分级式事件驱动架构),这种设计模式其提供了许多优点,帮助Orchsym Studio成为构建强大且可扩展的数据流的非常有效的平台。其中一些好处包括:

  • 适用于组件有向图的可视化创建和管理

  • 本质上是异步的,即使在处理流量波动时也允许非常高的吞吐量和自然缓冲

  • 提供高度并发的模型,而开发人员不必担心并发的典型复杂性

  • 促进内聚和松散耦合组件的开发,然后可以在其他环境中重复使用并促进可测试单元

  • 资源受限的连接使得背压和压力释放等关键功能非常自然和直观

  • 错误处理变得像快乐路径一样自然而不是粗粒度的全部捕获

  • 数据进入和退出系统的点以及它如何流过的点很容易理解和容易跟踪

Orchsym Studio架构

NiFi Architecture Diagram

Orchsym Studio在主机操作系统上的JVM内执行。JVM上Orchsym Studio的主要组件如下:

Web 服务器
Web服务器的目的是托管Orchsym Studio基于HTTP的命令和控制API。

流控制器
流控制器引擎是数据操作的大脑。它为扩展程序提供运行的线程,并管理扩展程序何时接收要执行的资源的计划。

扩展
有各种类型的Orchsym Studio扩展,在其他文档中会有描述。这里的关键点是扩展是在JVM中运行和执行的。

流文件仓库
流文件仓库是用于跟踪流程中当前活动的流文件的属性状态,将数据块以一定的时效存储在文件系统中,并根据时效配置,定期清理过期数据。

内容存储库
内容存储库是用于记录数据流内容实际存储的位置。同流文件仓库的数据块一样,数据同样具有时效性,将定期清理过期数据内容。

溯源仓库
溯源仓库是存储一定时间内流程处理数据事件的地方,事件数据可以很方便的被索引和搜索。

Orchsym Studio也能够在集群内运行。

NiFi Cluster Architecture Diagram

在Orchsym Studio 1.0版本中,采用了Zero-Master Clustering范例。Orchsym Studio群集中的每个节点对数据执行相同的任务,但每个节点都在不同的数据集上运行。Apache ZooKeeper选择单个节点作为集群协调器,ZooKeeper自动处理故障转移。所有群集节点都会向群集协调器报告心跳和状态信息。群集协调器负责断开和连接节点。此外,每个群集都有一个主节点,也由ZooKeeper选举。作为DataFlow管理器,您可以通过任何节点的用户界面(UI)与Orchsym Studio群集进行交互. 您所做的任何更改都将复制到群集中的所有节点,同时允许多个入口点。

Orchsym Studio性能特点

Orchsym Studio旨在充分利用底层主机系统的性能上。在CPU和磁盘方面,做到资源的最大化利用。有关其他详细信息,请参阅"管理指南”中的最佳做法和配置提示。

对于IO
根据系统的配置方式,可以预期的吞吐量或延迟会有很大差异。鉴于大多数主要Orchsym Studio子系统都有可插拔的方法,性能取决于实施。但是,对于具体且广泛适用的场景,请考虑开箱即用(out-of-the-box)的默认实现。即持久的保证传递,并使用本地磁盘这样做。保守估计,假设典型服务器中的适度磁盘或RAID卷上的读取/写入速率大约为每秒50 MB 。然后,对于大类数据流的Orchsym Studio需要能够有效地达到每秒100 MB或更高的吞吐量。这是因为预期每个物理分区和添加到Orchsym Studio的内容存储库都会线性增长,这很可能会在流文件存储库和溯源存储库的某个点上出现瓶颈。

对于CPU
流控制器充当引擎,指示特定组件何时被赋予执行线程。编写组件以在执行任务后立即返回线程。可以为流控制器提供一个配置值,指示它维护的各个线程池的可用线程数。理想的线程数取决于主机系统资源的核心数量,系统是否正在运行其他服务,以及流程中处理的性质。对于典型的IO大流量,可以使用大量的线程。

因为RAM
Orchsym Studio存在于JVM中,因此仅限于JVM提供的内存空间。JVM垃圾收集成为限制总实际堆大小以及优化应用程序运行情况的一个非常重要的因素。定期阅读相同内容时,Orchsym Studio作业可能是I / O密集型的。请配置足够大的空间以优化性能。

Orchsym Studio高级功能概述

本节提供了高度抽象的Orchsym Studio基础原理,让您可以了解Orchsym Studio的全局,以及它的一些最有趣的功能。主要功能类别包括流量管理,易用性,安全性,可扩展架构和灵活的扩展模型。

流量管理
保证交付
Orchsym Studio的核心理念是即使在非常高的规模下,保证交付也是必须的。这是通过有效使用专用的持久性预写日志和内容存储库来实现的。它们的设计可以实现非常高的事务速率,有效的负载分散,写入时复制以及发挥传统磁盘读/写的优势。

具有背压和压力释放的数据缓冲
Orchsym Studio支持缓冲所有排队数据,以及在这些队列达到指定限制时提供回压或在数据达到指定阶段时使数据终结(其值已经消失).

优先排队
Orchsym Studio允许设置一个或多个优先级方案,用于如何从队列中检索数据。默认值是最早的优先,也支持数据最新的优先,最大的优先或其他一些自定义优先级方案。

流特定QoS(延迟v吞吐量,损失容忍等).)
在数据流上的一些点,数据是关键的,而且是不容忍有丢失的。有时候又必须在几秒钟内处理和交付任何数据的值。Orchsym Studio可以实现这些问题的细粒度的流配置。

易用性
视觉指挥与控制
数据流可能变得非常复杂。能够可视化这些流并在视觉上表达它们,可以极大地帮助降低复杂性并确定需要简化的区域。Orchsym Studio不仅可以实现数据流的可视化建立,而且做到实时实现。跟’设计和部署’不同,它更像是塑造粘土。如果对数据流进行更改,则更改会立即生效。变更是细粒度的并与受影响的组件隔离。您不需要为了进行某些特定修改而停止整个流程或流程集。

流程模板
数据流往往是高度模式化的,虽然通常有许多不同的方法来解决问题,但是能够分享这些最佳实践有很大帮助。模板允许领域专家构建和发布他们的流程设计,并让其他人受益并协作。

数据溯源
Orchsym Studio自动记录,索引并在对象流经系统时提供溯源数据,即使是输入,输出,转换等等。此信息对于支持合规性,故障排除,优化和其他方案至关重要。

恢复/记录细粒度历史的滚动缓冲区
Orchsym Studio的内容存储库旨在充当历史的滚动缓冲区。数据仅在内容存储库老化或需要空间时才会被删除。这与数据溯源功能相结合,为能够在对象的生命周期中的特定节点支持点击内容,下载内容和回放提供了非常有用的基础。

安全
系统到系统
只有安全性好的数据流才是好数据流。数据流中每个点的Orchsym Studio都支持通过使用加密协议(如双向SSL)提供安全交换。此外,Orchsym Studio能使流程加密和解密内容,并在发送者/接收者方的任一侧使用共享密钥或其他机制。

用户到系统
Orchsym Studio支持双向SSL身份验证,并提供可插拔授权,以便能够正确控制用户的访问权限和特定级别(只读,数据流管理器,管理员)。如果用户在流程中输入密码等敏感属性,则会立即加密服务器端,即使以加密形式也不再在客户端公开。

多租户授权
给定数据流的权限级别适用于每个组件,允许管理员用户具有细粒度的访问控制级别。这意味着每个Orchsym Studio集群都能够满足一个或多个组织的要求。与隔离拓扑结构相比,多租户授权为数据流管理提供了自助服务模型,允许每个团队或组织在管理流的同时留意他们无法访问流的其他部分。

可扩展的架构
扩展
Orchsym Studio的核心是为扩展而构建的,因此它是一个数据流程可以以可预测和可重复的方式执行和交互的平台。扩展点包括: 组件,控制器服务,报告任务,优先级排序器和客户用户界面。

Classloader隔离
对于任何基于组件的系统,可能会很快发生依赖性问题。Orchsym Studio通过提供自定义类加载器模型来解决这个问题,确保每个扩展bundle都暴露于非常有限的依赖关系。因此,可以构建扩展而几乎不关心 它们是否可能与另一个扩展冲突。这些扩展包的概念称为"Archives” 并在开发人员指南中进行了更详细的描述。

站点到站点(S2S)通信协议
Orchsym Studio实例之间的首选通信协议是Orchsym Studio站点到站点(S2S)协议。S2S可以轻松,高效,安全地将数据从一个Orchsym Studio实例传输到另一个实例。Orchsym Studio客户端库可以轻松构建并捆绑到其他应用程序或设备中,通过S2S与Orchsym Studio进行通信。S2S支持基于套接字的协议和HTTP(S)协议作为底层传输协议,从而可以将代理服务器嵌入到S2S通信中。

灵活的缩放模型
横向扩展 (集群)
如上所述,Orchsym Studio旨在通过使用将许多节点聚类在一起来向外扩展。如果配置单个节点并将其配置为每秒处理数百MB,则可以将适度的群集配置为每秒处理GB。这就带来了Orchsym Studio与其获取数据的系统之间的负载平衡和故障转移的有趣挑战。使用基于异步排队的协议,如消息服务,Kafka等,可以提供帮忙。使用Orchsym Studio的"站点到站点”功能也非常有效,因为它是允许Orchsym Studio和客户端(包括另一个Orchsym Studio群集)相互通信,共享加载信息以及在特定授权端口上交换数据的协议。

放大和缩小
Orchsym Studio还可以非常灵活地扩展和缩小。从Orchsym Studio框架的角度来看,在增加吞吐量方面,在配置时可以在Scheduling选项卡下增加组件上的并发任务数量。这允许更多进程同时执行,从而提供更高的吞吐量。另一方面,您可以完美地扩展Orchsym Studio以适应在由于硬件资源有限而需要占用空间小的边缘设备上运行。