在SmartGov3.0颁布后,,,,,我们就一向在设法子把在线访谈文字直播所支持的并发性和负载能力至少增长1倍以上,,,,,开发部经过一个多月的致力,,,,,实现了对线访谈文字直播部门的优化。。。。。。。我们总结了优化的过程分享给可能遇到一样问题的伴侣做为参考,,,,,非;;;;;队魅酥赋龇欠补什患,,,,,我们会持续加以改进。。。。。。。
基于在线访谈对高实时性、大并发性和高负载性的需要,,,,,我们针对在线访谈????????楸鹄朐诙嗉痘捍嬗牖捍娴目衫┐笮浴⑼绱淼慕诩蟆⒍嗫突Ф酥С趾痛胫葱谢艿确矫娼辛烁慕!。。。。。
首先我们来看一下改进前后的部署结构图
改进前部署图
在对在线访谈部门改进之前,,,,,访谈用户的写入时直接存放到数据库中,,,,,而读取是通过一个缓存的List列表实现。。。。。。。当访谈起头的时辰,,,,,后盾治理员录入访谈内容,,,,,写入数据库,,,,,而后更新整个List列表。。。。。。。对于前台文字直播页面,,,,,首吓咨DetialList.aspx页去要求直播内容,,,,,DetailList.aspx凭据情况是去选择读取数据库还是直接返回List缓存列表。。。。。。。从改进前的要求流程来看,,,,,存在着以下问题:
1、增长访谈内容时,,,,,会更新整个List列表,,,,,而更新整个List列表会读取数据库,,,,,并且经过监测发现前台读取缓存List时缓存射中率也比力低。。。。。。。
2、目前的SmartGov的在线直播是直接选取HttpRuntim.Cache,,,,,而不成能在颁布后更改成其他缓存方式。。。。。。。
3、直接选取的是DetialList.aspx页面来显示直播内容,,,,,而作为前台动态页,,,,,每次要求的输出会经过模板绑定、解析、其他有余的HTML代码、页面事务等流程。。。。。。。
基于以上问题,,,,,我们对在线访谈做多沉改进来解决潜在的瓶颈。。。。。。。首先看一下改进后的部署结构图:
改进后部署图
从两个结构图的对比来看,,,,,改进后的部署结构的复杂性、扩大性有了一个档次的提高。。。。。。。在新的结构下,,,,,部署改进了如下内容:
1、可支持独立的缓存服务器。。。。。。。新的结构图下,,,,,我们既能够沿用原有的部署方式,,,,,从而节俭硬件的开支。。。。。。。当系统必要支持高负载、高并发的运行环境时,,,,,就能够凭据所承担的负载性进行扩大部署,,,,,更换缓存接口,,,,,实现独立的缓存服务器(能够通过自己实现我们提供的缓存接口或者定造来满足要求)。。。。。。;;;;;捍娌棵拍芄谎∪emcached等其他散布式缓存来包办原来的HttpRuntim.Cache。。。。。。。
2、在代码方面,,,,,我们优化了代码的执行机能,,,,,并且增长了缓存队列来包办原来的List列表缓存方式。。。。。。。这样在更新缓存内容时,,,,,只更新最新的数据,,,,,而不用沉新获取整个List列表。。。。。。。这样大大的提高了缓存射中率,,,,,我们检测发现文字直播读取时险些不会读取数据库,,,,,所有的内容都在缓存队列钟祝。。。。。。
3、通过直接挪用DetialList.aspx来显示访谈纪录扭转成了WebServices的方式,,,,,这样既能够把WebServices来做二级缓存,,,,,也能够用来支持多客户端、多利用法式直播的方式。。。。。。。选取WebServices削减了aspx页面事务和模板绑定流程,,,,,从而会大大削减页面的要求的功夫,,,,,更快的反馈给用户要求了局;;;;;选取WebServices削减了页面大幼,,,,,降低了对带宽的需要和节俭流量。。。。。。。
a) 对于改进前后我们还使用了测试工具对它们的机能进行了一次测试比力。。。。。。。在没有改进之前,,,,,一次页面要求或许必要亏损86毫秒的功夫,,,,,但改进后一次web服务的要求,,,,,或许必要亏损22毫秒的功夫。。。。。。。从数据上来看,,,,,机能险些提升了3倍多。。。。。。。
以下为测试要求DetailList.aspx页面执行Page_Load步骤的截图:
改进前机能测试
b) 要求DetailListService web服务的截图
改进后机能测试
4、节俭服务器带宽,,,,,降低利用单元的流量用度。。。。。。。对于访谈数据是选取.NET webservice的方式进行挪用。。。。。。。使用这种方式,,,,,数据将能够用Json体式或xml体式进行传输,,,,,相比每次要求的都返回整个HTML体式的页面数据来看,,,,,每次的要求流量比原来页面方式降低了4倍。。。。。。。
a) 使用firebug来测试页面的加载流量,,,,,下图是改进前传输到客户端的数据为8kb
改进前的要求大幼比力
b) 改进后要求返回的数据仅为2KB
改进后的要求大幼比力
从上面的数据来对比看,,,,,内容直接压缩了4倍左右。。。。。。。返回的数据少,,,,,当然加载也就快了。。。。。。。