八.服务器数据同步伪代码分析

需求:
    从服务器上采集数据,并整理成想要的格式,然后通过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