DevOps 微课系列|wiki 2017历程开发过程分享

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

DevOps微课系列旨在帮助用户学习DevOps实践。今天和大家介绍用户数据的抽取。

2017年年末,支付宝年度账单、樊登读书会年度总结等充斥了整个朋友圈的分享。恰好我们wiki也已经运营快2年了,思考是否可以尝试通过积累下来的历史数据统计出2017年ZTE DevOps用户对工具链的使用历程,给用户一个温馨的年度回顾呢?

★答案是肯定的,于是不久您收到了内含开头两幅画面的邮件。

下面带您了解这封邮件的拟制~

整个过程分成四个任务:统计用户数据、前端页面设计及开发(本文略)、数据组装、邮件推送。


1、统计用户数据

用户历程的关键在于用户数据的统计

1) 统计出用户最关心、最感兴趣的各个数据项

2) 然后通过SQL查询把各个数据项存入临时表

3) 再通过左关联把所有表关联查询得到最终结果

4) 最终结果导出成csv文件,文件中每一行对应一个用户的数据,数据项之间用逗号分隔开,如下所示是某个用户具体统计数据。

整理各个数据的含义如下:


2、前端页面设计开发并进行数据组装

本文主要是介绍开发过程,故前端页面设计部分省略。下面就来讨论下数据组装方案

方案1:通过用户工号去实时查询用户信息动态组装页面,

优点:简单容易实现;

缺点:会对生产环境的wiki服务器造成性能压力,每个用户都需要频繁请求服务器查询数据库。性能是瓶颈,因此我们果断舍弃了这个方案。

方案2:为每一个用户生成独立的静态页面,而且每个页面地址是唯一的,每个用户访问时都是直接访问自己拥有的静态页面,然后通过nginx进行加速。

优点: 采用空间换取时间的优化方案,减少后端服务器压力。

缺点:有开发工作。


结论:项目组决定采用方案2。

【静态页面生产方法】

l 使用python小程序把csv中每行数据项(逗号分隔)按照顺序映射到html中占位符,如下所示:

  • 再关联一些准备好的图片后,一个包含数据和图片的静态页面就生成了

  • 程序重复上面步骤生成所有wiki用户的静态页面,具体实现代码如下所示


3、邮件推送

本着快速实现、一切从简的原则,我们决定采用邮件推送方式呈现给用户。如何减少对zmail服务器负载造成的压力呢?

【采用如下策略】

●避免直接把html页面作为附件或者文本的方式发送给客户,从而减少对zmail邮件服务器的负载

●利用zmail可发送富文本邮件的特性,将用户的html静态页面通过iframe的方式嵌入到邮件中发送给客户,将访问压力交给nginx服务器


【实现方式】 使用java遍历上述csv文件获取用户列表,对每个用户分别调用一次websevice接口给每个用户发送一封邮件。

综上,通过以上步骤,我们顺利完成了wiki 2017历程的发布。另外,gerrit套用此套解决方案,只修改了“统计用户数据”和相关代码就很快完成了gerrit 2017历程的发布。

欢迎大家尝试!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值