优定义网

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

辛佳颖 发表于 2018-6-24 19:19:49 | 显示全部楼层 |阅读模式
  作为Akka和RxJava的替代者,Pronghorn为开发安全无垃圾的应用程序提供了一种可灵活扩展的开源方法。
1.jpg
  1973年,Carl Hewitt受到了量子力学的启发。他想开发能够并行执行任务的计算机,这些计算机在含有各自本地内存和处理器的同时可彼此顺利地通信。
  actor模型由此而生,随之诞生了一个很简单的概念:一切都是actor。这有几大好处:隔离业务和其他逻辑容易多了。由于你应用程序的每个核心组件都是隔离且独立的,因此很容易获得安全。又由于actor的性质及其相互关系,加快了构建原型的速度。
  然而,将它们联系在一起的是能够同时在这些actor之间传递消息。actor基于输入消息做出响应;然后,它可以发回确认,传递内容,并指定下次收到消息时采用的行为。比如说,一个actor从磁盘加载图像文件,同时将数据块传送给其他actor作进一步处理,即图像分析或转换。随后另一个actor将这些作为输入,将它们写回到磁盘或将它们记录到终端。这些actor单独无法完成强大的功能,但是一起构成了应用程序。
  Pronghorn是什么?
  今天有许多系统实现了这种actor模型。在Object Computing,我们一直在开发一种高度可扩展、高性能、完全开源的Java框架:Pronghorn(https://oci-pronghorn.gitbook.io ... t-is-pronghorn/home),它以世界上跑得最快的陆地动物之一:叉角羚命名。
  Pronghorn最近推出了版本1.0,试图克服面向Java和Scala的两种流行的actor框架:Akka和RxJava存在的几个缺点。
  因此,我们在开发Pronghorn时注重全面的功能特性:
  1. 我们想要产生尽可能少的垃圾。不用垃圾收集器经常启动,它就能达到前所未有的性能水平。
  2. 我们想要确保Pronghorn占用尽可能少的内存。由于设计当初注重性能,它充分利用CPU预取功能和高速缓存,以获得最高的吞吐量。它使用零拷贝直接访问,只需数毫微秒即可从模式(schema)加载字段,根本不会让核心停滞,同时又是非阻塞、无锁的。
  3. Pronghorn确保你安全地编写正确的代码。借助其API和合约,并使用“软件堡垒”和行业领先的加密技术,Pronghorn让你可以构建安全的、稳妥失效的应用程序。
  4. 调试和测试可能压力大、很烦人,需要赶时间时更是如此。Pronghorn可以与常用测试框架轻松集成,通过其自动生成、实时更新的遥测图形,基于现有消息模式的模糊测试(在开发中)以及某些actor行为异常或耗用太多资源时发出警告,简化重构和调试。这可帮助你迅速创建原型,将更多的时间用于关注业务需求上。
  想了解更多详细信息,请访问Pronghorn功能列表(https://oci-pronghorn.gitbook.io ... -pronghorn/features)。
  为什么是Pronghorn?
  编写并发高性能的应用程序绝非易事,我们也没有承诺完全解决这些问题。然而,为了让你了解Pronghorn的好处以及API的强大功能,我们编写了一个小型的HTTP REST服务器,对照Node & Express、Tomcat 以及Spring Boot等常见行业标准对它进行了基准测试:
2.jpg
  我们鼓励你自己运行这些数字(https://github.com/oci-pronghorn/GreenLoader),分享结果,并添加自己的Web服务器。
  如你所见,Pronghorn在这个REST例子中的表现非常好。Pronghorn几乎比传统解决方案快10倍,可以借助无垃圾、静态类型的后端,将服务器成本(比如EC2或Azure)至少降低一半。它可以解析HTTP请求,actor并行工作时生成响应。调度和线程由Pronghorn功能强大的默认调度程序来自动处理。
  如上所述,Pronghorn让你可以迅速构建原型,并构思项目,通常遵循这三个基本步骤:
  1. 定义数据流图
  这是至关重要的第一步。Pronghorn采用数据优先的方法,迅速处理大量数据。在你的应用程序中,考虑流经“管道”的数据类型――比如说,如果你在构建一个图像分析工具,需要actor读取、写入和分析图像文件。actor之间的数据格式也需要确立;它可能是含有JPG MCU的模式或原始二进制BMP文件。选择最适合你所开发的应用程序的格式。
  2. 定义每个阶段之间的合约
  合约让你得以使用FAST轻松定义消息,FAST是金融行业用于股票交易的一种成熟的协议。这些合约用于测试阶段,以确保实现与消息字段定义一致。这是一种契约方法;它必须得到遵守,那样actor才能彼此通信。
  3. 实施数据流图时,使用生成测试,测试最初开发的组件
  模式是你在开发应用程序时为你生成的代码。测试驱动开发便于开发正确且安全的代码,为你在准备发布时节省宝贵的时间。随着程序越来越大,数据流图也不断变大,描述actor之间的每一次交互,并说明各阶段之间管道上的消息数据流。借助自动遥测,你可以轻松跟踪最复杂的应用程序,如下所示:
3.jpg
  它是什么样子?
  你可能很想知道Pronghorn代码是什么样子。下面是我们的“Hello World”( https://oci-pronghorn.gitbook.io ... /0.-getting-started)例子中生成消息模式的一段示例代码。
  要定义消息,创建类似这个文件的新XML文件:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <templates xmlns="http://www.fixprotocol.org/ns/fast/td/1.1">  
  3.     <template name="HelloWorldMessage" id="1">  
  4.         <string name="GreetingName" id="100" charset="unicode"/>  
  5.     </template>  
  6. </templates>
复制代码
  然后,这个模式被Hello World例子中描述的阶段所使用。使用该模式将数据流图植入到你的应用程序中来得更容易:
  1. private static void populateGraph(GraphManager gm) {  
  2.        Pipe<HelloWorldSchema> messagePipe =   
  3. HelloWorldSchema.instance.newPipe(10, 10_000);  
  4.        new GreeterStage(gm, "Jon Snow", messagePipe);  
  5.        new GuestStage(gm, messagePipe);  
  6.   }
复制代码
  这使用了Hello World教程(https://oci-pronghorn.gitbook.io ... /0.-getting-started)中创建的阶段。
  我们使用一个Maven(https://maven.apache.org/)原型为你提供了开始构建Pronghorn应用程序所需要的一切。
  开始使用Pronghorn
  本文已大致介绍了Pronghorn如何帮助你使用Akka和RXJava的替代者:Pronghorn,用Java编写高性能、高效、安全的应用程序。我们想听听你如何让这个成为开发人员、经理、首席财务官及其他人士的一个理想平台。
  原文标题:Write fast apps with Pronghorn, a Java framework,作者:Tobi Schweiger
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精华推荐
  • 一个人开始废掉的3种迹象

    一个人开始废掉的3种迹象

  • 从零到60秒的惬意冰镇啤酒

    从零到60秒的惬意冰镇啤酒

  • 马云、马化腾、王石都弃之不用的人,有一个共同点

    马云、马化腾、王石都弃之不用的人,有一个

  • 哥特式高迪凳子

    哥特式高迪凳子

  • 千亿小米,雷军逆袭

    千亿小米,雷军逆袭

  • 她一战赚了几十亿,她说:世界上最好的生意有三种

    她一战赚了几十亿,她说:世界上最好的生意有

  • 雷军:合伙人比制度更重要!

    雷军:合伙人比制度更重要!

  • 一个美美的令人喜欢的自行车铃

    一个美美的令人喜欢的自行车铃

QQ客服热线
QQ:1090281100 周一至周日:09:00 - 21:00
WeChat:dianlingkeji
Email:kaixin1069@vip.qq.com

优定义logo

勿要吝啬你无形资产,请为创新续源,知识、点子、灵感、经验、需求等均是创新源泉,你不经意的一句话将是另一个人的灵感。明天的明天,还有明天,我们应该把握今天,每一个今天,都有一个新的事物在出现,今天的漠视明天的落后,不浪费每一个学习的时刻,学习助力非凡。

技术支持 Discuz! X3.4 - 3.5 beta © 2001-2018 Comsenz Inc.

小黑屋|手机版|优定义 ( 粤ICP备16085288号-2 )|申请友链|网站地图

粤公网安备 44011102001144 号 GMT+8, 2018-11-16 22:44 , Processed in 0.097510 second(s), 29 queries .

快速回复 返回顶部 返回列表