博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DevOps 微课系列|wiki 2017历程开发过程分享
阅读量:3560 次
发布时间:2019-05-20

本文共 1222 字,大约阅读时间需要 4 分钟。

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

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

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历程的发布。

欢迎大家尝试!

转载地址:http://jcirj.baihongyu.com/

你可能感兴趣的文章
小甲鱼Python第十七讲(Python的乐高积木)
查看>>
小甲鱼Python第十九讲(函数,我的地盘听我的)
查看>>
小甲鱼python第二十讲(内嵌函数和闭包)
查看>>
小甲鱼Python第二十一讲(lambda表达式)
查看>>
小甲鱼Python第二十三讲、第二十四讲(递归-这帮小兔崽子、汉诺塔)
查看>>
小甲鱼Python第二十七讲(集合)
查看>>
可调谐半导体激光器的窄线宽测试及压缩
查看>>
matlab中 %d,%f,%c,%s
查看>>
常见的光纤接头汇总
查看>>
半导体激光器—问题整理(二)
查看>>
科研日记7.31
查看>>
zemax仿真二向色镜
查看>>
stm32单片机编程时extern的用法
查看>>
UART4和5的问题
查看>>
Spring框架中在并发访问时的线程安全性
查看>>
网站部署
查看>>
什么情况下会发生栈内存溢出。
查看>>
何为去中心化
查看>>
缓存一致性:写策略
查看>>
Cache一致性:MESI
查看>>