apache karaf_未来是Apache Karaf上的微服务架构
apache karaf
這是Jamie Goodyear的客座博客文章( 博客 , @ icbts )。 他是Savoir Technologies的開源倡導(dǎo)者,Apache開發(fā)人員和計(jì)算機(jī)系統(tǒng)分析師; 他為全球大型組織設(shè)計(jì),批判和支持了體系結(jié)構(gòu)。 他擁有紐芬蘭紀(jì)念大學(xué)的計(jì)算機(jī)科學(xué)理學(xué)學(xué)士學(xué)位。
Jamie曾在系統(tǒng)管理,軟件質(zhì)量保證和高級(jí)軟件開發(fā)人員職位中工作,其業(yè)務(wù)范圍從小型初創(chuàng)企業(yè)到國(guó)際公司。 他已經(jīng)在Apache Karaf,ServiceMix和Felix上獲得了提交者身份,并且是Apache Karaf的項(xiàng)目管理委員會(huì)成員,并且是Apache Software Foundation成員。 他的第一本印刷出版物是與Johan Edstrom合著的《即時(shí)OSGi入門》,Packt Publishing,然后是與Johan Edstrom和Heath Kesler一起學(xué)習(xí)Apache Karaf,Packt Publishing的。 他的第三本也是最新出版的書是《 Apache Karaf Cookbook》 ,Packt Publishing和Johan Edstrom,Heath Kesler和Achim Nierbeck。
我喜歡微服務(wù)架構(gòu)。
關(guān)于構(gòu)成微服務(wù)的內(nèi)容有很多描述,可以按照模式描述很多規(guī)范。 簡(jiǎn)而言之,我傾向于將它們描述為應(yīng)用程序可以為他人提供服務(wù)的最小工作單元。 將這些服務(wù)整合在一起,我們便能夠構(gòu)建更大的體系結(jié)構(gòu),這些體系結(jié)構(gòu)模塊化,重量輕且具有適應(yīng)變化的能力。
從現(xiàn)代系統(tǒng)架構(gòu)的角度來(lái)看,為小型應(yīng)用程序提供完整生命周期控制的能力是我們的想法平臺(tái)。 運(yùn)營(yíng)商只需部署所需的服務(wù),就地更新它們,并根據(jù)需要擴(kuò)展其他實(shí)例。 另一種描述方式是應(yīng)用程序即服務(wù)(AaaS)。 采用特定的小型服務(wù),例如Apache Camel路由或Apache CXF端點(diǎn),并在不破壞整個(gè)應(yīng)用程序的情況下對(duì)其進(jìn)行調(diào)整。 Apache Karaf IS是執(zhí)行微服務(wù)的平臺(tái)。
為了簡(jiǎn)化微服務(wù),Karaf提供了許多開箱即用的有用功能。
- 一組經(jīng)過(guò)良好測(cè)試的庫(kù)和框架,有助于為組裝應(yīng)用程序平臺(tái)消除猜測(cè)。
- 通過(guò)各種機(jī)制(例如Apache Maven)配置庫(kù)或應(yīng)用程序。
- 功能描述符,可一起部署相關(guān)服務(wù)和資源。
- 控制臺(tái)和基于Web的命令可幫助您輕松進(jìn)行精細(xì)的控制,并且
- 通過(guò)Pax考試簡(jiǎn)化了集成測(cè)試。
我最喜歡的微服務(wù)模式之一是將Apache Camel與Apache Karaf上的托管服務(wù)工廠(MSF)一起使用。 Camel提供了一個(gè)簡(jiǎn)單的DSL,用于將企業(yè)集成模式連接在一起,以將數(shù)據(jù)從端點(diǎn)A移動(dòng)到端點(diǎn)B為例。 托管服務(wù)工廠是一種模塊化模式,用于配置驅(qū)動(dòng)的微服務(wù)部署–將ConfigAdmin,OSGi Service Registry和我們的應(yīng)用程序代碼聯(lián)系在一起。
例如,用戶可以使用MSF創(chuàng)建配置以連接其駱駝路線,每個(gè)配置將生成唯一的PID。 這種模式確實(shí)非常強(qiáng)大。 創(chuàng)建100個(gè)配置,并將實(shí)例化100個(gè)相應(yīng)的微服務(wù)(駱駝路線)。 但是,只有一組代碼需要維護(hù)。
讓我們仔細(xì)看一下托管服務(wù)工廠的實(shí)現(xiàn)。 ManagedServiceFactory負(fù)責(zé)管理實(shí)例化(configurationPid),創(chuàng)建或更新實(shí)例化服務(wù)的值,最后負(fù)責(zé)在服務(wù)實(shí)例化之后進(jìn)行清理。 閱讀有關(guān)ManagedServiceFactory API的更多信息。
public class HelloFactory implements ManagedServiceFactory {@Overridepublic String getName() { return configurationPid; }@Overridepublic void updated(String pid, Dictionary dict) throws ConfigurationException { // Create a dispatching engine for given configuration.}@Overridepublic void deleted(String pid) {// Delete corresponding dispatch engine for given configuration.}//We wire in blueprintpublic void init() {} public void destroy() {}public void setConfigurationPid(String configurationPid) {}public void setBundleContext(BundleContext bContext) {}public void setCamelContext(CamelContext camelContext) {} }我們重寫給定的ManageServiceFactory接口以與DispatchEngines一起使用。 DispatchEngine是一個(gè)簡(jiǎn)單的類,其中包含用于使用給定配置實(shí)例化Camel路由的代碼。
public class HelloDispatcher {public void start() {// Create routeBuilder using configuration, add to CamelContext.// Here ‘greeting’ and ‘name’ comes from configuration file.from(“timer://helloTimer?fixedRate=true.=1000").routeId("Hello " + name).log(greeting + " " + name); }public void stop() {// remove route from CamelContext.} }
當(dāng)我們將這些類作為捆綁部署到Karaf中時(shí),我們獲得了功能特別強(qiáng)大的應(yīng)用程序即服務(wù)。 我們?yōu)榉?wù)提供的每個(gè)配置都會(huì)實(shí)例化一個(gè)新的Camel路由器(這些配置文件非常簡(jiǎn)單地由Greeting和Name組成)。 駱駝的Karaf命令可以對(duì)這些路線進(jìn)行細(xì)粒度的控制,從而為操作員提供簡(jiǎn)單的管理。
上面的示例的完整代碼可通過(guò)github獲得 ,并在Packt Publishing的Apache Karaf Cookbook中進(jìn)行了詳細(xì)探討。
諸如上述的微服務(wù)架構(gòu)為諸如駱駝路線或CXF端點(diǎn)之類的常見應(yīng)用釋放了OSGi的強(qiáng)大功能。 這些并不是唯一受益的應(yīng)用程序。 我想分享一下我們的Karaf成功案例,其中重點(diǎn)介紹了Apache Karaf如何幫助將結(jié)構(gòu)引入到現(xiàn)有的基于大規(guī)模微服務(wù)的項(xiàng)目中。
想象一下,有成百上千個(gè)分發(fā)包分布在數(shù)十個(gè)相互連接的項(xiàng)目上,這些項(xiàng)目實(shí)際上已部署在一個(gè)普通的OSGi內(nèi)核中,并祝萬(wàn)事如意,以成功地正常啟動(dòng)。 SDN和NFV平臺(tái)OpenDaylight就是在幾個(gè)月前找到自己的情況的。
使用Karaf Feature描述符,每個(gè)項(xiàng)目都能夠?qū)⑵湟蕾図?xiàng),捆綁包和其他資源組織成一致的結(jié)構(gòu)。 開發(fā)了自定義命令以與其核心服務(wù)進(jìn)行交互。 每個(gè)項(xiàng)目到項(xiàng)目整體的集成測(cè)試都是自動(dòng)化的。 最后,所有這些項(xiàng)目都已集成到自己的自定義發(fā)行版中。
他們的第一個(gè)基于Karaf的版本Helium即將發(fā)布。 我們都期待著將SDN和NFV社區(qū)歡迎到Karaf。
雖然將Apache Karaf 3.0.x系列保持為我們的主要生產(chǎn)目標(biāo),但社區(qū)一直在忙于開發(fā)下一代Karaf容器。
4.0.x系列將通過(guò)Felix 4.4.1和Equinox 3.9.1-v20140110-1610附帶OSGi Rev5支持,以及基于聲明服務(wù)而不是藍(lán)圖的完全重構(gòu)的內(nèi)部框架。 從用戶的角度來(lái)看,這些更改將產(chǎn)生一個(gè)更小,更高效的Karaf內(nèi)核。 Karaf中將提供藍(lán)圖功能,因此您可以輕松安裝基于藍(lán)圖的應(yīng)用程序。 您將始終能夠在Karaf中使用“藍(lán)圖”。 因此,從用戶角度來(lái)看,主要區(qū)別在于,如果需要,您需要依賴Blueprint服務(wù)。
這是對(duì)Apache Karaf上的微服務(wù)架構(gòu)的非常簡(jiǎn)要的概述,以及Karaf的未來(lái)方向。 我建議任何對(duì)微服務(wù)感興趣的人訪問(wèn)OSGi聯(lián)盟網(wǎng)站 ,并加入Apache Karaf社區(qū) 。 對(duì)于那些想深入學(xué)習(xí)高級(jí)定制Karaf發(fā)行版的人,可以看看Aetos 。 Apache Karaf也是JBoss Fuse的一部分。
翻譯自: https://www.javacodegeeks.com/2014/10/the-future-is-micro-service-architectures-on-apache-karaf.html
apache karaf
總結(jié)
以上是生活随笔為你收集整理的apache karaf_未来是Apache Karaf上的微服务架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: javaone_JavaOne 2014
- 下一篇: FF任命新全球CEO 贾跃亭等高管宣布增