缘起

稽核系统是被领导强迫要做的。当时我心理其实不是那么愿意。觉得这玩意离核心系统远点。不想做出来之后,解决了计费的大问题。这也说明了一个道理,你想做的不一定是对的,被强迫做的,也不一定就是错的。每个人的判断力不一样。 据说 科波拉当年也不愿意拍教父,不想拍了之后却成了经典。

开发过程

稽核系统的开发并不顺利,我们第一次迭代就失败了。当时党总还在会上问:你觉得失败的原因是什么? 为了对应他讲的项目管理,答曰:风险失控。 ,我当时觉得是人员的失控,其实,对技术考虑不周也是主要原因。

设计

之前SNP整个部门都不重视设计,党总来了之后就要求在项目起步前必须要有设计文档。虽然我也做了,但是在项目期间其实做的并不好,因为刚开始都是被强迫的。没有主观能动性。但是正是有了这个设计文档。开发的过程顺利很多。后来我崇拜的大牛caoz也在博客发文论述设计文档的重要性。这次项目起码有了设计文档。

持续改进

项目第一次迭代失败后,第二次把入库的逻辑改为用java重写。并参照刷新系统的经验,把他们的系统架构直接搬了过来。这个架构还是蛮不错的。但是,完全照搬也是有问题的。这个后面再论。 项目第二次迭代后,成功上线,解决了计费文件传输过程中的监控,但是,经常会间歇性的发生MQ堆积。堆积之后只能重启应用。没有什么好的解决方案。后来我详细查看了celery的配置项,不停的调整配置,当时貌似起了作用,但是仍然没有解决MQ间歇性堆积的问题。在这个过程中,我们做了下面这些事情:

  1. 查看计费文件不一致情况,系统刚上线的时候,DM上报,已接收,已处理,差距很大。分别查询原因,找具体的人解决。有的牵涉到别的部门,发邮件,找人逐一解决。到目前,基本上三线合一了。
  2. 增加查看异常页面,增加了两个常用功能,用了开源表格控件datatables,各种排序,分页,导出excel功能。非常好用。
  3. 增加同步脚本,彻底解决了手动从直传移文件到延迟。这个脚本也是个持续改进过程。

同步脚本

  • 刚开始我设想的是自动同步,把三小时内不一致的文件自动相互同步,实验了一段时间脚本,发现当发生大规模堆积时,反而掩盖了问题,这个时候最重要的是通知根总处理堆积,而不是同步,因为你同步过来,他的文件最终还是要传过来,造成机器很大的压力。所以这个脚本其实用处不大。
  • 在同步的过程中,发现同步机器慢。同步1万个文件能花半小时,在内网花半小时简直没道理。我想到先应该把文件移动到一个临时文件夹然后打成tar包。 然后写了脚本验证。效果不错。
  • 但是怎样才能让同步程序发挥效用,比如:当延迟上有一些小坑,每天基本都有,如果不同步,直接找根总,他也解决不了。这些文件积攒多了,也影响系统稳定性。于是我把同步脚本改成时间可以任意设定。只有当觉得有必要的时候才登陆上去手动执行一次。在此过程中。还可以监控主机压力,目前效果也很好,执行一次不到5分钟,节省了以前可能半天才能弄完的事,而且准确高效。同步完成成后,过几分钟刷新下稽核系统,能立竿见影的看到同步效果。

解决MQ堆积

老岳母把腰闪了,只能让妈过来照顾老婆,突然想,要是我老了。如果不能给子女帮上忙,那去人家家里当大爷,这肯定要招人烦啊。所以人还是应该学点东西。要不到时候会被人嫌弃的。

医院孕检

