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

karaf

karaf_未来是Apache Karaf上的微服务架构相关推荐

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

    apache karaf 这是Jamie Goodyear的客座博客文章( 博客 , @ icbts ). 他是Savoir Technologies的开源倡导者,Apache开发人员和计算机系统分析 ...

  2. 未来是Apache Karaf上的微服务架构

    这是Jamie Goodyear的客座博客文章( 博客 , @ icbts ). 他是Savoir Technologies的开源倡导者,Apache开发人员和计算机系统分析师: 他为全球大型组织设计 ...

  3. 公有云上基于微服务架构SAAS产品研发实践「活动通知」

    公有云SAAS产品不同于传统的软件包产品,我们不仅需要负责软件的研发,同时需要负责产品的运维,面对众多用户,需要保障产品7X24不间断运行:客户业务是不断变化的,产品需要在持续运行过程中进行持续升级, ...

  4. 从微服务架构的现状和未来看学习路径

    在当今的互联网系统架构中,微服务已然成为整个服务端系统架构的标配,但不同的公司由于发展阶段.规模及历史现状的不同,所以在具体的实现路径及形态上一般会有所差别. 一般来说,对于新生的创业公司来说,由于没 ...

  5. 系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗

    在 <微服务架构设计模式> 一书中,作者总结了关于微服务的一些"重点",原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻.但如同我给所有客户的忠告一样,我想对 ...

  6. 微服务架构(Microservices)

    说在前面 好久没写博文了,心里痒痒(也许是换工作后,有点时间了吧).最近好像谈论微服务的人比较多,也开始学习一下,但是都有E文,看起来半懂不懂的. Martinfowler的< 微服务>, ...

  7. 【架构】分布式服务架构与微服务架构

    文章目录 0)服务相关架构的演变 *关于面向对象.面向组件.面向服务 1)面向服务架构(SOA) 1.1 什么是面向服务架构(SOA)? 1.2 为什么需要SOA? 1.3 SOA 的特征 1.4 S ...

  8. blog微服务架构代码_DDD+微服务大型案例:Uber如何从复杂的RPC微服务转向面向业务领域的微服务架构DOMA? -优步工程博客...

    最近,围绕面向服务的体系结构,尤其是微服务体系结构的弊端进行了大量讨论.仅仅几年前,由于许多人宣传微服务架构的好处,例如独立部署形式的灵活性,明确的所有权,系统稳定性的改进以及更好的关注点分离,很多人 ...

  9. 企业级BPM之微服务架构演进

    BPM平台在各行业的IT架构中都是重要的基础支撑平台,十二五期间,企业级BPM作为SOA体系下的关键组件,经历了一个加速建设的过程.我们也有幸参与了一些行业的流程平台建设,今天与大家分享我们在流程引擎 ...

最新文章

  1. [SqlServer]数据库中自定义拆分字符串函数Split()
  2. junit4X系列--Builder、Request与JUnitCore
  3. 通过特殊字符查询所在表 或 存储过程
  4. android自定义progressbar样式,Android开发中如何实现自定义ProgressBar的样式
  5. Flink从入门到精通100篇(二十一)-Flink 状态(State)管理在推荐场景中的应用
  6. UriComponentsBuilder 拼接URL、解析URL
  7. Angular里的RouterOutlet指令学习笔记
  8. 单机启动nacos_SpringBoot集成Nacos的详细教程
  9. 无心剑中译谢赫·汉尼弗《吻封深情》
  10. FIN7 正在转向密码重置和软件供应链攻击
  11. PPT文件如何大幅度瘦身、减小所占空间、提高播放速度?
  12. LINUX下载编译Paho-Mqtt-C
  13. 【通信原理 入坑之路】基于MATLAB的移动通信系统仿真 之 瑞利衰落信道的原理与仿真
  14. oppo强制升级android版本,OPPO R17升级更新安卓9.0固件rom刷机包:正式版本-C.10
  15. 软件设计师【软考中级】复习笔记 —— 第十章(多媒体基础知识)
  16. [4G5G专题-46]:物理层-自适应编码调制AMC与调制编码方案(MCS, CQI, SINR, HARQ,Code Rate, efficiency)
  17. 学python就业好吗_Python就业行情怎么样?Python好学吗?
  18. 来篇鸡汤文吧,教你如何七周内从小菜鸟成长为一名合格的数据分析师
  19. 锁相环(PLL)基本结构及相关基本知识
  20. spring cloud、gradle、父子项目、微服务框架搭建---搭建Eureka注册中心(一)

热门文章

  1. Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?
  2. 数据链路层相关技术总结
  3. 硬盘的IDE和串口什么意思
  4. 极客日报:爆字节跳动日均进账10.07亿元;iPhone 13粉屏上热搜;英特尔跌落神坛,CEO回应:是我们骄傲自大了
  5. springboot 结合 ice(飞冰) 实现上传功能
  6. arduino人体红外报警实验
  7. linux创建桥接接口,Linux创建桥接网络
  8. EmEditor,如何开启显示制表符
  9. 停车场寻车难?蓝牙5.1提供的新思路
  10. Android 利用摄像头指尖测试心率