【一课专栏】解构ODL引子

  • 时间:
  • 浏览:1

另外ODL社区的官方wiki上有小量的各个项目,各个模块的各种各样的文档,其中的文档暗含ODL方方面面。很糙的,wiki上还有各种会议上社区核心管理及开发人员做的报告(Presentions)及视频的访问链接。还有ODL各子项目里docs目录里暗含的文档,这底下一般是很有价值的设计文档。除了ODL官方提供的文档,还有太久 你这人 网站都后能 搜到小量ODL相关的文档,包括在sdnlab.com上还有小量中文的文档。

这麼 看来,ODL项目还是有太久 文档的,你这人 ,从我看来,有文档太久 等于太久 不耍流氓,为哪几种呢?可能性ODL的大多数文档都另一个 多多很大的问題:陈旧过时,误导新手。你这人 ,从文档这方面来说,ODL社区都在另一个 多大流氓,也离米 是另一个 多小流氓。而看得人这篇短文的各位都在流氓的受害者,觉得是受害者,谁又给你们 就像《色戒》里的王佳芝对易先生因性生情一样,爱上了另一个 多汉奸加流氓呢。

总而言之,是你投入在ODL及其依赖的第三方类库的时间和精力,决定了你对ODL源码理解的淬硬层 和广度。正如卖油翁给朋友的启示:无他,唯手熟尔!

姿势1-静思式

首先太久 ODL的文档在哪里?

你你这人 姿势是指就随便看看,暂时都后能 否采取实际行动。你你这人 土最好的方式适合阅读的文档包括各子项目的User Guide和Developer Guide,已发布版本的Release Note,将发布版本的Release Plan,wiki上的各项目的Introducton。看哪几种文档等候随意,深浅自如,感兴趣就多看会,不感兴趣就打个酱油,用到了再深入研究,没用到就走马观花。当然,朋友还后能 通过搜索关键词功能找出你这人 朋友感兴趣的内容重点看看。

第四步也即最后一步,阅读代码中的注释,很糙是接口定义与抽象类里的注释,了解作者为哪几种要定义哪几种接口和抽象类。你这人 朋友要对照源码,找到对应的实现,可能性朋友能另一方画出类继承关系,那太久 基本分析明白了(有可能性继承的层次越深,Intellj企业版有个功都后能 否给你们 显示类继承关系图,很好)。

姿势2-走马观花式

ODL的所有项目的所有模块,基本都在对应的测试代码,包括集成测试代码和单元测试代码。集成测试代码会测试模块间的调用接口,单元测试代码暗含对模块内核心类,核心防止逻辑和土最好的方式的测试。分析测试代码后能 先从执行测试用例,分析用例执行日志入手。你这人 再修改每种测试用例代码,比如修改测试参数,继续执行并分析用例执行输出日志。通过你你这人 过程,朋友能对项目内主要的调用关系和调用土最好的方式做到心暗含数。

了解学习另一个 多开源项目太久 从阅读你你这人 开源项目的文档过后开始了了的。朋友说,这麼 文档的开源项目太久 耍流氓,那ODL开源社区是都在也耍流氓呢?ODL开源项目的文档在哪里?都在哪几种文档呢?文档质量为何会么会样?朋友应该为何会么会阅读哪几种文档呢?下面我一一给朋友进行解答。

你你这人 姿势是指朋友传统的阅读教科书的土最好的方式,即认认真真的从头至尾把文档阅读一遍,该画重点就画重点,朋友要深刻理解其中的概念,总结文档的层次行态和生心思想。你你这人 姿势适合阅读的文档包括ODL官方的Getting Started Guide,Installation Guide,Developer Guide里的controller子项目的每种。对于哪几种文档,阅读前,朋友要焚香沐浴(国外不焚香那就点根蜡烛),集中精神,你这人 ,认真的从头至尾的阅读一遍,掌握理解ODL基本概念,总体架构和核心设计思想,对ODL项目另一个 多多系统了解。但切记你这人 ,最新版本里哪几种文档也这麼 及时更新,与最新版本的实际情况会有每种出入,朋友可是我理解概念的本质与系统总体架构,可太久拘泥于细节。

做为一名无证驾驶ODL这辆SDN战车3年多的老司机,在基于ODL进行商用SDN控制器的研发过程中,总结了你这人 经验和教训,都在你这人 心得体会,借你你这人 可能性与朋友共同交流分享。以下虽非真理和圣经,但确觉得实来源于项目实践和另一方的点滴思考。在今后的一段时间里,我可能性带着我的故事和朋友共同学习ODL,帮助朋友更好的理解和掌握ODL。

你你这人 姿势很糙难度,后能 朋友颠倒过来看文档,反过来思考问題。比如ODL早期版本里的adsal和config subsystem相关的文档,看哪几种文档时,朋友要时时刻刻问另一方,哪几种功能为哪几种在最新版本里最终删改废弃了,其设计到底有哪几种问題和欠缺,而都后能 否仅仅从当时的介绍文档字面上去理解。当然,对于此类文档的阅读,朋友感觉土最好的方式掌握有困难说说,那就后能 干脆太久读了。

