Mesh网络就是传说中的P2P自组网的网络,这个是其中的一个开源项目,这个项目的设计还是挺不错的,很标准的“MVC”设计,根据官方的文档做了项目的简单总结,写篇博文给大家分享下吧。
OrangeMesh是基于ROBIN无线mesh网络的管理平台,允许用户通过简单的web界面对所有的节点进行配置,并且支持对节点的可视化。OrangeMesh是服务端的软件,主要使用PHP编写,当然也有Javascript(主要是谷歌API),CSS,HTML等。
一个中央的OrangeMesh服务器可以支持多个ROBIN网络,并且每个网络的帐户不同。OrangeMesh是完全和Mesh网络分离的,所有的通讯通过mesh节点并且通过互联了管理服务器。
Dashboard的交互模型,节点可以是中继器或者网关,网关连接mesh云然后到互联网,中继器在网关后广播mesh网络,客户端可以连接到任何节点,中继器或者网关。
Mesh节点每个都向dashboard服务器汇报节点的基本信息,比如已使用的带宽、已连接的用户。这些数据都是存在服务器的数据库中。然后节点获取用户通过dashboard设置在数据库中的配置信息。节点将会 调用一个服务端的文件
checkin-batman.php ,这个文件用来处理和交换这些信息。注意啦,所有的功能都是在ROBIN中定义的,可以检查ROBIN的文档(
http://wiki-robin.meshroot.com/Documentation),查找最新的信息。
数据库之间的迁移是分离的脚本导出导入过程
OrangeMesh Dashboard 有着我们称作 表现-处理(view-processor)构架。OrangeMesh是由这么两种脚本组成,一是从Dashboard获取数据并且用有意义的方式显示出来,并且脚本从用户或者节点获取信息,处理并更新数据库。每个模块都是分开成两个部分,一半用于显示,一半用于处理。
Views 显示用于从数据库读取信息,并使用有意义的方式展现给用户。提供视觉的信息。显示的信息包括状态地图/列表,也包括网络设置页面。简单说,任何产生用户视觉输出的脚本都表现为view,view有三个任务:
1) 查询数据库并且显示
2)提供给用户表单,以改变配置
3)视觉化数据和数据库中数据的关系
Processors 用于操作数据库。这些里面重要的是 checkin-batman 脚本,它充当dashboard服务器和mesh云网络之间的接口界面。也有几个其他脚本处理用户的输入请求,比如从一台dashboard服务器导入/导出数据到另一台。处理成不并不直接产生用户可见的输出。而是从view脚本中接收数据。他们封装很多的dashboard的“商业逻辑”,有三个主要的任务:
1)接收节点HTTP发过来的状态信息,并且把这些信息写到view。
2)根据网络配置相应这些HTTP请求
3)从View那里以表单的方式接收网络配置信息并写入到数据库中。
注意啦:一个Dashboard可以支持任意多个网络。
分解 Decomposition
上面的构架图将dashboard服务器分成了两个组成部分
数据库 两个表
node 包含所有注册到这个数据库服务器的所有节点的信息,包括状态信息,所有人联系信息,节点位置信息等。
network 包含所有注册到这个数据库服务器所有网络的信息,包括网络配置设置,帐户设置(包括邮件通知,用户名,密码)
View和Processors根据任务分成两个模块。一般来说,每个模块负责一个单独的dashboard视图【view】,通常是用户的一个页面或者部分。这样允许主键可以独立的修改,每个模块都是单独存放在一个齐名的目录下。
在每个模块下,组件又分成view和processor。所有processor的脚本都有个c_function.php的命名规范,所有的view脚本没有前缀。
我们的模块是:
entry 这个组件负责处理网络选择和用户认证,同时业管理网络创建(比如登录,登出,网络创建)
status 这个组件主要是负责网络状态概览。包括在地图上列出节点。(比如:网络状态图,网络状态列表)
netSettings 这个组件主要是基本的网路配置和设置
node 任何和节点管理的功能都在这里。包括添加节点,查看我的节点页面,显示所有者信息类表,公布我的节点列表。
help 处理所有的用户文档并提供一个web界面,这个不是数据库中的,但是是一些列的平面文本文件,目前还没有使用。
migration 处理数据迁移,比如从Open-Mesh.com和其他的OrangeMesh服务器。
lib 这个模块并不产生视图,而是为dashboard提供实用的脚本。包括处理数据库连接的脚本,平滑模块间处理信息的模块,样式信息,图标图像,并且地图的javascript代码也在这里。
ROBIN Checkin 这个是checkin-batman脚本,接收节点的状态更新并响应发送配置信息
阅读(434) | 评论(0) | 转发(0) |