扣丁學堂解析Java開發(fā)框架如何迅速使用Pronghorn編寫應用程序
2018-07-04 13:55:32
1211瀏覽
在現(xiàn)如今,大多數(shù)編程語言中
Java已成為當今市面上最受歡迎的編程軟件,目前作為Akka和RxJava的替代者,Pronghorn為開發(fā)安全無垃圾的應用程序提供了一種可靈活擴展的開源方法。
actor模型由此而生,隨之誕生了一個很簡單的概念:一切都是actor。這有幾大好處:隔離業(yè)務和其他邏輯容易多了。由于你應用程序的每個核心組件都是隔離且獨立的,因此很容易獲得安全。又由于actor的性質及其相互關系,加快了構建原型的速度。
然而,將它們聯(lián)系在一起的是能夠同時在這些actor之間傳遞消息。actor基于輸入消息做出響應;然后,它可以發(fā)回確認,傳遞內容,并指定下次收到消息時采用的行為。比如說,一個actor從磁盤加載圖像文件,同時將數(shù)據(jù)塊傳送給其他actor作進一步處理,即圖像分析或轉換。隨后另一個actor將這些作為輸入,將它們寫回到磁盤或將它們記錄到終端。這些actor單獨無法完成強大的功能,但是一起構成了應用程序。
Pronghorn是什么?
Pronghorn最近推出了版本1.0,試圖克服面向Java和Scala的兩種流行的actor框架:Akka和RxJava存在的幾個缺點,因此,我們在開發(fā)Pronghorn時注重全面的功能特性:
1、我們想要產生盡可能少的垃圾。不用垃圾收集器經常啟動,它就能達到前所未有的性能水平。
2、我們想要確保Pronghorn占用盡可能少的內存。由于設計當初注重性能,它充分利用CPU預取功能和高速緩存,以獲得最高的吞吐量。它使用零拷貝直接訪問,只需數(shù)毫微秒即可從模式(schema)加載字段,根本不會讓核心停滯,同時又是非阻塞、無鎖的。
3、Pronghorn確保你安全地編寫正確的代碼。借助其API和合約,并使用“軟件堡壘”和行業(yè)領先的加密技術,Pronghorn讓你可以構建安全的、穩(wěn)妥失效的應用程序。
4、調試和測試可能壓力大、很煩人,需要趕時間時更是如此。Pronghorn可以與常用測試框架輕松集成,通過其自動生成、實時更新的遙測圖形,基于現(xiàn)有消息模式的模糊測試(在開發(fā)中)以及某些actor行為異?;蚝挠锰噘Y源時發(fā)出警告,簡化重構和調試。這可幫助你迅速創(chuàng)建原型,將更多的時間用于關注業(yè)務需求上。
為什么是Pronghorn?
編寫并發(fā)高性能的應用程序絕非易事,我們也沒有承諾完全解決這些問題。然而,為了讓你了解Pronghorn的好處以及API的強大功能,我們編寫了一個小型的HTTPREST服務器,對照Node&Express、Tomcat以及SpringBoot等常見行業(yè)標準對它進行了基準測試:
如你所見,Pronghorn在這個REST例子中的表現(xiàn)非常好。Pronghorn幾乎比傳統(tǒng)解決方案快10倍,可以借助無垃圾、靜態(tài)類型的后端,將服務器成本(比如EC2或Azure)至少降低一半。它可以解析HTTP請求,actor并行工作時生成響應。調度和線程由Pronghorn功能強大的默認調度程序來自動處理。
如上所述,Pronghorn讓你可以迅速構建原型,并構思項目,通常遵循這三個基本步驟:
1、定義數(shù)據(jù)流圖
這是至關重要的第一步。Pronghorn采用數(shù)據(jù)優(yōu)先的方法,迅速處理大量數(shù)據(jù)。在你的應用程序中,考慮流經“管道”的數(shù)據(jù)類型――比如說,如果你在構建一個圖像分析工具,需要actor讀取、寫入和分析圖像文件。actor之間的數(shù)據(jù)格式也需要確立;它可能是含有JPGMCU的模式或原始二進制BMP文件。選擇最適合你所開發(fā)的應用程序的格式。
2、定義每個階段之間的合約
合約讓你得以使用FAST輕松定義消息,F(xiàn)AST是金融行業(yè)用于股票交易的一種成熟的協(xié)議。這些合約用于測試階段,以確保實現(xiàn)與消息字段定義一致。這是一種契約方法;它必須得到遵守,那樣actor才能彼此通信。
3、實施數(shù)據(jù)流圖時,使用生成測試,測試最初開發(fā)的組件
模式是你在開發(fā)應用程序時為你生成的代碼。測試驅動開發(fā)便于開發(fā)正確且安全的代碼,為你在準備發(fā)布時節(jié)省寶貴的時間。隨著程序越來越大,數(shù)據(jù)流圖也不斷變大,描述actor之間的每一次交互,并說明各階段之間管道上的消息數(shù)據(jù)流。借助自動遙測,你可以輕松跟蹤最復雜的應用程序,如下所示:
要定義消息,創(chuàng)建類似這個文件的新XML文件:
<?xmlversion="1.0"encoding="UTF-8"?>
<templatesxmlns="http://www.fixprotocol.org/ns/fast/td/1.1">
<templatename="HelloWorldMessage"id="1">
<stringname="GreetingName"id="100"charset="unicode"/>
</template>
</templates>
然后,這個模式被HelloWorld例子中描述的階段所使用。使用該模式將數(shù)據(jù)流圖植入到你的應用程序中來得更容易:
privatestaticvoidpopulateGraph(GraphManagergm){
Pipe<HelloWorldSchema>messagePipe=
HelloWorldSchema.instance.newPipe(10,10_000);
newGreeterStage(gm,"JonSnow",messagePipe);
newGuestStage(gm,messagePipe);
}
以上就是關于Java框架Pronghorn如何幫助你使用Akka和RXJava的替代者Pronghorn的詳細介紹,希望對大家有所幫助用Java編寫高性能、高效、安全的應用程序,扣丁學堂是專業(yè)的
Java培訓機構,不僅有專業(yè)的老師和與時俱進的課程體系,還有大量的Java視頻教程供學員觀看學習哦,心動的小伙伴快快行動吧。扣丁學堂Java技術交流群:670348138。
【關注微信公眾號獲取更多學習資料】
查看更多關于“Java開發(fā)資訊”的相關文章>>
標簽:
JavaEE視頻教程
JavaEE培訓
JavaEE開發(fā)工程師
Java培訓
Pronghorn