OpenDaylight中的MD-SAL是什么

一 、软件系统设计理想情况下,提到软件系统的设计,系统架构人员想到的是如何架构软件,软件开发人员想到的是如何更好地组织业务逻辑代码,这些设计能够更好地保证软件正常运行。不理想的情况便是没有设计或者设计不多,开发代码靠的是开发人员自身的素养,有人更偏好前端实现,有人觉得后端实现可能更好,于是同一套代码中,造成技术体系的混乱,如果项目比较紧张,那么内部质量很难保障,那么技术债就这样形成了。
一般情况下,软件系统的研发分为需求获取与分析、架构设计、代码实现、系统发布、上线等阶段。其中,架构设计可以细分为架构需求、分析、设计、文档化、评审、修改和实现等过程,我们以简化归一,描述为:提供ui界面和消息接口服务,ui选择b\\s架构风格,消息可以是rest、soap以及amqp等类型,数据库采用关系型数据库。如下图所示:
下一步就开始围绕业务领域,进行系统的建模,一般有两种方式:第一种是数据库的设计,考虑需要那些表,表中包含应该哪些字段,将业务需求抽象为数据模型;第二种是业务逻辑的面向对象设计,将业务需求抽象为对象之间的关系。我们以第一种方式进行系统的建模(以java为例):
① 通过建模工具(power design)进行概念数据模型和物理数据模型的建模;
② 根据数据库的表,借助于代码生成工具生成表对应的java对象;
③ 根据业务逻辑划分不同的service服务,对应domain object;
④ 根据ui设计划分不同的action,对应view object;
⑤ 根据业务流程设计各层之间的调用关系,并进行不同层之间的对象转换。
根据上述步骤我们简单地得到如下图所示的业务逻辑的设计:
我们可以简单地将图中的设计理解为业务逻辑的服务抽象层的设计。
二、md-sal2.1 基础从opendaylight lithium版本开始采用mdse(model-driven software engineering,模型驱动软件工程)设计。mdse描述了一个框架,该框架支持模型建模,并可以基于模型生成相关的代码和api接口。
md-sal(model-driven service abstraction layer,模型驱动的服务抽象层)可以看成是一个消息总线驱动、可扩展的中间件。“m”是模型,即为yang语言,“md”是模型驱动,即使用yang作为数据和接口的建模语言,并为服务之间的通信提供基础框架:消息传递和数据存储功能。
由前面的文章可知,md-sal包含datastore、rpc、notification和mount等概念,其中需要关注如下:
l datastore: 分为config和operational,其本质上是树,并通过instance identifier来标识子树或节点;
l rpc: rpc的本质上是不同进程间访问的一种通信形式。在netconf协议中 rpc是netconf客户端对netconf服务器的访问。而在md-sal中,rpc用于服务消费者(使用者)对服务生产者(提供者)的访问,不再是严格上的rpc定义。
同时,yang tools项目是一个旨在方便yang开发的基础设施项目库,md-sal扩展了该项目,并为java服务和应用程序提供netconf和yang支持。它具有解析和处理yang架构、基于yang模式验证xml结构和基于yang模式的rest api等组成部分。
2.2 设计实现1.数据访问
md-sal通过两个不同的代理(brokers)访问datastore的数据:dom broker和binding-aware broker。如下图所示:
l dom broker: datastore可以看作是xml数据库,对于xml的解析通常采用dom模型(document object model,文档对象模型)。dom broker可以看成操作datastore节点的请求代理。dom broker提供了基于xml dom的api。
l binding-aware broker: dom形式的api不易于开发人员编程,该broker支持yang到java语言的绑定,并提供基于yang模型生成的接口和类,也就是java的api。
l ba-bi connector: 用于连接dom broker和binding-aware broker,与mapping service、schema service、codec registry和codec generator等组件一起实现:dom(bi)格式和java dto(ba)之间的转换。
2.消息模式(messaging pattern)
md-sal提供了一组基于代理的消息传递模式,这些代理提供以数据为中心而非api的集成,并在服务之间传输yang建模数据。事实上,md-sal包含了管理特定消息传递模式的不同代理,如图所示:
l data broker: 对data store进行事务访问。
l rpc broker: 提供消费者和生产者之间的单播消息,消费者向生产者发送请求消息,生产者以异步消息的形式进行响应。
l notification broker: 采用订阅发布机制,由发布者发送并传送给其订阅者的多播消息。

宁德时代碳酸锂项目签约!
2016年ARM有哪些事情让你印象深刻?
超声波液位传感器和激光式液位传感器有什么区别
助于创建新或修改设备的开发工具介绍
探究3D传感和近眼显示应用的关键技术
OpenDaylight中的MD-SAL是什么
我国甲醇催化研究获新突破,甲醇燃料电池在新能源领域将具有非常好的应用潜力
佳明vivomoveHR评测 合格的智能穿戴产品
iphone8什么时候上市?iphone8最新消息:iphone8全面曝光?A11+iOS11+OLED全屏幕
德州仪器3款最新无线套件为Stellaris(R) MCU实
华为荣耀Note9什么时候上市?荣耀Note9最新消息:华为荣耀9刚发布荣耀Note9即将来临,配置喜人
基于区块链技术颠覆的四种商业场景介绍
攀升9700K+RTX2070电竞主机评测 各方面表现都十分到位
RISC结构微处理器专用存储单元的研究与实现
飞索半导体开发出语音识别专用处理器LSI
浅谈Wilczek的时间晶体 空间的对称性被打破!
FPGA数学基础分析及与CORDIC算法计算方式对比
需要了解的设备文件三大结构:inode,file,file_operations
10亿元!又一电池回收利用项目落户湖南
Note8翻版!三星Galaxy Note9渲染图曝光