成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Capsule:開(kāi)源的 JVM 應(yīng)用部署工具

yangrd / 1594人閱讀

摘要:如果期望應(yīng)用程序正常地運(yùn)行,編碼和部署過(guò)程都是重中之重。但應(yīng)用程序?qū)Νh(huán)境的要求非常少只需一個(gè)和一個(gè)內(nèi)核,然而意想不到是,目前為止尚不存在一個(gè)通用的應(yīng)用部署工具機(jī)制。當(dāng)下,經(jīng)過(guò)一年的發(fā)展,正式發(fā)布一個(gè)簡(jiǎn)單健壯且靈活的應(yīng)用部署工具。

【編者按】本文作者 Ron Pressler 是 Parallel Universe 公司的創(chuàng)始人,擁有著豐富的高性能開(kāi)發(fā)經(jīng)驗(yàn)。通過(guò)這篇文章,Ron 向大家詳細(xì)介紹了全新的開(kāi)源 JVM 部署工具——Capsule, 本文系 OneAPM 工程師編譯整理。

現(xiàn)實(shí)世界中,應(yīng)用程序部署過(guò)程可能沒(méi)有想象中的那么簡(jiǎn)單。應(yīng)用程序其實(shí)非常「敏感」,在部署過(guò)程中,它會(huì)發(fā)現(xiàn)自己身處一個(gè)陌生的環(huán)境中,并且在與不同硬件、不同基礎(chǔ)設(shè)施軟件,以及陌生的鄰居(應(yīng)用程序)行交互。如果期望應(yīng)用程序正常地運(yùn)行,編碼和部署過(guò)程都是重中之重。兩者之間的平衡常常依賴于程序的編寫(xiě)語(yǔ)言、程序構(gòu)成的運(yùn)行時(shí)和工具,因此,不同的技術(shù)棧可能需要不同的部署工具。

但 JVM 應(yīng)用程序?qū)Νh(huán)境的要求非常少——只需一個(gè) JVM 和一個(gè)內(nèi)核,然而意想不到是,目前為止尚不存在一個(gè)通用的 JVM 應(yīng)用部署工具/機(jī)制。Fat JARs 并不總奏效,而且它們需要平臺(tái)特定的腳本。最近有人使用 Docker 來(lái)部署 Java 應(yīng)用,事實(shí)上 Docker 并不適用于這種任務(wù):它的主要目的之一是提供通用的應(yīng)用可移植性(類似 JVM 應(yīng)用已經(jīng)具備的特性),同時(shí)它也需要下載、部署并管理各種 full-OS 鏡像和存 repositories。作為運(yùn)行時(shí)不可知工具,Docker 也無(wú)法利用 JVMs 的優(yōu)勢(shì)。

當(dāng)下,經(jīng)過(guò)一年的發(fā)展,Capsule 1.0 正式發(fā)布——一個(gè)簡(jiǎn)單、健壯且靈活的 JVM 應(yīng)用部署工具。Capsule 迎合 JVM 應(yīng)用的獨(dú)特優(yōu)勢(shì)和需求,因此這里有理由相信這是最簡(jiǎn)單、最強(qiáng)大的 JVM 應(yīng)用部署方式,不管是用于一個(gè)桌面應(yīng)用、microservice 或復(fù)雜的 Web 應(yīng)用。Capsule 不僅適用于 Java 應(yīng)用程序,還能應(yīng)用于所有 JVM 語(yǔ)言,從 Jruby、Jython 和 Groovy,到 Kotlin、Clojure 和 Scala,再到 Frege 和 OCaml-Java。如果你在寫(xiě) JVM 程序,給 Capsule 一個(gè)機(jī)會(huì)。

