前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenDaylight系列文章(二):OpenDaylight初窥(上篇)之OpenDaylight的工程技术架构

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

作者头像
SDNLAB
发布2018-03-28 16:37:32
9720
发布2018-03-28 16:37:32
举报
文章被收录于专栏:SDNLABSDNLAB

上篇我们简单地和OpenDaylight控制器打了个照面,后续篇章会逐步介绍OpenDaylight的系统架构和实现机制。不过呢,在揭开其面纱之前熟悉它的背景技术是很有必要的。不然讨论OpenDaylight时我们就会丈二和尚——摸不着头脑。

那么OpenDaylight控制器使用了哪些核心技术?它的工程技术架构又是怎样的呢?

万殊一辙。OpenDaylight的工程技术架构其实就像一座高楼大厦的构造,核心技术如同风靡建筑行业的装配式技术。

OSGI---OpenDaylight的“装配式技术

【画外音】

装配式技术:现代建筑建造普遍采取的技术。这种技术理念下建筑的组成部分如墙板、楼板、阳台等等被看成一个个独立的模块,在构件工厂预制完成。然后在施工现场通过钢筋连接、焊接等方式进组装,最终建成整体建筑。

这个大家一看就明了,说白了就像积木游戏。呃,这样说来,OpenDaylight的实现岂不就是搭积木。。。说好的高大上呢。。。

OSGI:以java为技术平台的动态模块化规范。OSGI拥有许多优秀特性,如动态性、模块化和可扩展力。它在OpenDaylight中被引用为后端技术框架。

在OSGI框架规范下,OpenDaylight这栋高楼大厦是怎么建设起来的呢?

OpenDaylight的功能组件(feature)有很多。OSGI就像建筑行业的装配式技术那样去组装和管理这些feature:

在OSGI中部署的最小单位是bundle(bundle就相当于一个普通的jar包),它就像预制的建筑构件,比如墙板、楼板、楼梯、阳台;

多个bundle聚合在一起构建成一个feature,一个独立的房间(空间)。feature又可以聚合在一起形成一个大的feature、如同多个房间(空间)组成一个功能场所(楼层);

功能场所比如有健身场所(楼层)、餐饮场所(楼层)、娱乐场所(楼层)等等,有了这些高楼大厦的躯干就建造完成了。

在这个过程中,我们的键盘和CODE就如同建设大厦的工具,搅拌机、电焊机、起重吊车、铁铲。。。好吧,我承认这个画风不是那么美好。。。

KARAF---OpenDaylight的“建筑主体”

KARAF:是Apache旗下的开源项目,同时也是一个基于OSGI的运行环境,可以用于部署各种组件和应用程序。OpenDaylight控制器从HELIUM版本开始使用karaf作为底层架构。

KARAF提供了一个基础容器的功能,在OSGI“装配式技术规范”下它就像是建筑主体。如果建造的是商业大厦,那么就会把一些健身、娱乐、餐饮场所(feature)建造进来;如果建造的是住宅楼,那么聚合的就是各类居住户型。

【小记】

OpenDaylight的功能组件如果在实际的应用中全部安装,那么随着功能组件的发展或个性化的开发,ODL控制器就会暴饮暴食,变得身材臃肿,步履蹒跚。而OSGI框架和KARAF容器可以实现功能组件即插即用,保证了ODL控制器体态匀称、身形灵活。

Maven---OpenDaylight的“构件工厂”

Maven: 项目管理工具。它包含项目对象模型、标准集合、项目生命周期、依赖管理系统和用来定义生命周期阶段中插件和目标的逻辑。

在OpenDaylight里,Maven扮演着构件工厂的角色。它管理着开发项目的资源,包括墙板、楼板、阳台这些最小单位的模块构件。当项目开始建设的时候,资源的调配使用都是它说得算。

下面示例一下如何使用maven自动创建OpenDaylight项目基本结构并编译的:

环境配置

1、系统环境:ubuntu 14.04 64 bit

2、软件环境:Java JDK 1.8+、Maven 3.5.2

>>>>

maven配置

1、修改仓库

修改maven默认配置~/.m2/settings.xml文件,使用OpenDaylight自己的仓库,

命令如下:

cp -n ~/.m2/settings.xml{,.orig} ; \wget -q -O - https://raw.githubusercontent. ... s.xml > ~/.m2/settings.xml

2、创建工程

创建maven工程

root@ubuntu:~#mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate-DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeVersion=1.3.2-Carbon -DarchetypeRepository=https://nexus.opendaylight.org ... ublic

创建工程的过程中需要输入一些选项:

Define value for property 'groupId': : org.opendaylight.demo Define value for property 'artifactId': : topology

Define value for property 'version': 0.1.0-SNAPSHOT: : 0.1.0-SNAPSHOT

Define value for property 'package': org.opendaylight.demo: : org.opendaylight.demo.topology

Define value for property 'classPrefix': Topology: :

Define value for property 'copyright': : ZebraDecoder

Define value for property 'copyrightYear': 2017: : 2017

BUILD SUCCESS后会生成一个名为topology的文件夹,topology/下面的目录结构为:

该maven工程生成了bundles和bundle aggregator。 Bundles分别是api, artifacts, cli,features, impl,it,karaf,src; bundle aggregator即为pom.xml。 3、编译项目 root@ubuntu:~# cd topology/ root@ubuntu:~/topology# mvn clean install -DskipTests 4、验证工程 编译成功后,启动OpenDaylight root@ubuntu:~# cd /root/topology

raf/target/assembly/bin root@ubuntu:~/topology

raf/target/assembly/bin# .

raf

查看topology模块是否运行:

opendaylight-user@root>feature:list | grep topology

看到下图内容,说明组件已经正在运行,工程创建ok:

Netty---OpenDaylight的“水电系统”

Netty:java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

OpenDaylight南向使用Netty来管理底层的并发IO。Netty就像高楼大厦的水电系统,提供给水给电的通道,通过它高楼大厦可以调配水、电等能源。

Jersey---OpenDaylight的“布线系统”

“布线系统”保障大厦的多种网络应用需求,如语音、数字、视频等等

Jersey:开源的RESTful框架,实现了JAX-RS (JSR 311 & JSR 339) 规范。OpenDaylight北向使用Jersey提供REST接口。它就像一栋高楼大厦的“布线系统”。

以上简单列举了OpenDaylight使用的核心技术和工具。当然还有其它一些技术,如Infinispan(开源的数据网格平台,实现OpenDaylight控制器的集群)等等,在这里不作一一赘述了。后续篇章里这些技术会陆续登场亮相,敬请期待。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档