【日期:2011年5月17日傍晚】
【分类:程序人生】
最近在做国内某银行的现金管理项目,把这个项目中遇到的一些感受简单地总结一下1.银行项目对软件的安全要求比较高,信息的发送接收都需要有安全保障。这个与其他项目的差别比较大,而且需要通过安全认证才可以。它需要通过权威部门的安全检查,并拿到证明才可以在银行真正实施。yipindushu.com
2.需要多重密码来保证系统的安全性。例如登录时有登录密码,进行数字签名确认时有签名密码,跟银行发生交互时需要进行安全交易、安全通讯密码。这样,就算某个人破解了其中的一个密码,接着再持续破解余下的密码也是比较难的。
3.所有的数据都需要进行数字签名,采用公钥、私钥的方式进行不对称的签名验证,以确保数据没有被别人篡改过,保证最终送交到银行的转账信息是绝对安全的。而且,银行还要对所有传输过来的数据进行二次验证。
4.所有的转账操作,都需要走工作流程,至少要有两到三个签名。意思是不光是一个人数字签名确认就可以了,还需要多个人的数字签名确认才可以进行最终的过账操作。
5.必要时还要集成银行的Ukey方式的数字签名,需支持多种数字签名方式。
6.所有的窗体、数据、按钮等都需要有严格的权限控制,这不是开放的系统,每个功能都需要严格达到银行的要求才可以通过功能验收。
这段时间深入研究学习了WCF安全通讯方面的知识,以及数字证书、数字签名、非对称加密解密等,感觉这段日子过得很充实。有兴趣的朋友也可以往这方面多看看,不要成天研究这个架构、那个框架,客户的实际需要才是最真实的。
【能亲自架构万人高并发大数据量的软件应该是职业生涯的荣幸】
【日期:2011年5月20日中午】
【分类:程序人生】
对于做企业内部信息管理系统性质的项目而言,往往是有几个人在用的系统就能卖出几万元。例如只有一个人用的系统,可以卖1.5万~2万左右,若是有20来个人用的系统往往可以卖出20万的价格。当然,若商务谈得好可以卖出更高的价格。
我们开发人员在开发阶段往往容易忽略客户实际工作上的操作需求,进行过度设计,将更多精力放在系统架构和系统的优化上,所以想满足客户的需求是相当困难的。
曾经有一段时间很没有成就感,辛苦开发出来的程序往往只有几个人偶尔用用,有些失落,但是我一直没放弃努力,不断优化程序,希望有一天我们开发出来的系统有上万人同时在线使用。
今年这个梦想终于实现了。有一个国家部委级的系统,每个省都要用该系统上报数据。其实很多时候,最难的是让别人相信你能把这么高并发高压力的系统搞定,愿意相信你的实力,然后让你来架构这样的系统。能说服客户认可你有这样的能力其实很难,客户不会让我们来拿他做试验,这不是关系和钱能解决的问题,必须要有多年的积累,用事实证明你有这个实力,而且就算出了问题也有能力马上解决好。
那么这个任务中,需要注意哪些方面呢?1.首先要有非常好的网络带宽。若要支持上万人同时录入数据,至少需要10M左右的网络带宽。
【2.需要有一台牛X的Web服务器+一台牛X的数据库服务器(非个人】
PC)。需要录入1000万条以上的数据,最好采用Oracle数据库,能经得起考验一些。
3.需要进行适当的缓存优化策略。不能所有的数据都依靠数据库访问,而要尽量多地使用缓存策略。
4.需要一个牛X的、经得起考验的数据库访问层。因为每秒都有可能有成千上万的人在访问,如果是质量不好的数据库访问组件,或者不稳定的数据库访问组件,会很容易导致系统崩溃。如果占用非常庞大的内存,最后也容易导致整个系统的崩溃。
5.需要优化分页存取数据的功能,因为有可能会有1000万条甚至更多的数据。若分页读取数据的功能没能优化到最好,很容易导致系统崩溃。如果上万人在同一时间,或者接近同一时间点了查询某页数据,那系统就真崩溃了,分页存取数据一定需要做到极致才可以。
6.需要进行数据库索引优化。有索引和没索引的性能差距有时候会是100倍,大数据量时可能会有1000倍。
7.严谨高效的数据库事务处理。由于高并发,并且有些单据是需要同时写入多个表,需要保证数据库的一致性。要么全部成功,要么全部失败重新录入,所以需要一个高效的数据库事务处理机制的配合。
8.所有系统的操作日志、异常信息都需要完整地记录下来。当系统发生一些故障时,可以快速排查问题。
9.需要经常检测系统的各项指标。例如各服务器的内存使用情况、CPU使用情况、网络带宽使用情况等等。若服务器快承受不了压力了,就得马上进行负载均衡,网络带宽不够了就需要马上增加带宽,不能等系统崩溃了再去做这些事情。
10.每个页面的HTML、JS都要进行优化,若某个页面多发了100个字符的垃圾HTML代码,那1万人发送的垃圾代码得占用多少网络带宽。要知道接入主干网的网络资源是非常宝贵的,费用是相当昂贵的。
11.HTML、JS等都可以考虑用压缩模式传输,那样网络传输效率会更高一些。
有时候我们会觉得上万人同时访问有啥了不起的,但如果我们想让全国各地,每个省市甚至每个县都同时有人在输入数据,而且要输入大批量的数据,其实没几个人有这么大的组织能力及号召力的。
另外,上万人同时在线使用的系统,其中的核心组件都是你一手编写出来、精心维护的代码,那会带给你多少自豪感?这个是能充分验证你编码精湛、思维严谨的宝贵机会,也是展示你高超精湛技艺的机会。
再者,上万人验证过的高质量代码,将来可以放心地应用于各种系统。相信不管遇到什么情况,这部分代码绝对不会有问题。
经过这次上万人的同时在线使用,我还遇到的一个问题就是:Oracle的序列NEXTVAL在高并发下会有重复。以前虽然知道这个事情,但是从没有过深刻的教训,这次终于遇到了,需要在程序里进行精心处理。
好了,先写到这里吧。其实可写的东西还很多。还有服务器负载均衡、服务器安全、数据备份等等蛮多环节,有时间再写出来一起探讨。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【在北京做银行项目的亲身感受】:http://www.yipindushu.com/shangyeshiye/18850.html
推荐文章
09-12
1 有科学家的条理09-12
2 经典句子,逗趣不断笑不停呀09-12
3 互动与沟通09-12
4 经典句子,幽默故事一串串!09-19
5 串联文字点滴,每天撰写一篇大约 100 字的箴言