自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Java框架Pronghorn迅速編寫應(yīng)用程序

譯文
開發(fā) 后端
作為Akka和RxJava的替代者,Pronghorn為開發(fā)安全無垃圾的應(yīng)用程序提供了一種可靈活擴(kuò)展的開源方法。

【51CTO.com快譯】作為Akka和RxJava的替代者,Pronghorn為開發(fā)安全無垃圾的應(yīng)用程序提供了一種可靈活擴(kuò)展的開源方法。

[[233687]]

1973年,Carl Hewitt受到了量子力學(xué)的啟發(fā)。他想開發(fā)能夠并行執(zhí)行任務(wù)的計算機(jī),這些計算機(jī)在含有各自本地內(nèi)存和處理器的同時可彼此順利地通信。

actor模型由此而生,隨之誕生了一個很簡單的概念:一切都是actor。這有幾大好處:隔離業(yè)務(wù)和其他邏輯容易多了。由于你應(yīng)用程序的每個核心組件都是隔離且獨(dú)立的,因此很容易獲得安全。又由于actor的性質(zhì)及其相互關(guān)系,加快了構(gòu)建原型的速度。

然而,將它們聯(lián)系在一起的是能夠同時在這些actor之間傳遞消息。actor基于輸入消息做出響應(yīng);然后,它可以發(fā)回確認(rèn),傳遞內(nèi)容,并指定下次收到消息時采用的行為。比如說,一個actor從磁盤加載圖像文件,同時將數(shù)據(jù)塊傳送給其他actor作進(jìn)一步處理,即圖像分析或轉(zhuǎn)換。隨后另一個actor將這些作為輸入,將它們寫回到磁盤或?qū)⑺鼈冇涗浀浇K端。這些actor單獨(dú)無法完成強(qiáng)大的功能,但是一起構(gòu)成了應(yīng)用程序。

Pronghorn是什么?

