首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenDaylight系列文章(二):OpenDaylight初窥(上篇)之OpenDaylight的工程技术架构

不过呢,揭开其面纱之前熟悉它的背景技术是很有必要的。不然讨论OpenDaylight我们就会丈二和尚——摸不着头脑。 那么OpenDaylight控制器使用了哪些核心技术?...KARAF提供了一个基础容器的功能,OSGI“装配式技术规范”下它就像是建筑主体。...【小记】 OpenDaylight的功能组件如果在实际的应用全部安装,那么随着功能组件的发展或个性化的开发,ODL控制器就会暴饮暴食,变得身材臃肿,步履蹒跚。...它包含项目对象模型、标准集合、项目生命周期、依赖管理系统和用来定义生命周期阶段插件和目标的逻辑。 OpenDaylight里,Maven扮演着构件工厂的角色。...它管理着开发项目的资源,包括墙板、楼板、阳台这些最小单位的模块构件。项目开始建设的时候,资源的调配使用都是它说得算。

1K50

OSGi的模块化和动态模块的好处

2、复用 OSGi的组件模块使得它在应用可以非常简单的使用其他第三方组件。已经有很多的开源项目都是通过OSGi来发布他们的jar包,而且商业库也开始使用现成的包。...标准化管理API很容易现有和未来的系统中集成OSGi技术。 5、动态更新 OSGi 组件模块是一个动态的模块,模块可以不需要停止整个系统的情况下被安装、启动、停止、更新和卸载。...服务被使用的时候它们才会被注册。为了允许各种懒加载的场景,以使得它们可以节省运行时的巨大成本,OSGi的规范已经被优化过很多次了。...一是OSGi API应该使用能在所有环境中都有效的类;二是如果bundle包含了某个执行环境无效的代码,那么这个bundle就不能在该环境启动。OSGi规范,这两个问题都得到了解决。...在过去的十年,软件由于开源项目的爆发而发生了巨大的变化。十年以前,一个应用是由许多写代码的人在一起开发的。

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

盘点|Java程序员在用的大数据工具

受访者可以选择列表的选项或者列出自己的,本文主要关心的是大数据工具。...最初是Facebook设计和开发的,部署大量商用服务器上来处理大量的数据。高可用,无单点故障。 Redis-开源的(BSD)内存数据结构存储、内存库、缓存、消息代理。...EHCache-广泛使用的开源Java分布式缓存、J2ee、轻量级容器。 Hadoop-用java开发的开源分布式大数据框架,用来处理非常大规模数据,hadoop是集群化部署。...最初归属Apache Lucene项目中。 Spark-ASF中最活跃的项目,是一个开源的集群化计算框架。 Memcached–通用分布式缓存系统。...Apache Hive-Hadoop支持类SQL封装,将SQL语句变成mr程序来执行。 Apache Kafka–高吞吐量、分布式、消息发布-订阅系统,最早是Linkin开发的。

1.2K70

【原创】JVM 的类加载机制?盘它!

使用A中方法,要先创建一个实例new A(),Java虚拟机基于类的描述信息Java堆创建一个A的实例。 那何时会触发类的加载呢?...话外音:总结下,对象基本上都是jvm的堆区创建,创建对象之前,会触发类加载(加载、连接、初始化),类初始化完成后,根据类信息堆区实例化类对象,初始化非静态变量、非静态代码以及默认构造方法,对象使用完之后会在合适的时候被...2.模块化编程与热插拔 OSGi 旨在为实现 Java 程序的模块化编程提供基础条件,基于 OSGi 的程序很可能可以实现模块化级的热插拔功能,程序升级更新,可以只停用、重新安装然后启动程序的其中一部分...简单点说,OSGI 被设计专门用来开发可分解为功能模块的复杂的 Java 应用。OSGI提供以下优势: 1.可以动态地安装、卸载、启动、停止不同的应用模块,而不需要重启容器。...2.同一刻可以跑多个同一个应用模块的实例。 3.OSGISOA领域提供成熟的解决方案,包括嵌入式,移动设备和客户端应用等。 不管做什么,只要坚持下去就会不一样!

74720

Java程序员在用的大数据工具,MongoDB稳居第一!

受访者可以选择列表的选项或者列出自己的,本文主要关心的是大数据工具。...最初是Facebook设计和开发的,部署大量商用服务器上来处理大量的数据。高可用,无单点故障。 Redis-开源的(BSD)内存数据结构存储、内存库、缓存、消息代理。...EHCache-广泛使用的开源Java分布式缓存、J2ee、轻量级容器。 Hadoop-用java开发的开源分布式大数据框架,用来处理非常大规模数据,hadoop是集群化部署。...最初归属Apache Lucene项目中。 Spark-ASF中最活跃的项目,是一个开源的集群化计算框架。 Memcached–通用分布式缓存系统。...Titan–可扩展的图形数据库,针对集群存储和查询数千亿的图形数据做过优化。

