远程运维网络云,你需要一个3D可视机房

NFV网络云化集成工程已经进行到第二期,各种服务器、交换机和防火墙又塞满了数据中心的好几个机房,真是令人喜忧参半。喜的是支撑5G业务的虚拟化网络基础设施正有条不紊的部署,忧的是几万台设备的巡检、排障工作量变得异常繁重。鲁迅说过:不能可视化资源池的运维,不是好开发

看来网络云资源池可视化手段的研发是迫在眉睫了。


文 | 温伟能


作为最强运维团队的填坑小分队,毅然接受挑战。

本以为机房可视化,也就是将机房机架模型设计好,拿CMDB的设备数据一同步,就大功告成了,嘿嘿!(^o^)/~

结果还是发现太年轻了,做起来才发现,这里有3个大坑。(╯‵□′)╯︵┴─┴


坑No.1:

网上没有大区轮廓,需要自己画!


网络云实行多省组合的大区制,需要在地图上显示大区的轮廓,也就是以一个大轮廓包裹着几个省的行政范围。有同学肯定说,这需求也不少见啊,网上肯定有现成的代码吧?

然鹅,网上开源的地图数据只有各省轮廓,并没有几个省合并的大区轮廓,大区轮廓多边形需要自己绘制。

o(╥﹏╥)o

远程运维网络云,你需要一个3D可视机房

  设计稿里的大区视图                               开源地图没有大区轮廓

   

 

坑No.2:

如果直接按实际位置呈现设备,功能分区不直观!


资源池视野,需要将硬件分区(供电)、计算集群、存储集群、网络设备的亲和/反亲和、从属等关系通过可视化呈现。然而实际机架位置网络设备和服务器是摆放在一起,直接按照机架位呈现并不能直观描述上述信息,看来设备位置的可视化需要重新设计布局。

远程运维网络云,你需要一个3D可视机房

   网络云机房需要呈现分区                                理念传统3D机房

   

坑No.3:

大型机房的3D渲染会很卡卡卡……卡


网络云资源池设备上万台,同时将它们3D图像显示一个页面中,设备顶部标识和侧面按钮的贴图渲染,如果采用常规方式,逐个外部图像文件加载,对于日常办公的桌面来说,网络性能和GPU性能会出现瓶颈,导致页面卡死,需要对图像加载算法进行优化。

远程运维网络云,你需要一个3D可视机房

传统3D机房模型加载慢、不支持设备数量动态变化、渲染速度慢

   


填坑小分队出动了……远程运维网络云,你需要一个3D可视机房


填坑No.1:

根据多个省轮廓计算出大区轮廓多边形


经过一番捣腾,在尘封的高中数学书中获得了灵感,研究了一套相对容易编程实现的算法,这里命名为outlinePolygons算法,主体思路是将省级边界轮廓曲线看成是许多点的集合,利用集合的交、并逻辑运算,两省曲线点集的交集识别成内部接壤边界,对这部分点进行剔除


当然,实际实现起来没有这么简单,在实际的地图里,接壤边界的断续、经纬度微偏差、边界顺/逆时针、甚至是岛屿等状况不断,需要对算法细节进行优化,这里介绍一下两个优化点。

远程运维网络云,你需要一个3D可视机房

红色线要想办法给删掉_(¦3」∠)_


优化点1:接壤边界断续问题。
有些省份边界由于测量误差或者其他原因,并非一条简单的曲线,而是一个环路、甚至是略微交叠的两条曲线。这样的情况下会造成大区边界出现锯齿。


算法在判断两个省的边界是否重合时,引入近似比较法,将距离小于400米的两个点认为是同一个点,从而消除了接壤边界断续问题。

远程运维网络云,你需要一个3D可视机房


优化点2:拼接顺序的问题。

在识别内部边界时,算法会将边界切割成多个不闭合的曲线,以便进行内部边界的剔除,再将剩下的曲线拼起来。由于剩下的曲线原生并非顺接的,直接渲染会出现大飞线,如图。算法需要将所有曲线按统一的方向(逆时针或顺时针)顺序的连接在一起。


算法使用曲线的头尾两点代替整条曲线,通过迭代的方式为当前曲线“尾巴”(有序集合的最后一个点)寻找距离最近的“头部”(有序集合的第一个点)以及“尾巴”,以之所在的曲线作为其最佳顺接曲线,之所以要把“尾巴”也纳入比较范围,是考虑到有些曲线可能是逆时针的,“尾巴”接“尾巴”也是允许的,只要后面将这个曲线逆转过来就可以了。

