国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Capsule:開源的 JVM 應用部署工具

yangrd / 1586人閱讀

摘要:如果期望應用程序正常地運行,編碼和部署過程都是重中之重。但應用程序對環境的要求非常少只需一個和一個內核,然而意想不到是,目前為止尚不存在一個通用的應用部署工具機制。當下,經過一年的發展,正式發布一個簡單健壯且靈活的應用部署工具。

【編者按】本文作者 Ron Pressler 是 Parallel Universe 公司的創始人,擁有著豐富的高性能開發經驗。通過這篇文章,Ron 向大家詳細介紹了全新的開源 JVM 部署工具——Capsule, 本文系 OneAPM 工程師編譯整理。

現實世界中,應用程序部署過程可能沒有想象中的那么簡單。應用程序其實非?!该舾小梗诓渴疬^程中,它會發現自己身處一個陌生的環境中,并且在與不同硬件、不同基礎設施軟件,以及陌生的鄰居(應用程序)行交互。如果期望應用程序正常地運行,編碼和部署過程都是重中之重。兩者之間的平衡常常依賴于程序的編寫語言、程序構成的運行時和工具,因此,不同的技術棧可能需要不同的部署工具。

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

當下,經過一年的發展,Capsule 1.0 正式發布——一個簡單、健壯且靈活的 JVM 應用部署工具。Capsule 迎合 JVM 應用的獨特優勢和需求,因此這里有理由相信這是最簡單、最強大的 JVM 應用部署方式,不管是用于一個桌面應用、microservice 或復雜的 Web 應用。Capsule 不僅適用于 Java 應用程序,還能應用于所有 JVM 語言,從 Jruby、Jython 和 Groovy,到 Kotlin、Clojure 和 Scala,再到 Frege 和 OCaml-Java。如果你在寫 JVM 程序,給 Capsule 一個機會。

你可以這樣來理解 capsule,將它當作 steroids 上的1個 fat JAR(在允許本地庫的同時也不會干擾到依賴項)與1個聲明式啟動腳本的整合;另一個理解方式是,將其當作部署階段的構建工具。正如構建管理工具一樣, Capsule 從構建到應用發布的各個環節都有全方位的管理。

Capsule 在設計時一直遵循以下原則:

打包應該是輕量、可移植和便捷的。無論多么復雜,不管有多少 JAR 文件組成,或者有多少腳本語言的源文件還是本地庫,Capsule 都可以包裝任何 JVM 應用到一個名為 Capsule 的可執行 JAR,并且可以在任何平臺上運行。Capsule 可以直接包含應用的所有依賴項,或簡單地聲明部分或者全部,一旦發布將會被完整的下載。這就是 fat JAR 的工作方式。如果愿意, capsules 本身也可以置于 Maven repositories,在發布時進行下載。

安裝對主機系統的影響最小,并對更新選擇性支持。在 capsule 首次安裝時,其正常運行需要依賴在1個臨時目錄中生成的一些文件,隨后用戶可以在任何時刻刪除這些文件,不會對 capsule 產生任何不良影響。capsule 可以選擇性地支持更新——不管是應用或者是其依賴關系——當啟動時會自動下載。這些依賴關系——可以是語言運行時或者是 Web 容器——也可以被其他 capsule 共享。

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

當工具和標準已經存在時,不用再重造車輪。Capsule 是用 Java 編寫的,并可以通過 Java 擴展。它遵循 JVM 生態系統,而不是重造車輪,僅使用現有的工具和標準。capsule 打包在一個可執行 JAR,并將所有元數據存儲為簡單的 JAR-manifest attributes 中;并且可以根據需要,從 Maven repositories 中下載全部或者部分,并通過 Maven、Gradle 和 Leiningen 這些流行的 JVM 工具構建。Capsule 本身是一個簡單的 Maven 依賴,就像所有的構建工具插件,不需要再安裝其他新工具。

通過 Caplets 實現的 Capsule 魔法

Capsule 之所以能保持簡單還能提供這些功能主要歸功于 caplets,以模塊化定制 Capsule 行為。Caplets 可以嵌入到1個 capsule,或者多帶帶進行包裝并使用命令行包裝和修改現有 capsule 行為。

Capsule 的第一個 caplet 是 Maven caplet,允許開發者在 manifest attributes 中聲明部分或全部的應用依賴關系,而不用嵌入到 capsule JAR 里。雖然這對許多應用來說并不必要,不妨通過以下兩個用例來深入了解 Capsule 的潛力。