你可以這樣來(lái)理解 capsule,將它當(dāng)作 steroids 上的1個(gè) fat JAR(在允許本地庫(kù)的同時(shí)也不會(huì)干擾到依賴項(xiàng))與1個(gè)聲明式啟動(dòng)腳本的整合;另一個(gè)理解方式是,將其當(dāng)作部署階段的構(gòu)建工具。正如構(gòu)建管理工具一樣, Capsule 從構(gòu)建到應(yīng)用發(fā)布的各個(gè)環(huán)節(jié)都有全方位的管理。

Capsule 在設(shè)計(jì)時(shí)一直遵循以下原則:

打包應(yīng)該是輕量、可移植和便捷的。無(wú)論多么復(fù)雜,不管有多少 JAR 文件組成,或者有多少腳本語(yǔ)言的源文件還是本地庫(kù),Capsule 都可以包裝任何 JVM 應(yīng)用到一個(gè)名為 Capsule 的可執(zhí)行 JAR,并且可以在任何平臺(tái)上運(yùn)行。Capsule 可以直接包含應(yīng)用的所有依賴項(xiàng),或簡(jiǎn)單地聲明部分或者全部,一旦發(fā)布將會(huì)被完整的下載。這就是 fat JAR 的工作方式。如果愿意, capsules 本身也可以置于 Maven repositories,在發(fā)布時(shí)進(jìn)行下載。

安裝對(duì)主機(jī)系統(tǒng)的影響最小,并對(duì)更新選擇性支持。在 capsule 首次安裝時(shí),其正常運(yùn)行需要依賴在1個(gè)臨時(shí)目錄中生成的一些文件,隨后用戶可以在任何時(shí)刻刪除這些文件,不會(huì)對(duì) capsule 產(chǎn)生任何不良影響。capsule 可以選擇性地支持更新——不管是應(yīng)用或者是其依賴關(guān)系——當(dāng)啟動(dòng)時(shí)會(huì)自動(dòng)下載。這些依賴關(guān)系——可以是語(yǔ)言運(yùn)行時(shí)或者是 Web 容器——也可以被其他 capsule 共享。

發(fā)布必須是確定和靈活的,可能是安全的且有選擇地限制。發(fā)布一個(gè) capsule 不需要啟動(dòng)腳本。Capsules 查找請(qǐng)求的 JVM 版本、設(shè)置 classpath、必要的 agents 并設(shè)置 JVM flags。Capsules 在啟動(dòng)時(shí)也可以創(chuàng)建自己的容器(來(lái)限制資源使用,或使用已知的端口以避免對(duì)其他項(xiàng)目形成干擾),同時(shí) JVM 應(yīng)用可以在無(wú)特權(quán)的容器下運(yùn)行,這些容器是安全的。另外,安全性由 JVM 提供的安全機(jī)制保證。此外, capsules 只需要一個(gè)內(nèi)核和一個(gè) JVM ——甚至不需要 shell,他們便能在 JVM microkernels 上運(yùn)行,比如 OSv。通過(guò) caplets 和組件定制 capsule 的行為,所有這些功能都是完全可編程、可組合的。

當(dāng)工具和標(biāo)準(zhǔn)已經(jīng)存在時(shí),不用再重造車輪。Capsule 是用 Java 編寫(xiě)的,并可以通過(guò) Java 擴(kuò)展。它遵循 JVM 生態(tài)系統(tǒng),而不是重造車輪,僅使用現(xiàn)有的工具和標(biāo)準(zhǔn)。capsule 打包在一個(gè)可執(zhí)行 JAR,并將所有元數(shù)據(jù)存儲(chǔ)為簡(jiǎn)單的 JAR-manifest attributes 中;并且可以根據(jù)需要,從 Maven repositories 中下載全部或者部分,并通過(guò) Maven、Gradle 和 Leiningen 這些流行的 JVM 工具構(gòu)建。Capsule 本身是一個(gè)簡(jiǎn)單的 Maven 依賴,就像所有的構(gòu)建工具插件,不需要再安裝其他新工具。

通過(guò) Caplets 實(shí)現(xiàn)的 Capsule 魔法

