技术开发 频道

单点登录系统与并行化

  【IT168 技术】

  注:本文为IT168&NVIDIA联合举办的“如何并行化我的应用”方案征集活动参赛作品。本次方案征集活动详情见:http://cuda.itpub.net/thread-1299715-1-1.html。近期活动的大部分方案,将会逐步与大家分享,不可错过哦!

  CUDA ZONE专区:http://cuda.it168.com

  CUDA技术论坛:http://cuda.itpub.net

  众所周知不断提高CPU的性能将对计算机的性能起到巨大的推动作用,提高CPU的频率是提高其性能最直接的方法,但是随着CPU频率达到3G-4G之多,受限于原材料和制造工艺及制造成本的限制,继续一味地提升CPU频率在短期内,将不能满足CPU的发展,因此多核技术应运而生。对于程序员来讲,多核技术提升了程序的并行性,我们在对程序进行优化的过程中,在优化算法的同时,也要关注程序的并行性对性能提升。

  在并行化越来越引人注目的今天,我们对已有的单点登录(Single sign-on,一下简称SSO)系统进行升级的过程中,将并行化放在重要的位置,使用并行化技术优化程序处理流程,将任务进行分解,分派到不同的线程中去进行处理,减少整体任务的耗时,给用户更好的使用体验;同时更快速的资源释放,将获得更大的系统并发能力。从而使SSO系统在不进行硬件扩容的前提下,能够满足更大的用户访问量,增强产品的市场竞争力。

  我们公司的SSO系统作为一个成熟的产品,已经在多省移动分公司部署应用近两年有余,长时间的运行维护数据统计,给我们明确指出了程序中的长耗时的方法,虽然经过多次进行算法优化的升级工作,也使得程序的运行效率已经有了很大的提升,但是流程中繁多的数据库读写操作依然成为系统的瓶颈。接入SSO的业务网站逐渐增多,SSO的访问量也随之攀升,SSO的性能又一次面临了巨大的考验。在SSO产品研发的多次会议中,使用并行化技术解决流程中的高性能消耗,提高产品的性能。以广西移动分公司SSO系统为例,此系统中使用两台IMB小型机,分别安装有2个weblogic9节点,前端四层是F5做负载均衡。当前系统存在的系统瓶颈在于数据统计和中流程中的数据库读写操作,并且可能依据需求变更增加多种日志类型进行记录统计。

  因此研发设计之初,就明确定义将用于统计的日志信息记录工作,交由单独的日志模块来处理,日志模块启用单独的线程执行任务。经过多次讨论分析,设计构思为日志模块定义一个队列,对外公布一个增加任务的方法;当日志模块的队列中有任务存在时,将任务从队列中取出分配给空闲的执行线程来执行操作。在开发执行过程中,对日志模块中执行线程的规模,进行多次测试,对不同数据量,得出达到最优的性能时,任务执行线程数的参考值列表。模块开发完成后,大大减少了主流程总的数据库操作次数,对于必要的数据库读写,又引入memcached进行改进。

  毋庸置疑,采用并行化技术处理耗时任务的升级完成后,系统的处理速度大幅度提升,再压力测试过程中,采用单weblogic9节点进行处理,并发程序中最耗时的登录流程,在每秒并发100、持续五分钟,程序的处理时间始终在20毫秒以内,在并发量达到400、持续五分钟的测试中,并未出现内存溢出,线程挂死的情况。

  但是我们同样认识到,在CPU架构的基础上,处理器内核增加到一定的数量后,将会引起系统性能的下降。不过CUDA技术的出现,由高速、多核的GPU来分担CPU任务,让我们重新看到了系统并行运算的发展前景,相信应用程序的设计,在并行化的道路上将会越走越远。

0
相关文章