今天有許多系統(tǒng)實(shí)現(xiàn)了這種actor模型。在Object Computing,我們一直在開發(fā)一種高度可擴(kuò)展、高性能、完全開源的Java框架:Pronghorn(https://oci-pronghorn.gitbook.io/pronghorn/chapter-0-what-is-pronghorn/home),它以世界上跑得最快的陸地動物之一:叉角羚命名。

Pronghorn最近推出了版本1.0,試圖克服面向Java和Scala的兩種流行的actor框架:Akka和RxJava存在的幾個缺點(diǎn)。

因此,我們在開發(fā)Pronghorn時注重全面的功能特性:

1. 我們想要產(chǎn)生盡可能少的垃圾。不用垃圾收集器經(jīng)常啟動,它就能達(dá)到前所未有的性能水平。

2. 我們想要確保Pronghorn占用盡可能少的內(nèi)存。由于設(shè)計當(dāng)初注重性能,它充分利用CPU預(yù)取功能和高速緩存,以獲得最高的吞吐量。它使用零拷貝直接訪問,只需數(shù)毫微秒即可從模式(schema)加載字段,根本不會讓核心停滯,同時又是非阻塞、無鎖的。

3. Pronghorn確保你安全地編寫正確的代碼。借助其API和合約,并使用“軟件堡壘”和行業(yè)領(lǐng)先的加密技術(shù),Pronghorn讓你可以構(gòu)建安全的、穩(wěn)妥失效的應(yīng)用程序。

4. 調(diào)試和測試可能壓力大、很煩人,需要趕時間時更是如此。Pronghorn可以與常用測試框架輕松集成,通過其自動生成、實(shí)時更新的遙測圖形,基于現(xiàn)有消息模式的模糊測試(在開發(fā)中)以及某些actor行為異?;蚝挠锰噘Y源時發(fā)出警告,簡化重構(gòu)和調(diào)試。這可幫助你迅速創(chuàng)建原型,將更多的時間用于關(guān)注業(yè)務(wù)需求上。

想了解更多詳細(xì)信息,請?jiān)L問Pronghorn功能列表(https://oci-pronghorn.gitbook.io/pronghorn/chapter-0-what-is-pronghorn/features)。

為什么是Pronghorn?

編寫并發(fā)高性能的應(yīng)用程序絕非易事,我們也沒有承諾完全解決這些問題。然而,為了讓你了解Pronghorn的好處以及API的強(qiáng)大功能,我們編寫了一個小型的HTTP REST服務(wù)器,對照Node & Express、Tomcat 以及Spring Boot等常見行業(yè)標(biāo)準(zhǔn)對它進(jìn)行了基準(zhǔn)測試: 

我們鼓勵你自己運(yùn)行這些數(shù)字(https://github.com/oci-pronghorn/GreenLoader),分享結(jié)果,并添加自己的Web服務(wù)器。

如你所見,Pronghorn在這個REST例子中的表現(xiàn)非常好。Pronghorn幾乎比傳統(tǒng)解決方案快10倍,可以借助無垃圾、靜態(tài)類型的后端,將服務(wù)器成本(比如EC2或Azure)至少降低一半。它可以解析HTTP請求,actor并行工作時生成響應(yīng)。調(diào)度和線程由Pronghorn功能強(qiáng)大的默認(rèn)調(diào)度程序來自動處理。

如上所述,Pronghorn讓你可以迅速構(gòu)建原型,并構(gòu)思項(xiàng)目,通常遵循這三個基本步驟:

1. 定義數(shù)據(jù)流圖

這是至關(guān)重要的第一步。Pronghorn采用數(shù)據(jù)優(yōu)先的方法,迅速處理大量數(shù)據(jù)。在你的應(yīng)用程序中,考慮流經(jīng)“管道”的數(shù)據(jù)類型――比如說,如果你在構(gòu)建一個圖像分析工具,需要actor讀取、寫入和分析圖像文件。actor之間的數(shù)據(jù)格式也需要確立;它可能是含有JPG MCU的模式或原始二進(jìn)制BMP文件。選擇最適合你所開發(fā)的應(yīng)用程序的格式。

2. 定義每個階段之間的合約

合約讓你得以使用FAST輕松定義消息,F(xiàn)AST是金融行業(yè)用于股票交易的一種成熟的協(xié)議。這些合約用于測試階段,以確保實(shí)現(xiàn)與消息字段定義一致。這是一種契約方法;它必須得到遵守,那樣actor才能彼此通信。

3. 實(shí)施數(shù)據(jù)流圖時,使用生成測試,測試最初開發(fā)的組件

模式是你在開發(fā)應(yīng)用程序時為你生成的代碼。測試驅(qū)動開發(fā)便于開發(fā)正確且安全的代碼,為你在準(zhǔn)備發(fā)布時節(jié)省寶貴的時間。隨著程序越來越大,數(shù)據(jù)流圖也不斷變大,描述actor之間的每一次交互,并說明各階段之間管道上的消息數(shù)據(jù)流。借助自動遙測,你可以輕松跟蹤最復(fù)雜的應(yīng)用程序,如下所示: 

它是什么樣子?

你可能很想知道Pronghorn代碼是什么樣子。下面是我們的“Hello World”( https://oci-pronghorn.gitbook.io/pronghorn/chapter-1-getting-started-with-pronghorn/1.-hello-world-introduction/0.-getting-started)例子中生成消息模式的一段示例代碼。

要定義消息,創(chuàng)建類似這個文件的新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例子中描述的階段所使用。使用該模式將數(shù)據(jù)流圖植入到你的應(yīng)用程序中來得更容易:

 

  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/pronghorn/chapter-1-getting-started-with-pronghorn/1.-hello-world-introduction/0.-getting-started)中創(chuàng)建的階段。

我們使用一個Maven(https://maven.apache.org/)原型為你提供了開始構(gòu)建Pronghorn應(yīng)用程序所需要的一切。

開始使用Pronghorn

本文已大致介紹了Pronghorn如何幫助你使用Akka和RXJava的替代者:Pronghorn,用Java編寫高性能、高效、安全的應(yīng)用程序。我們想聽聽你如何讓這個成為開發(fā)人員、經(jīng)理、首席財務(wù)官及其他人士的一個理想平臺。

原文標(biāo)題:Write fast apps with Pronghorn, a Java framework,作者:Tobi Schweiger

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2011-04-01 11:01:02

應(yīng)用程序BlackBerryJava

2024-09-06 10:46:04

2011-06-16 13:23:35

Qt 模塊化 插件式

2011-01-28 09:12:53

jQuery Mobi

2012-09-10 10:31:31

IBMdw

2023-09-22 09:41:28

LinuxC語言

2012-09-06 11:18:17

IBMdw

2009-07-03 06:57:32

2011-07-12 10:59:41

JAVA多線程

2023-04-25 15:50:50

Flask框架Web

2009-12-16 15:39:37

Visual Stud

2009-07-14 18:10:38

Swing應(yīng)用程序框架

2012-05-29 09:21:21

API

2023-12-10 14:43:30

PythonGUIeel

2022-12-22 08:01:09

Vue測試庫測試

2021-11-26 21:38:44

JavaScript框架開發(fā)

2019-02-11 09:35:04

Python應(yīng)用程序Tornado

2011-05-31 15:41:00

Cocoa TouchCocoaiOS

2011-09-05 10:27:02

Sencha Touc手機(jī)應(yīng)用Android

2018-12-03 08:25:24

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號