Capsule 之所以能保持簡(jiǎn)單還能提供這些功能主要?dú)w功于 caplets,以模塊化定制 Capsule 行為。Caplets 可以嵌入到1個(gè) capsule,或者多帶帶進(jìn)行包裝并使用命令行包裝和修改現(xiàn)有 capsule 行為。

Capsule 的第一個(gè) caplet 是 Maven caplet,允許開(kāi)發(fā)者在 manifest attributes 中聲明部分或全部的應(yīng)用依賴關(guān)系,而不用嵌入到 capsule JAR 里。雖然這對(duì)許多應(yīng)用來(lái)說(shuō)并不必要,不妨通過(guò)以下兩個(gè)用例來(lái)深入了解 Capsule 的潛力。

首先是一個(gè)簡(jiǎn)單的 Hello World servlet。建成后,它將創(chuàng)建一個(gè)標(biāo)準(zhǔn)的 WAR 文件并部署到任何 servlet 容器。仔細(xì)觀察后發(fā)現(xiàn),WAR 的確有點(diǎn)特別。其內(nèi)容是:

    247 META-INF/MANIFEST.MF 
    1124 WEB-INF/classes/co/paralleluniverse/examples/HelloWorldServlet.class 
    653 WEB-INF/web.xml 
    161596 Capsule.class 
    1467463 capsule-maven-1.0.jar

如你所見(jiàn), WAR 包含 Capsule 類,這意味著它是一個(gè)capsule,也是嵌入式 JAR,而 capsule-maven-1.0.jar是 Maven caplet。JAR manifest 是這樣的:

Manifest-Version: 1.0
Main-Class: Capsule
Premain-Class: Capsule
Caplets: co.paralleluniverse:capsule-maven:1.0
Application: org.eclipse.jetty:jetty-runner:9.3.3.v20150827
Allow-Snapshots: true
Min-Java-Version: 1.7.0
Args: $CAPSULE_JAR

取代部署 WAR 到 servlet 容器,你可以直接執(zhí)行 java -jar build/libs/capsule-runnable-war.war (或者,甚至簡(jiǎn)單的./capsule-runnable-war.war,如果 capsule是「真正可執(zhí)行」——見(jiàn)用戶文檔的指令),它會(huì)自動(dòng)下載 Jetty,并用 Jetty 來(lái)啟動(dòng) servlet。Jetty 工件將被緩存,并可以共享到其他需要的 caplets中。

另一個(gè)例子使用 JavaScript,Avatar 項(xiàng)目在 JVM 上實(shí)現(xiàn) Node.js。capsule JAR 包含了 JavaScript 源、 Capsule 類和 Maven caplet:

    608 META-INF/MANIFEST.MF
    161596 Capsule.class
    1467463 capsule-maven-1.0.jar
    266 app.js

當(dāng) capsule 發(fā)布,Avatar 運(yùn)行時(shí)——包括針對(duì)本地操作系統(tǒng)的本地庫(kù),將從 Maven repository 下載到本地并緩存,并與其他 Avatar capsules 共享。

其他 caplets 將包含:一個(gè)守護(hù)進(jìn)程 caplet, 作為 Unix 或 Windows 守護(hù)進(jìn)程來(lái)發(fā)布 capsule;一個(gè)安全 caplet,會(huì)在 Java 沙箱(通過(guò)安全策略定義)內(nèi)啟動(dòng) capsule;一個(gè) desktop caplet,會(huì)將包含了一個(gè) GUI 應(yīng)用程序的 capsule 轉(zhuǎn)化為一個(gè) Windows、Mac 或 Linux 的本地可執(zhí)行程序;一個(gè)容器 caplet,在一個(gè)或多個(gè)容器內(nèi)運(yùn)行 capsule。

為 Capsules 設(shè)計(jì)的輕量級(jí)容器