当然,哪几种姿势技巧都后能 与否临时的妥协,最终朋友还是想社区能提供高质量的文档,这就后能 朋友朋友共同努力,改造它(更新ODL过时文档),感化它(输出对他人有价值的新文档),让ODL社区的文档变成朋友心中想的模样。

作为成立于2013年的开源项目,OpenDaylight都后能 否说是网络开源界的另一个 多老兵,可能性从定位来讲,官方的解释是“Open Source SDN Platform”,他的落点是“平台”,太久 朋友可能性从平台的维度去理解ODL会看得人太久 设计之美。然而对于大多数使用者而言,经常会把OpenDaylight等同于SDN控制器,朋友底下的章节会对ODL的控制器属性进行讲解,但更多的篇幅会从软件分发的淬硬层 对ODL平台进行讨论,力图朋友能把握ODL的本质。朋友你你这人 讲将介绍怎么才能 才能 去高效的学习ODL。引子每种将告诉朋友你这人 土最好的方式论的东西,都后能 否说是你这人 经验之谈供朋友借鉴,总共分为文档阅读、源码分析、学习土最好的方式、参与贡献另一个方面,通过上下两篇文章进行阐述。上篇朋友讲一讲为何会么会阅读ODL文档及分析ODL源码的套路。

原文发布时间为:2018-09-6

姿势3-颠倒式

爱上了另一个 多流氓,朋友当然太久 能太久 逆来顺受,朋友能采取的土最好的方式有另一个 多,另一个 多太久 把它变成另一个 多好人,从此朋友就能同心同德,比翼双飞了;原来呢,太久 以针对的招式应对之。今天就把另一方摸爬滚打,呕心沥血分发出来的阅读ODL文档的另一个行之有效的姿势:静思式,走马观花式,颠倒式,推敲式分享给各位,哪几种不传之ODL心经希望各位珍惜之,践行之。

二、抽丝剥茧-分析ODL源码的若干建议

一、知己知彼-ODL文档的正确阅读姿势

分析源码的第一步建议太久直接从具体代码过后开始了了,太久 先看一下项目的大体目录行态,根据目录能基本猜测出项目主要暗含哪几种功能模块,可能性有项目说明文档,后能 对照一下文档。可能性能据此列出各功能模块与目录的对应关系,那就最好了。原来,朋友能做到对项目的功能模块有个总体上的把握。

第四步:阅读代码注释,了解作者设计初衷

第一步:大处着眼,把握项目的目录行态

可能性各位想在ODL社区的核心项目里有所贡献说说,核心项目里的docs目录下的文档太久 必读文档了。哪几种目录下一般是该项目内的核心设计文档。阅读哪几种文档,后能 朋友结合源码,反复对照,梳理总结,消化吸收。此类文档包括yangtools项目里的开发介绍文档,controller项目里的distributeddatastore的设计文档等。

对于这麼 使用第三方框架的ODL每种代码来说,上述套路还与否行之有效的。但ODL的源码固然复杂,原来意味太久 ODL使用了小量的第三方框架和库,比如Guava,netty,akka等等,很糙的,akka还是用Scala语言实现的。这给朋友学习分析ODL代码造成了一定的困难。既然原来,朋友还能为何回事呢?可能性觉得怀问題題与第三方库有关,那都后能 否把第三方库的源码也下载下来,一二三四,按照底下的套路再来一遍,分析下哪几种第三方库的源码喽。

你你这人 步朋友应该都都后能 先根据前两步的分析找到项目执行入口,你你这人 地方要注意,可能性ODL是基于OSGi框架的,每个模块的初始化是OSGi框架调用的,太久 ,每个模块都在独立的初始化入口。你这人 ,后能 朋友利用开发工具(比如Intellj)从执行入口(或模块的初始化入口)跟踪代码执行。最终朋友应该都都后能 画出大致的代码执行流程图。

本文来自云栖社区战略协作伙伴“SDNLAB”,了解相关信息后能 关注“SDNLAB”。

第三步:善用工具,跟踪代码,梳理流程

姿势4-推敲式

官方文档是在ODL官方网站

要想深入研究学习ODL,阅读分析你这人 ODL的项目源码是不可防止的,很糙是朋友在使用可能性基于ODL开发碰到bug的情况下,为了定位问題,跟踪分析源码太久 朋友开发人员不得不做的事情了。但分析ODL你你这人 规模的项目的源代码,对于任何人来说,肯定都都在一件轻而易举的事情。那在分析ODL源码时,有这麼 你这人 套路可循呢?我另一方基于这几年对ODL项目的跟踪研究和对ODL若干项目源码的阅读分析,总结出了几块建议,供朋友参考。

第二步:分析测试代码,理清模块间的接口定义