当前位置: 首页 > 科技观察

如何使用Java框架Pronghorn迅速编写应用程序_0

时间:2023-03-17 13:12:50 科技观察

如何使用Java框架Pronghorn快速编写应用程序1973年,CarlHewitt受到量子力学的启发。他想开发能够并行执行任务、相互顺畅通信并拥有自己的本地内存和处理器的计算机。actor模型由此诞生,一个很简单的概念也随之诞生:万物皆演员。这有几个很大的优势:隔离业务和其他逻辑要容易得多。安全性很容易获得,因为应用程序的每个核心组件都是独立且独立的。并且由于参与者的性质及其相互关系,加快了构建原型的速度。然而,将它们联系在一起的是在这些参与者之间同时传递消息的能力。Actor根据输入消息做出响应;然后它可以发回确认、传递内容并指定下次收到消息时要采取的行为。例如,演员从磁盘加载图像文件,同时将数据块传递给其他演员以进行进一步处理,即图像分析或转换。然后另一个参与者将这些作为输入,将它们写回磁盘或将它们记录到终端。这些参与者不能单独执行强大的功能,但它们共同构成了应用程序。什么是叉角羚?当今有许多系统都实现了这种参与者模型。在ObjectComputing,我们一直在开发一个高度可扩展、高性能、完全开源的Java框架:Pronghorn(https://oci-pronghorn.gitbook.io/pronghorn/chapter-0-what-is-pronghorn/home),以世界上最快的陆生动物之一:叉角羚命名。Pronghorn最近推出了1.0版本,试图克服Java和Scala的两个流行的actor框架的几个缺点:Akka和RxJava。因此,我们开发Pronghorn的重点是综合功能:1.我们希望产生尽可能少的垃圾。它实现了前所未有的性能水平,而垃圾收集器并不经常启动。2.我们要确保叉角羚使用尽可能少的内存。在设计时考虑到性能,它充分利用CPU预取和高速缓存来实现最大吞吐量。它使用零拷贝直接访问,在纳秒内从模式中加载字段,根本不会拖延核心,并且是非阻塞和无锁的。3.Pronghorn确保您安全地编写正确的代码。凭借其API和合同,并使用“软件堡垒”和行业领先的密码学,Pronghorn让您可以构建安全、故障安全的应用程序。4.调试和测试可能会让人感到压力和烦人,尤其是在匆忙的时候。Pronghorn可以轻松与常用测试框架集成,其自动生成、实时更新的遥测图、基于现有消息模式(开发中)的模糊测试,以及在某些参与者行为异常或消耗过多资源时发出警告,简化重构和调试。这有助于您快速创建原型并花更多时间关注业务需求。有关详细信息,请访问Pronghorn功能列表(https://oci-pronghorn.gitbook.io/pronghorn/chapter-0-what-is-pronghorn/features)。为什么是叉角羚?编写并发的、高性能的应用绝非易事,我们不承诺完全解决这些问题。然而,为了让您了解Pronghorn的好处和API的强大功能,我们编写了一个小型HTTPREST服务器,并根据常见的行业标准(如Node&Express、Tomcat和SpringBoot)对其进行了基准测试:我们鼓励您运行自己做这些图(https://github.com/oci-pronghorn/GreenLoader),分享结果,添加自己的web服务器。如您所见,Pronghorn在此REST示例中运行良好。Pronghorn的速度几乎是传统解决方案的10倍,并且可以通过无垃圾的静态类型后端将服务器成本(例如EC2或Azure)降低至少一半。它可以解析HTTP请求,并且参与者在并行工作时生成响应。调度和线程由Pronghorn强大的默认调度程序自动处理。如上所述,Pronghorn允许您快速构建原型和构思项目,通常遵循以下三个基本步骤:1.定义数据流图这是至关重要的第一步。Pronghorn采用数据优先的方法并快速处理大量数据。在您的应用程序中,考虑流经“管道”的数据类型——例如,如果您正在构建一个图像分析工具,需要参与者读取、写入和分析图像文件。参与者之间的数据格式也需要建立;它可以是包含JPGMCU的模式或原始二进制BMP文件。选择最适合您正在开发的应用程序的格式。2.定义每个阶段之间的合约合约允许您使用FAST轻松定义消息,FAST是金融行业用于股票交易的成熟协议。这些合约用于测试阶段,以确保实现与消息字段定义一致。这是一种契约方法;必须尊重它,以便演员可以相互交流。3.在实现数据流图时,使用生成的测试来测试最初开发的组件模式,这些模式是在您开发应用程序时为您生成的代码。测试驱动开发有助于开发正确和安全的代码,为您节省发布准备的宝贵时间。随着程序变得越来越大,数据流图也越来越大,它描述了参与者之间的每一次交互,并说明了阶段之间管道上的消息数据流。通过自动遥测,您甚至可以轻松跟踪最复杂的应用程序,例如:它看起来像什么?您可能想知道叉角羚代码是什么样子的。这是我们的“HelloWorld”(https://oci-pronghorn.gitbook.io/pronghorn/chapter-1-getting-started-with-pronghorn/1.-hello-world-introduction/0.-getting-started)例如为消息模式生成一段代码。要定义消息,请创建新的XML文件,如下所示:然后,这个模式在HelloWorld示例中描述使用的阶段。使用此模式可以更轻松地将数据流图嵌入到您的应用程序中:privatestaticvoidpopulateGraph(GraphManagergm){PipemessagePipe=HelloWorldSchema.instance.newPipe(10,10_000);newGreeterStage(gm,"JonSnow",messagePipe);newGuestStage(gm,messagePipe);}这使用了HelloWorld教程(https://oci-pronghorn.gitbook.io/pronghorn/chapter-1-getting-started-with-pronghorn/1.-hello-world-introduction/0.-getting-开始)。我们使用Maven(https://maven.apache.org/)原型为您提供开始构建Pronghorn应用程序所需的一切。开始使用Pronghorn本文概述了Pronghorn如何帮助您使用Pronghorn(Akka和RXJava的替代品)编写高性能、高效且安全的Java应用程序:Pronghorn。我们想听听您如何使它成为开发人员、经理、首席财务官等的理想平台。原标题:用Java框架PronghornWritefastapps,作者:TobiSchweiger