apache karaf_未来是Apache Karaf上的微服务架构

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和我们的应用程序代码联系在一起。

1个
例如,用户可以使用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.} 
}

2

当我们将这些类作为捆绑部署到Karaf中时,我们获得了功能特别强大的应用程序即服务。 我们为服务提供的每个配置都会实例化一个新的Camel路由器(这些配置文件非常简单地由Greeting和Name组成)。 骆驼的Karaf命令可以对这些路线进行细粒度的控制,从而为操作员提供简单的管理。

上面的示例的完整代码可通过github获得 ,并在Packt Publishing的Apache Karaf Cookbook中进行了详细探讨。

诸如上述的微服务架构为诸如骆驼路线或CXF端点之类的常见应用释放了OSGi的强大功能。 这些并不是唯一受益的应用程序。 我想分享一下我们的Karaf成功案例,其中重点介绍了Apache Karaf如何帮助将结构引入到现有的基于大规模微服务的项目中。

想象一下,有成百上千个分发包分布在数十个相互连接的项目上,这些项目实际上已部署在一个普通的OSGi内核中,并祝万事如意,以成功地正常启动。 SDN和NFV平台OpenDaylight就是在几个月前找到自己的情况的。

3

使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AppScan api登录接口 postman_如何通过Postman调用EDI系统的API?

知行EDI系统主要是用来实现贸易双方的数据交换的过程,这个过程中,贸易双方往往需要根据国际通用的消息格式收发信息,我们称符合国际规范的消息文件为EDI报文,然而不同的公司会结合ERP的接口情况选择不同的集成方式,例如…

指针函数和函数指针

概述指针函数和函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针、函数指针变…

android显示绘图动画,Android自定义View绘图实现渐隐动画

实现了一个有趣的小东西:使用自定义view绘图,一边画线,画出的线条渐渐变淡,直到消失。效果如下图所示:用属性动画或者渐变填充(shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边渐隐)&#…

csrf spring_无状态Spring安全性第1部分:无状态CSRF保护

csrf spring如今,随着RESTful架构变得越来越标准,可能值得花一些时间重新考虑当前的安全方法。 在这一小系列博客文章中,我们将探索以无状态方式解决与Web相关的安全性问题的几种相对较新的方法。 这第一篇文章是关于保护您的网站免受跨站请求…

python网络编程项目_python网络编程详解

最近在看《UNIX网络编程 卷1》和《FREEBSD操作系统设计与实现》这两本书,我重点关注了TCP协议相关的内容,结合自己后台开发的经验,写下这篇文章,一方面是为了帮助有需要的人,更重要的是方便自己整理思路,加…

C - 指针总结

指针是什么?指针是一变量或函数的内存地址,是一个无符号整数,它是以系统寻址范围为取值范围,32位,4字节。指针变量:存放地址的变量。在C 中,指针变量只有有了明确的指向才有意义。指针类型int* …

android网络转圈,android基于dialog加载时转圈圈很好的demo

【实例简介】这是一个android基于dialog加载时转圈圈很好的完整demo,很适合新手学习,希望对有需要的朋友能得到帮助【实例截图】【核心代码】dialog_anim└── dialog_anim├── AndroidManifest.xml├── bin│ ├── AndroidManifest.xml│ ├…

spring期刊状态_无状态Spring安全性第2部分:无状态认证

spring期刊状态Spring Stateless Security系列的第二部分是关于以无状态方式探索身份验证的方法。 如果您错过了有关CSRF的第一部分,可以在这里找到。 因此,在谈论身份验证时,其全部内容就是让客户端以可验证的方式向服务器标识自己。 通常&…

分享10个值得关注的C语言开源项目

来源于网络,如有侵权,告知必删。

python3 x默认使用的编码_python3默认使用什么编码

python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示。 字符串通过编码转换成字节码,字节码通过解码成为字符串encode:str --> bytes(推荐学习:Python视频教程) decode&#xff1a…

html中写css代码,开发DIV CSS时 先写CSS代码还是先写HTML代码

相信良多LOVE用DIVCSS技术启示重构网页的爱好者友好,在起源学习DIVCSS的时分都邑想一个标题,想晓得DIVCSS妙手或有教育者在开发制作html页面的时刻,下场是先写html照样先写css?带着这…

象棋子 设计模式_通过设计国际象棋游戏了解策略模式

象棋子 设计模式今天,我们将借助一个示例来尝试了解策略模式。 我们将考虑的示例是国际象棋游戏。 这里的目的是解释策略模式,而不是构建全面的国际象棋游戏解决方案。 策略模式:策略模式被称为行为模式–用于管理对象之间的算法&#xff0…

入门C语言10问10答

1 如何理解变量与常量?变量与常量相当于数据的可读可写与只读,常量是数据的一种保护机制。在内存分配给程序的内存块中有专门的常量(只读)存储区。2 整型数据的溢出问题任何一种数据类型的数据在计算机中都有它确定的数值表示范围&#xff0…

mac json格式化工具_简洁好用的工具都是相似的

大家好,我是你们的章鱼猫。不知道大家了不了解 jq 这个工具呢?指的不是 JQuery,而是一个命令行工具。jq 是一个轻量级而且灵活的命令行 JSON 解析器,类似用于 JSON 数据的 sed 工具。我们来看一下使用 jq 处理 json 的基本用法(更…

android 撑满剩余空间,怎么让LinearLayout占据父布局的所有剩余空间

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"android:paddingBottom"dimen/activity_vertical_margin"androi…

战神4 幕后花絮 概念艺术_Java 9幕后花絮:新功能从何而来?

战神4 幕后花絮 概念艺术找出Java幕后发生的事情,以及新功能如何实现 在上一篇文章中,我们介绍了即将发布的Java 9版本的新功能和尚待解决的功能,并简要提到了将新功能添加到下一个版本之前要经历的过程。 由于此过程几乎影响了所有Java开发人…

ID生成器 雪花算法

背景:在很多业务场景下,我们都需要一个唯一的 ID 来进行一些数据的交互,那么如何生成这个唯一的 ID 呢?如果在单机的情况下,生成唯一ID,可以利用机器内存的特点,通过内存分配即可。但我们线上的…

2014 android 机型排行,2014年10月十佳Android系统智能安卓手机排行榜单 Note 4第一名...

Android系统手机经过几年的发展,如今已经成了大家购机的首选。但在市面上数量众多的Android家族成员中,那些才是真正值得期待和拥有的机型,或许每个人会有不同的答案。如果你还在几款机型的选择上纠结,那么不妨借助国外媒体Androi…

python anaconda安装_Python - 安装并配置Anaconda环境

$ py --version # 当前默认python版本 Python 3.7.1 $ conda create --name testpy2 python2.7 pandas # 创建名为testpy2的运行环境,并安装pandas包及其依赖包 Solving environment: done ## Package Plan ## environment location: D:\DownLoadFiles\anaconda3\en…

jstack调试_增压的jstack:如何以100mph的速度调试服务器

jstack调试使用jstack调试实时Java生产服务器的指南 jstack就像U2一样-从时间的黎明就一直在我们身边,我们似乎无法摆脱它 。 除了笑话,到目前为止,jstack是您的工具库中用于调试实时生产服务器的最方便的工具之一。 即便如此,我仍…