容器對(duì)沙箱應(yīng)用來(lái)說(shuō)是一個(gè)有效方式,可以簡(jiǎn)化部署和鞏固服務(wù)器,所以對(duì)任何的軟件堆棧而言,它們都非常有利于 dev-ops 和安全。然而,由于 JVM 應(yīng)用只有最小的環(huán)境需求 (即一個(gè)內(nèi)核和一個(gè) JVM),它們通常是可移植的,使用一個(gè)像 Docker 的容器解決方案無(wú)疑是浪費(fèi)時(shí)間和空間。另一方面,shield caplet 創(chuàng)建了一個(gè)輕量級(jí)容器,無(wú)需創(chuàng)建大圖像。

例如,可以通過(guò)簡(jiǎn)單地橋接網(wǎng)絡(luò)在1個(gè)容器中方便地運(yùn)行 quasar-stocks Web 應(yīng)用。

java -jar capsule-shield-0.1.0.jar quasar-stocks-thin.jar

隨后就可以輕松地檢索程序所運(yùn)行的容器IP地址:

lxc-attach -P ~/.capsule/apps/quasarstocks.Application_0.1.0-SNAPSHOT/capsule-shield/ -n lxc -- /sbin/ifconfig

當(dāng)一切如預(yù)期那樣正常工作,無(wú)需任何復(fù)雜的操作,就可以在最終部署的服務(wù)器上(可能是一個(gè)守護(hù)進(jìn)程)發(fā)布相同的命令來(lái)配置端口轉(zhuǎn)發(fā)使服務(wù)公共可用,并通過(guò)沙箱保證了應(yīng)用程序的強(qiáng)安全性。

現(xiàn)在

是時(shí)間打開(kāi) capsule.io 并啟動(dòng) capsules 了!

它們需要跟蹤以避免沖突,甚至這樣還不夠,因?yàn)樗鼈儾恢С直镜貛?kù)。

它們可能需要不可移植的發(fā)布腳本,以便于在操作系統(tǒng) shell 命令下執(zhí)行,并選擇正確的 JRE 版本、設(shè)置類路徑、代理和 JVM 參數(shù)。

所有平臺(tái)都支持 JVM,必要的腳本和本地構(gòu)件可能也一樣需要。

可能需要更長(zhǎng)的啟動(dòng)時(shí)間,比如依賴項(xiàng)需要重新下載。

shield caplet 使用 LXC 將 capsule 放于容器內(nèi)。

原文鏈接:https://dzone.com/articles/open-source-jvm-application-deployment-tool-capsul-1

OneAPM for Java 能夠深入到所有 Java 應(yīng)用內(nèi)部完成應(yīng)用性能管理和監(jiān)控,包括代碼級(jí)別性能問(wèn)題的可見(jiàn)性、性能瓶頸的快速識(shí)別與追溯、真實(shí)用戶體驗(yàn)監(jiān)控、服務(wù)器監(jiān)控和端到端的應(yīng)用性能管理。想閱讀更多技術(shù)文章,請(qǐng)?jiān)L問(wèn) OneAPM 官方博客。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64573.html