942100

OpenDaylight Carbon二次开发实用指南

Maven Archetype的原理与其OpenDaylight的应用 Archetype[1]是一个Maven项目模板的工具。它提供了一种快速生成一致的Maven项目的方法。...作者编写本篇教程,使用下述URI下载的Archetype源码(建议使用git clone下载该源码,方便后面使用git checkout切换源码版本)。...这些参数可以在用户利用Archetype生成自己的项目,使用mvn archetype:generate命令被指定。...使用mvn archetype:generate命令,从本地仓库获取安装过的Archetype的artifact,生成自己所需的子项目。以下命令运行在控制台(Terminal)。...一个bundle包含一个或者多少Blueprint XML文件,会被认为是Blueprint bundles。这些Blueprint XML位于OSGI-INF/blueprint/目录下。

1.3K150

盘点:Java程序员在用的大数据工具

受访者可以选择列表的选项或者列出自己的,本文主要关心的是大数据工具。...最初是Facebook设计和开发的,部署大量商用服务器上来处理大量的数据。高可用,无单点故障。 Redis-开源的(BSD)内存数据结构存储、内存库、缓存、消息代理。...EHCache-广泛使用的开源Java分布式缓存、J2ee、轻量级容器。 Hadoop-用java开发的开源分布式大数据框架,用来处理非常大规模数据,hadoop是集群化部署。...最初归属Apache Lucene项目中。 Spark-ASF中最活跃的项目,是一个开源的集群化计算框架。 Memcached–通用分布式缓存系统。...Apache Hive-Hadoop支持类SQL封装,将SQL语句变成mr程序来执行。 Apache Kafka–高吞吐量、分布式、消息发布-订阅系统,最早是Linkin开发的。

42220

CTK Plugin Framework简介

插件进入ACTIVE状态,框架会调用start方法,插件离开ACTIVE状态,插件框架会调用stop方法。每一个插件都会接收到一个访问插件框架的唯一ctkPluginContext对象。...ctkPlugin对象是定义一个已安装插件的生命周期的访问点,插件环境安装的每个插件都必须有一个相关的ctkPlugin对象。...此外,插件必须有一个唯一的标识,插件的生命周期中,唯一标识不能改变(即使是插件更新),卸载和重新安装插件必须创建一个新的唯一标识。...3.4、动态更新 OSGi组件模型是一个动态模型,插件可以不关闭整个系统的情况下被安装、启动、停止、更新和卸载。...例如,插件可以用饿汉式启动,但是也可以被配置为仅其它插件使用它们才启动。服务可以被注册,但只有使用时才创建。懒加载场景可以节省大量的运行时成本。

2.7K20

灵活的类加载器OSGI

今天,通常引入OSGi的主要理由 是基于OSGi架构的程序很可能(只是很可能,并不是一定会,需要考虑热插拔后的内存管理、上下文状态维护问题等复杂因素)会实现模块级的热插拔功能,程序升级更新或调试除错...,可以只停用、重新安装然后启用程序的其中一部分,这对大型软件、企业级程序开发来说是一个非常有诱惑力的特性,譬如Eclipse安装、卸载、更新插件而不需要重启动,就使用到了这种特性。...加载方式从简单的树形变成平面网状 经典类加载结构 OGSI网状导入 OSGi,加载器之间的关系不再是双亲委派模型的树形结构,而是已经进一步发展成一种更为复杂的、运行时才能确定的网状结构。...这种网状的类加载器架构带来更优秀的灵活性的同时,也可能会产生许多新的隐患。 类加载可能进 行的查找规则如下:·以java.*开头的类,委派给父类加载器加载。...否则,查找是否自己的Fragment Bundle,如果是则委派给Fragment Bundle的类加载器加载。

64530

技术角 | 架构学习书摘总结(四)可扩展架构模式(下)

当我们实施微服务架构,根据团队规模来划分微服务数量,如果业务规模继续发展,团队规模扩大,我们再将已有的微服务进行拆分。...这样的拆分主要是为了提升项目快速迭代的效率避免开发的时候,不小心影响已有的成熟功能导致线上问题。...例如“服务发现”“服务路由”等其实都是ESB的功能,只是微服务剥离出来成了独立的基础系统。...服务隔离:某个微服务节点故障,最快最简单的处理方式就是直接将当前故障节点下线隔离,避免故障进行扩散。通常情况下,服务隔离分为主动隔离、被动隔离和手动隔离。...其他相关摘要 OSGi,插件被称为Bundle。

47650

模块化服务规范——OSGI

