未来是Apache Karaf上的微服务架构
這是Jamie Goodyear的客座博客文章( 博客 , @ icbts )。 他是Savoir Technologies的開源倡導者,Apache開發人員和計算機系統分析師; 他為全球大型組織設計,批判和支持了體系結構。 他擁有紐芬蘭紀念大學的計算機科學理學學士學位。
Jamie曾在系統管理,軟件質量保證和高級軟件開發人員職位中工作,其業務范圍從小型初創企業到國際公司。 他已經在Apache Karaf,ServiceMix和Felix上獲得了提交者身份,并且是Apache Karaf的項目管理委員會成員,并且是Apache Software Foundation成員。 他的第一本印刷出版物是與Johan Edstrom合著的《即時OSGi入門》,Packt Publishing,然后是與Johan Edstrom和Heath Kesler一起學習Apache Karaf,Packt Publishing的。 他的第三本也是最新出版的書是《 Apache Karaf Cookbook》 ,Packt Publishing和Johan Edstrom,Heath Kesler和Achim Nierbeck。
我喜歡微服務架構。
關于微服務的構成有很多描述,可以按照模式描述許多規范。 簡而言之,我傾向于將它們描述為應用程序可以為他人提供服務的最小工作單元。 將這些服務整合在一起,我們便能夠構建更大的架構,這些架構具有模塊化,重量輕且易于更改的特點。
從現代系統體系結構的角度來看,為小型應用程序提供完整生命周期控制的能力是我們的想法平臺。 運營商只需部署所需的服務,就地更新它們,并根據需要擴展其他實例。 另一種描述方式是應用程序即服務(AaaS)。 采用特定的小型服務,例如Apache Camel路由或Apache CXF端點,并在不破壞整個應用程序的情況下對其進行調整。 Apache Karaf IS是執行微服務的平臺。
為了簡化微服務,Karaf提供了許多開箱即用的有用功能。
- 一組經過良好測試的庫和框架,有助于為組裝應用程序平臺消除猜測。
- 通過各種機制(例如Apache Maven)配置庫或應用程序。
- 功能描述符,允許一起部署相關服務和資源。
- 控制臺和基于Web的命令可幫助您輕松進行精細的控制,并且
- 通過Pax考試簡化了集成測試。
我最喜歡的微服務模式之一是將Apache Camel與Apache Karaf上的托管服務工廠(MSF)一起使用。 Camel提供了一個簡單的DSL,用于將企業集成模式連接在一起,以將數據從端點A移動到端點B為例。 托管服務工廠是一種模塊化模式,用于配置驅動的微服務部署–將ConfigAdmin,OSGi Service Registry和我們的應用程序代碼聯系在一起。
例如,用戶可以使用MSF創建配置以連接其駱駝路線,每個配置將生成唯一的PID。 這種模式確實強大。 創建100個配置,并將實例化100個相應的微服務(駱駝路線)。 但是,只有一組代碼需要維護。
讓我們仔細看一下托管服務工廠的實現。 ManagedServiceFactory負責管理實例化(configurationPid),創建或更新實例化服務的值,最后負責在服務實例化之后進行清理。 閱讀有關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是一個簡單的類,其中包含用于使用給定配置實例化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.} }
當將這些類作為捆綁包部署到Karaf中時,我們獲得了功能特別強大的應用程序即服務。 我們為服務提供的每個配置都會實例化一個新的Camel路由器(這些配置文件非常簡單地由Greeting和Name組成)。 駱駝的Karaf命令可以對這些路線進行細粒度的控制,從而為操作員提供簡單的管理。
上面的示例的完整代碼可通過github獲得 ,并在Packt Publishing的Apache Karaf Cookbook中進行了詳細探討。
諸如上述的微服務架構為常見的應用(如駱駝路線或CXF端點)釋放了OSGi的強大功能。 這些并不是唯一受益的應用程序。 我想分享一下我們的Karaf成功案例,其中重點介紹了Apache Karaf如何幫助將結構引入現有的基于大規模微服務的項目中。
想象一下,有成百上千個分發包分布在數十個相互關聯的項目上,這些項目實際上已部署在一個普通的OSGi內核中,并祝萬事如意,以成功地正常啟動。 這就是SDN和NFV的平臺OpenDaylight在幾個月前發現的情況。
使用Karaf Feature描述符,每個項目都能夠將其依賴項,捆綁包和其他資源組織成一致的結構。 開發了自定義命令以與其核心服務進行交互。 每個項目到項目整體的集成測試都是自動化的。 最后,所有這些項目都已集成到自己的自定義發行版中。
他們的第一個基于Karaf的版本Helium即將發布。 我們都期待著將SDN和NFV社區歡迎到Karaf。
雖然將Apache Karaf 3.0.x系列保持為我們的主要生產目標,但社區一直在忙于開發下一代Karaf容器。
4.0.x系列將通過Felix 4.4.1和Equinox 3.9.1-v20140110-1610附帶OSGi Rev5支持,以及基于聲明服務而不是藍圖的完全重構的內部框架。 從用戶的角度來看,這些更改將產生一個更小,更高效的Karaf內核。 Karaf中將提供藍圖功能,因此您可以輕松安裝基于藍圖的應用程序。 您將始終能夠在Karaf中使用“藍圖”。 因此,從用戶角度來看,主要區別在于,如果需要,您需要依賴Blueprint服務。
這是對Apache Karaf上的微服務架構的非常簡要的概述,以及Karaf的未來方向。 我建議任何對微服務感興趣的人訪問OSGi聯盟網站 ,并加入Apache Karaf社區 。 對于那些想深入學習高級定制Karaf發行版的人,可以看看Aetos 。 Apache Karaf也是JBoss Fuse的一部分。
翻譯自: https://www.javacodegeeks.com/2014/10/the-future-is-micro-service-architectures-on-apache-karaf.html
總結
以上是生活随笔為你收集整理的未来是Apache Karaf上的微服务架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gg泰拉瑞亚助手电脑版(gg助手泰拉瑞亚
- 下一篇: 通过设计国际象棋游戏来了解策略模式