相關(guān)文章

  • 零日攻擊是混合云面臨主要問(wèn)題

    摘要:結(jié)果表明,人們對(duì)零日攻擊和容器采用率的增加表示擔(dān)憂。的企業(yè)在過(guò)去一年中報(bào)告了其云環(huán)境受到攻擊,的企業(yè)表示零日攻擊是這些攻擊的起源。公司的聯(lián)合創(chuàng)始人兼首席執(zhí)行官表示,零日攻擊將永遠(yuǎn)是一個(gè)真實(shí)且不可預(yù)知的威脅。根據(jù)一項(xiàng)新的調(diào)查研究,混合云環(huán)境特別容易受到 零日漏洞(zero-day)的攻擊。 零日漏洞就是安全漏洞在當(dāng)天或在24小時(shí)內(nèi)被發(fā)現(xiàn)之后立即被惡意利用進(jìn)行攻擊,這種攻擊是在廠商缺少防范意識(shí)或...

    plus2047 評(píng)論0 收藏0
  • Hinton膠囊理論代碼開(kāi)源,上線即受熱捧

    摘要:近日,該論文的一作終于在上公開(kāi)了該論文中的代碼。該項(xiàng)目上線天便獲得了個(gè),并被了次。 當(dāng)前的深度學(xué)習(xí)理論是由Geoffrey Hinton大神在2007年確立起來(lái)的,但是如今他卻認(rèn)為,CNN的特征提取層與次抽樣層交叉存取,將相同類型的相鄰特征檢測(cè)器的輸出匯集到一起是大有問(wèn)題的。去年9月,在多倫多接受媒體采訪時(shí),Hinton大神斷然宣稱要放棄反向傳播,讓整個(gè)人工智能從頭再造。10月,人們關(guān)注已久...

    tianlai 評(píng)論0 收藏0
  • 揭開(kāi)迷霧,來(lái)一頓美味Capsule」盛宴 | 附代碼實(shí)現(xiàn) + 全新實(shí)驗(yàn)

    摘要:本文試圖揭開(kāi)讓人迷惘的云霧,領(lǐng)悟背后的原理和魅力,品嘗這一頓盛宴。當(dāng)然,激活函數(shù)本身很簡(jiǎn)單,比如一個(gè)激活的全連接層,用寫(xiě)起來(lái)就是可是,如果我想用的反函數(shù)來(lái)激活呢也就是說(shuō),你得給我解出,然后再用它來(lái)做激活函數(shù)。 由深度學(xué)習(xí)先驅(qū) Hinton 開(kāi)源的 Capsule 論文 Dynamic Routing Between Capsules,無(wú)疑是去年深度學(xué)習(xí)界最熱點(diǎn)的消息之一。得益于各種媒體的各種...

    NSFish 評(píng)論0 收藏0
  • Reddit 討論:HintonCapsule網(wǎng)絡(luò)真比CNN效果更好嗎?

    摘要:首先,的概念與卷積的概念大部分是獨(dú)立的。但是,請(qǐng)注意,這個(gè)特征的較精確位置已經(jīng)被丟棄。結(jié)合和,這意味著我們的網(wǎng)絡(luò)使用的是不同于一般類型的非線性。之間的這就是網(wǎng)絡(luò)如此與眾不同的原因。與普通的層相比,層是完全不同的。 首先,capsule 的概念與卷積的概念大部分是獨(dú)立的。例如,你可以有一個(gè)完全連接的capsule網(wǎng)絡(luò)。但是,它們確實(shí)使用了卷積,而且也被與CNN進(jìn)行比較。但是,我將在接下來(lái)解釋中...

    ZweiZhao 評(píng)論0 收藏0
  • 幾種 Docker 監(jiān)控工具對(duì)比

    摘要:在我們列舉的幾個(gè)監(jiān)控的服務(wù)或平臺(tái)中,這是唯一一款國(guó)內(nèi)產(chǎn)品。也是一款付費(fèi)監(jiān)控解決方案,計(jì)劃收費(fèi)方案是美分小時(shí)。同樣也支持監(jiān)控,還包括對(duì)容器級(jí)事件的監(jiān)測(cè)停止開(kāi)始等等和管理容器產(chǎn)生的日志。由于是一個(gè)監(jiān)控方案,相對(duì)來(lái)說(shuō)它的安裝和部署都比較簡(jiǎn)單。 輕量級(jí)虛擬化容器 Docker,自發(fā)布以來(lái)便廣受業(yè)界關(guān)注,在開(kāi)源界和企業(yè)界掀起了一陣風(fēng)。Docker 容器相對(duì)于 VM 有以下幾個(gè)優(yōu)勢(shì):?jiǎn)?dòng)速度快;資...

    張春雷 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<