应用程序(称为bundle)无需重新引导可以被远程安装、启动、升级和卸载(其中Java包/类的管理被详细定义)。API还定义了运行远程下载管理政策的生命周期管理。...2003年Eclipse选择OSGi作为其插件的底层运行时架构。Equinox project对该理念进行了实验,2004年6月Eclipse3 R3发布。...5、开发不具备模块化的特性,一般企业项目往往是放到一个工程,这样造成的后果是模块化能力不强,难于维护,越大越不容易维护。...OSGI的优缺点 a) 您可以不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序的不同模块; b) 对于您应用程序的某一特定模块,容器可以同时运行该模块的多个版本; c) OSGi为开发嵌入式应用...但是具体未来的发展是否能够成为业界的标准有待验证。

1.5K30

几种Java热插拔技术实现总结

OSGI框架,每一个Bundle实际上都是可热插拔的,因此,对一个特定的Bundle进行修改不会影响到容器的所有应用,运行的大部分应用还是可以照常工作。...这种可动态更改状态的特性一些及时性很强的系统中比较重要,尤其是Java Web项目中,无需重启应用服务器就可以做到应用的更新。...使用OSGI的缺点如下: 1、每个Bundle都由单独的类加载器加载,与一些Java EE项目中使用比较多的框架整合比较困难,如Spring MVC、Struts2等,例如笔者尝试OSGI应用整合...项目上开发插件功能,开发插件就像开发独立应用一样,根据网站的介绍,使用该框架可以实现如下需求: 插件,您可以当成一个微型的SpringBoot项目来开发,简单易用。...插件扩展出系统各种功能点,用于系统灵活扩展,再也不用使用分支来交付不同需求的项目了。 插件可以集成各种框架及其各种spring-boot-xxx-starter。

1.9K10

三步学会用spring开发OSGI——(第一步:环境篇)

,随之而来的还有一套基于OSGi内核构建的全新部署和打包系统。...开发工具STS 如果使用普通的eclipse开发osgi,那么开发需要做很多的配置,所以建议使用spring社区加好插件的eclipse,基于这个开发会省去很多的麻烦。...STS也就是SpringSource Tool Suite,是spring社区基于eclipse添加的插件项目,功能非常强大。...Server视图选择 ? 选择刚配好的virgo runtime ? 完成后,Server里可以看到 ? virgo使用 这个其实底层运行的就是tomcat或者jetty等容器。...server中点击启动,启动virgo ? 可以看到virgo启动后就是加载各个osgi的插件 打开浏览器,输入 http://localhost:8080 得到默认的启动页面如下: ?

1.9K60

用Java的OSGi框架构建灵活模块化应用

引言现代软件开发构建可扩展、可管理和可升级的应用程序是一项关键任务为了满足这一需求Java的OSGi(Open Service Gateway Initiative)框架提供了一种模块化的解决方案本文将介绍...BundleActivator接口它是一个OSGi bundle的生命周期管理接口start方法我们注册了GreetingService服务以便其他bundle可以使用它stop方法用于bundle...停止进行清理工作。...首先,我们将上述代码编译成JAR文件并将其放入Apache Felix的运行目录然后,我们启动Apache Felix容器执行以下命令:java -jar bin/felix.jarApache Felix...控制台中我们可以使用以下命令来安装和启动bundle:install file:/path/to/demo.jarstart 安装和启动com.example.osgi.demo的

34140

【面试题精讲】JVM-打破双亲委派机制-OSGI模块化

版本管理:每个模块可以有自己的版本号,升级可以精确控制模块间的依赖关系,避免版本冲突。 热部署:可以在运行时动态加载和卸载模块,无需重启应用程序。 3.... OSGI 模块化系统,每个模块都被称为一个 Bundle,每个 Bundle 都有自己的类加载器,用于加载和隔离模块的类和资源。...生命周期管理:每个 Bundle 都有自己的生命周期,包括安装、启动、停止和卸载等阶段。OSGI 框架提供了生命周期的管理机制,确保每个模块各个阶段的状态转换正确无误。 4....版本管理:每个模块可以有自己的版本号,升级可以精确控制模块间的依赖关系,避免版本冲突。 热部署:通过动态加载和卸载模块,可以实现热部署,减少应用程序的停机时间。 6....平台兼容性:选择和使用 OSGI 框架,应考虑平台的兼容性和稳定性。 8.

26020

sofa-ark类隔离技术分析调研

尤其是项目越来越大,用到的组件越来越多时,内耗就更加明显。 业内方案 大概研究了一下,目前对于本地依赖调解也没有什么很好的银弹。绝大多数情况下,我们都是流程、文档上来进行把控。...Gradle5.0引入了"java-library"插件,试图让组件开发方在编写组件代码,主动控制好自己的依赖是否暴露给组件接入方(这个插件老版本也有,不过只有5.0版本真正有用)。...jvm的classpath要有项目所有依赖的jar包。...这就意味着,业务项目依赖了Ark Plugin包,我们仍然会默认传递依赖进这个项目的间接依赖。...IDE启动,由于主类的静态代码块是会在容器启动之前就会加载一次的。

1.6K30
领券