首先是一個簡單的 Hello World servlet。建成后,它將創建一個標準的 WAR 文件并部署到任何 servlet 容器。仔細觀察后發現,WAR 的確有點特別。其內容是:

    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

如你所見, WAR 包含 Capsule 類,這意味著它是一個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 容器,你可以直接執行 java -jar build/libs/capsule-runnable-war.war (或者,甚至簡單的./capsule-runnable-war.war,如果 capsule是「真正可執行」——見用戶文檔的指令),它會自動下載 Jetty,并用 Jetty 來啟動 servlet。Jetty 工件將被緩存,并可以共享到其他需要的 caplets中。

另一個例子使用 JavaScript,Avatar 項目在 JVM 上實現 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

當 capsule 發布,Avatar 運行時——包括針對本地操作系統的本地庫,將從 Maven repository 下載到本地并緩存,并與其他 Avatar capsules 共享。

其他 caplets 將包含:一個守護進程 caplet, 作為 Unix 或 Windows 守護進程來發布 capsule;一個安全 caplet,會在 Java 沙箱(通過安全策略定義)內啟動 capsule;一個 desktop caplet,會將包含了一個 GUI 應用程序的 capsule 轉化為一個 Windows、Mac 或 Linux 的本地可執行程序;一個容器 caplet,在一個或多個容器內運行 capsule。

為 Capsules 設計的輕量級容器

容器對沙箱應用來說是一個有效方式,可以簡化部署和鞏固服務器,所以對任何的軟件堆棧而言,它們都非常有利于 dev-ops 和安全。然而,由于 JVM 應用只有最小的環境需求 (即一個內核和一個 JVM),它們通常是可移植的,使用一個像 Docker 的容器解決方案無疑是浪費時間和空間。另一方面,shield caplet 創建了一個輕量級容器,無需創建大圖像。

例如,可以通過簡單地橋接網絡在1個容器中方便地運行 quasar-stocks Web 應用。

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

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

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

當一切如預期那樣正常工作,無需任何復雜的操作,就可以在最終部署的服務器上(可能是一個守護進程)發布相同的命令來配置端口轉發使服務公共可用,并通過沙箱保證了應用程序的強安全性。

現在

是時間打開 capsule.io 并啟動 capsules 了!

它們需要跟蹤以避免沖突,甚至這樣還不夠,因為它們不支持本地庫。

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

所有平臺都支持 JVM,必要的腳本和本地構件可能也一樣需要。

可能需要更長的啟動時間,比如依賴項需要重新下載。

shield caplet 使用 LXC 將 capsule 放于容器內。

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

OneAPM for Java 能夠深入到所有 Java 應用內部完成應用性能管理和監控,包括代碼級別性能問題的可見性、性能瓶頸的快速識別與追溯、真實用戶體驗監控、服務器監控和端到端的應用性能管理。想閱讀更多技術文章,請訪問 OneAPM 官方博客。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64573.html

相關文章

  • 零日攻擊是混合云面臨主要問題

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

    plus2047 評論0 收藏0
  • Hinton膠囊理論代碼開源,上線即受熱捧

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

    tianlai 評論0 收藏0
  • 揭開迷霧,來一頓美味Capsule」盛宴 | 附代碼實現 + 全新實驗

    摘要:本文試圖揭開讓人迷惘的云霧,領悟背后的原理和魅力,品嘗這一頓盛宴。當然,激活函數本身很簡單,比如一個激活的全連接層,用寫起來就是可是,如果我想用的反函數來激活呢也就是說,你得給我解出,然后再用它來做激活函數。 由深度學習先驅 Hinton 開源的 Capsule 論文 Dynamic Routing Between Capsules,無疑是去年深度學習界最熱點的消息之一。得益于各種媒體的各種...

    NSFish 評論0 收藏0
  • Reddit 討論:HintonCapsule網絡真比CNN效果更好嗎?

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

    ZweiZhao 評論0 收藏0
  • 幾種 Docker 監控工具對比

    摘要:在我們列舉的幾個監控的服務或平臺中,這是唯一一款國內產品。也是一款付費監控解決方案,計劃收費方案是美分小時。同樣也支持監控,還包括對容器級事件的監測停止開始等等和管理容器產生的日志。由于是一個監控方案,相對來說它的安裝和部署都比較簡單。 輕量級虛擬化容器 Docker,自發布以來便廣受業界關注,在開源界和企業界掀起了一陣風。Docker 容器相對于 VM 有以下幾個優勢:啟動速度快;資...

    張春雷 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<