照例早上5:00 闹钟,5:30出发,照例老四样,抽血,验尿,B超,胎心监护。不过等这几样都弄完,都12:30了 ,我们排的还是6号。很靠前的号呢。哎……,大家都挤到北京。导致北京的医疗资源真拥挤啊。 ## 苹果上量
今天晚上0:00 ,苹果ios7发布。对计费系统会有大的考验,毕竟很近的过去,ios6发布的时候,大家一起干了三个通宵。还不知造成什么影响。这次提前部署,把不用isp的客户停掉。提高效率将近50%。想必问题不会打。唯一担心的还是传输。最近ldc抽风两次。这块是心病。但是也没有办法。毕竟我们没法控制。 ## newqueryservice 系统重构
这个api是计费系统的重点。月锅说:`计费的代码不多,代码质量一定要高`。这个我当然赞同。所以这次还有意使用了重构书上的许多方法。但是,代码写完了总是没有满意的时候。总是感觉有可改的地方。目前是,先把系统最快的功能实现出来,关键逻辑部分都写了测试代码。这样方便以后重构。重构一定要抽时间做。这事提高代码质量的法宝。 ## 技术提高
很多人上了点年纪,就不太愿意钻研技术了。作为一个业余程序员。这方面不能跟专业的比长短。必须要抽时间学习才行啊。

关系型数据库碰到了什么问题?

加入我们有一个1T的文件,要存入磁盘,磁盘的写入速度是100MB/s,写入一块磁盘需要2.5小时,关系型数据库写入的瓶颈就是磁盘的最大写入速度。
我们可以换更快的磁盘,但是速度的提升时有限的。为了解决这个问题,有人提出了下面想法。 ## 把数据分割开写入多块磁盘?
如果我们把数据分割成10份,分别写入10快磁盘,那么我们花费的时间就是原来的1/10,如果我们写入60块磁盘,那么时间就是原来的1/60.对于一次写入,
多次读的应用是很合适的。我们写入数据的速度可以通过增加磁盘线性扩展。 >   `hadoop就这样产生了。他提供了一个快速保存大数据的方案。事实上,基本上所有的nosql都是这样的模型。`

工欲善其事,必先利其器

sublime text + markdown preview
MarkdownPad 2
eclipse + markdown plugin
pycharm + markdown plugin ##  事实上markdown并不像他的布道者说的那样美好,至少我这么认为
这些ide最让人郁闷的是,每一种解析出来的样式都不一样,导致每次编辑好的文章,经过jekyll`build`都会变了样。
更郁闷的是,这些编辑器都是半吊子功能,没有一个有实时preview功能。 ##   目前我准备使用`pycharm + plugin`
作为一个程序员,ide有天然的优势,以前学会的快捷键能帮助你提高效率。
ide的工程管理功能,能够很好的帮助你组织文件。
ide可以保存一些常用的snnpet,可以随时方便的调用。毕竟人的大脑最善于的是保存索引。 ##  每天学习一点点
好的习惯要保持,每天学习一点点。

进入使用主题的css目录

assets/themes/the-minimum/css

创建自己的css文件

vim my.css

增加h2,img, 样式

.mediaobject {

        margin-top: 5px;
        margin-left: 4.16%;
        margin-right: 4.16%;
        padding: 5px;
        /*     border: 1px dashed gray; */
        border: 5px solid #BBBBBB;
}

img {
        margin-left:4.16%;
        border-style: none;
        max-width: 100%;
        /* padding: 20px 20px 20px 80px; */
           
/*      border: 1px dashed gray; */
/*       border: 0.7em solid #E0DFCC; */
        overflow: hidden;
}




h2 {
        margin-left: -4.16%;
        padding: 0.694% 1.38%;
        background: #FBF3DC;
        border-radius: 5px;
        font-size: 20px;
        line-height: 36px;
        font-family: "微软雅黑", Helvetica, Arial, sans-serif;
        color: #333333;
        margin: 10px 0;
        background: none repeat scroll 0 0 #FBF3DC;
        border-radius: 5px 5px 5px 5px;
        /*     margin: 1.38% 0 1.38% -2.78%; */
        padding: 0.48% 1.38%;
        color: #333333;
        font-weight: bold;
        margin-left: -4.16%;
        text-rendering: optimizelegibility;
}