八.服务器数据同步伪代码分析
需求: 从服务器上采集数据,并整理成想要的格式,然后通过api插入到数据库中(数据库中无此条数据:那需要新增加一条完整的数据。有此条数据则类型巡检,那更新下服务器此条记录的部分字段--哪些字段可更新哪些字段不可更新,同时要修改它的时间来保证从运维平台上可看到此服务器新况)。 采集服务器数据,并同步到运维平台: 1.api接口拿到数据 2.检查mysql中有无此条记录 怎么检查: ip-->经常变,所以不适合。 SN-->物理机有,虚拟机没有(云服务器有,它的SN就是uuid,但vmware/virtbox都没有)。 uuid--->针对虚拟机 所以在数据库里查询有没有此台服务器关键就是uuid/SN.所以判断依据是:如果SN=uuid那此机为虚拟机 3.获取这条记录: (1)存在这条记录,则如下处理法: 则更新数据:hostname ip os mem disk cpu network 注意:network: 存在多网卡,多ip的变动 (2)不存在这条记录,则如下处理法: 先层层验证 创建这条记录--如下这些都需全新创建并关联上彼此间关系--先创建一的对象再创建多的对象(一对多): server记录 服务器厂商记录 服务器型号记录 网卡记录 ip记录 注意创建顺序(按foreginkey所在模型的foreginkey字段允许不允许为空),若不允许为空(即此字段为必填)则先创建多的对象: 先厂商(无任何foreignkey依赖)--再型号(关联厂商)--ip(关联/指向网卡)--网卡(关联/指向服务器)--再服务器 验证条件: 厂商无任何依赖,所以可在自定义字段时就做验证 型号因需一厂商对象,所以需在对象级别/整个表级别时做验证
11
22
33