迭代至所有曲线都连在一起,就能够画出一个闭合的大区轮廓了,这个算法“以点代线”,大大降低最近的“下一条”承接曲线轮选的空间复杂度。

远程运维网络云,你需要一个3D可视机房

最后输出结果是一个由多条曲线组成的数组,在echarts中利用lines模型可以渲染出大区的轮廓边界。算法在处理离岛、曲折海岸、交错行政区等复杂情况时表现出色,而且js跑起来非常快,几乎在几十毫秒内即可完成全国视图的计算。

远程运维网络云,你需要一个3D可视机房
远程运维网络云,你需要一个3D可视机房
远程运维网络云,你需要一个3D可视机房



填坑No.2:

设计智能排布系统,体现网络云规划原则


按照功能区布局系统设计,需要考虑三大方面,可以用“点、线、面”概况。

“点”,即每种设备的外观形状、颜色。

“线”,即同类设备的堆叠方式。

“面”,即不同功能区的面积划分和相对位置。


填坑小分队基于Threejs 3D渲染引擎进行设计和二次封装,打磨出了一套设备颜值高、自适应堆叠、排布反映云规划思想的网络云资源池智能排布系统,封装出1个外部API接口,通过9个参数的配置,系统会根据配置自动计算出设备几何体尺寸、设备排列间隔、行/列/堆叠最大值,最终根据CMDB的查询结果,按照排布优先级在指定矩形范围内对设备进行呈现,以下是API的9个输入参数:

远程运维网络云,你需要一个3D可视机房

以电源模块举例,电源模块用长方体标识(对应Threejs的几何体是Box),分成两组分别在舞台的上下两组陈列(因此area数组有2个元素),并以先纵向、排满后再竖向的方式堆叠(对应参数arrangement=[2,1,0])。

远程运维网络云,你需要一个3D可视机房

其他设备类型和功能区也照葫芦画瓢,配置上述9个参数,即可完成模型的设计和输入,后面的事情就交给系统来完成,使用者不用操心外形具体的设计和机房摆满了要怎么办。

远程运维网络云,你需要一个3D可视机房

快来欣赏新鲜出炉的雪糕设备模型,看着这么可爱的设备来排障,运维人员的心情立马舒缓了10068%了呢(*^▽^*)远程运维网络云,你需要一个3D可视机房


远程运维网络云,你需要一个3D可视机房

远程运维网络云,你需要一个3D可视机房


填坑No.3:

使3D大型机房都能在普通桌面电脑上轻松渲染


填坑小分队引入bitmap算法,将所有设备类型的贴图(logo和pattern)都集中在一个文件中,不管设备数量是几千台还是几万台、设备类型是几十种还是上百种,页面只需加载一次外部文件。在设备加载图片时,根据对应样式的贴图在对应logo图片文件中,通过配置的坐标和长宽映射到像素区域,即可计算生成预期的图像。这种图像加载方式大大降低了大规模机房的网络吞吐压力和渲染成本。

远程运维网络云,你需要一个3D可视机房
远程运维网络云,你需要一个3D可视机房

(糟糕,又少了个借口给老板申请新电脑了╮(╯▽╰)╭)


最后送上网络云智能3D机房的真容↓↓↓

 

貌似坑到这里就填完了?


……想多了,还有设备的连接关系、设备动态状态的呈现等等大坑在前面等着呢……先分享到这里,填坑小分队要继续搬砖DevOps了。


下次再会~

远程运维网络云,你需要一个3D可视机房

最后致谢一下咱们DevOps天团提供的流水线集成环境,让填坑小分队在这个特殊的时期,足不出户,也能乐在“码”中。

远程运维网络云,你需要一个3D可视机房

 远程运维网络云,你需要一个3D可视机房


本期嘉宾

 远程运维网络云,你需要一个3D可视机房

 

本期嘉宾  |  温伟能   广东移动网络管理中心网络云运维专家。伟能拥有多年O域数据挖掘项目经验的IT全栈“攻城狮”,是广东公司网络自主研发领域、大数据分析领域的知名专家。在团队中,伟能主要负责电信云团队存储子专业维护工作,深耕“深度自维、自动化运维”团队理念,反复打磨运维能力门户、性能与日志监控体系等作品(这不、与3D建模杠上了),致力于网络云运维支撑工具的研发和全国推广。

你可能还喜欢



目录