AMCC自主运维团队案例分析篇自研产

文章来源:一氧化碳中毒   发布时间:2021-10-2 10:22:48   点击数:
  

自研产品集整体容器化升级,让开发更高效

文章撰写:朱学昊

开发时间:年1月

开发语言:Python

代码行数:+

运行方法:

1、传统“慧眼识财”系统运行在Linux单主机上,升级之后,系统将运行在容器之中,目前主要有两个容器,一个是python运行环境(客户端),一个是mysql运行环境(服务端);

2、传统“慧眼识财”系统将稽核数据加载到自己的数据结构中管理,升级之后,原始稽核数据和稽核结果都将统一放在mysql服务端,可视化水平更高,更容易新增稽核业务。

3、原始数据单表高达2.5亿条,耗费存储大概20多G,全部业务稽核下来,较每月能为公司节省六七十多万元结算损失,不要太值了。

分享序号:0202

应用版本:V1

一、背景

1、过去的一年,自主运维团队面向各个部门,开放了一系列自研产品,并投入生产,创造了巨大的经济效益。新的一年,自主运维团队,将立足其中高价值产品,扩大自研范围,探索更多的未知领域。

2、在开发的过程中,原来单机的软件研发架构,随着业务的不断扩展,必将限制研发效率,为了解决这一问题,年初,自主运维团队,将整个自研环境迁移至docker容器之中,利用业界灵活的开发技术和流程,让自研水平进一步提升。

3、2月初,已将“慧眼识财”系统迁移至docker容器之中,下面分享一下若干经验。

二、目标

1、将自主运维团队所开发的一系列有价值的产品,迁移至docker容器环境中,让开发、上线、运维更高效。

2、后继,自研产品将在docker容器中进行,通过自身的技术开发实践更好地理解业界一些好用的开发运维技术、管理、流程等。

3、浙江公司一句话说的挺好:在数字化转型氛围下,确立了“以数据为生产资料,以产品为核心驱动”的转型目标,从团队、数据、产品三个方面着手实施转型。

三、方法

从无到有的过程,装过一遍,用过一次,胜过看十本书

1、首先在win7中安装一个vmware,在vmware中安装一个Linux(我装CentOS7)。有现成的可执行安装文件,如有需要,可以联系我。

2、使用国内镜像按照网页展示,安装上Docker(网页搜,此处略)。然后就可以systemctlstartdocker,运行docker了。

3、使用国内镜像查找已经打包好的python、mysql镜像文件,下载到虚拟机中,然后就可以用下面两个命令来运行容器了,

dockerrun-itd-v/develop/mysqldata:/var/lib/mysql--namezhuxh_mysql-p:-eMYSQL_PASSWORD=mysql

dockerrun--namezhuxh_python_all-v/mnt/hgfs/vmshare:/support-itdzhuxh_python_all_v2

4、可以使用dockerinfo,systemctlstatusdocker等命令查看一系列docker运行状态,一切安装就位后,就可以进行开发了。

5、改造原来系统的代码:

(1)在自己的mysql中创建数据库

(2)在数据库中创建三张表:acct,settle,auditresult

(3)新写两个文件,分别是将稽核数据导入到MySql中

(4)改造原来稽核程序,从MySql中读取已加载好的数据,然后在内存中稽核

(5)将稽核的结果写入到Mysql中结果表中

(6)新写两个文件,一个文件生成统计界面,作为多棱镜的输入,另一个文件作为结算核减的输入

6、在入库的过程中,搞懂了docker的volume机制,并找到了利用存储存容器中大量数据的方法,解决了默认存储告警的问题

7、在本机开发过程中,研究docker四种网络模式,和共享存储等技术概念并实践之,感叹docker机制真强大

8、在稽核程序改造过程中,为了解决性能问题,用了许多方法尝试,研究了MySql的explain执行计划,MySql的join原理和使用,最终通过代码编写方法优化,解决了性能问题。说实在的Docker+MySql还真是厉害,在Win7环境下,下载一个HeidiSql客户端,就能很好地访问Docker内部的Mysql了,很方便开发。

Vmware-Win7环境

win7上的测试数据,可视化开发环境

生产上的容器:mysql和python3

生产上的mysql中稽核结果表:

四、效果

1、我们用新的程序重做了10月份的咪咕音乐结算倒挂程序,利用MySql可视化方法,我们可以展示更加细致的倒挂明细。

2、我们有信心在Docker平台上做更多的业务稽核和自研产品。

五、下一步计划

1、自主运维团队着手迁移以前的产品,将有价值的自研产品迁移到Docker中去,将效果不好的产品下线。

2、后继相关开发都将在Docker平台上进行开发,走完AIDevOps全流程。

3、计划搞一个docker实战培训。

六、附源码

1、ImportDBAcct.py

Createdon年1月22日

author:zhuxuehao

importpymysql

importXHTools

importsys

#key:phone,val=acctlist

defloadAcct(acctfilename):

globalgMonth

globalcursor

globaldb

#acctfilename=paid.txt

#sql语句

thesql=INSERTINTOacct(msisdn,userid,month,acctitem,chgamount)VALUES(%s,%s,%s,%s,%s)

inum=0

insert_data=[]

lines=XHTools.openMyFile(./{}.format(acctfilename))

print(len(lines)={}.format(len(lines)))

forlninlines:

if(inum%)==0:

print(loadacctfile={}.format(inum))

#logging.debug({}.format(inum))

inum+=1

#bigtype=settle

tmp=ln.split(=)

iflen(tmp)!=6:

continue

phone=tmp[0].rstrip()

idno=tmp[1].rstrip()

cycle=tmp[2][:6]

acctitem=tmp[3]

chgmoney=tmp[4]

realmoney=tmp[5]

ifchgmoney==0:

continue

onelist=[]

onelist.append(phone)

onelist.append(idno)

onelist.append(cycle)

onelist.append(acctitem)

onelist.append(chgmoney)

insert_data.append(onelist)

insert_data_len=len(insert_data)

ifinsert_data_len:

print(len(insert_data)={}.format(insert_data_len))

try:

res=cursor.executemany(thesql,insert_data)

db.

转载请注明:http://www.lwblm.com/bzbk/12496.html
  • 上一篇文章:
  • 下一篇文章: 没有了