高性能与可扩展

性能低主要是由于I/O操作导致的延迟,导致了等待
               ==>CPU很闲,处理速率却上不去


解决办法:

减少I/O操作:

加入缓存来缓解I/O操作

  • AppFabric或Memcached

让出主线程,开启单独线程来处理I/O操作(主线程就能处理更多的IIS请求)

  • PageAsyncTask, Parallel

把大面积的数据(比如某字段中保存了1w个字符串,并且select了多行...OMG!),压缩后保存到磁盘,也能减少I/O消耗的时间

  • ICSharpCode.SharpZipLib.dll

如果系统是分多个物理计算机通信的,也要压缩message的内容,比如WCF

  • 自定义MessageFormatter实现序列化后的压缩和发序列化前的解压缩

可是,问题又来了:

CPU现在很高了,咋办?

那么又要来解决办法了:

使用IIS7的ARR(Application Request Routing)来解决

 

可扩展是考虑未来一段时间而提出的部分提前设计概念,一般用得多的是在框架平台中,抽象的说法就是:抽象+隔离具体实现+暴露热点

抽象:桥接模式、模版模式

隔离具体实现:定义接口、使用接口、然后啥都不做,就等着别人去实现...

暴露热点:就是钩子,提供默认实现,允许别人自定义

例子(记录日志):

只要写个ILog接口,提供一个方法Write(str),然后就用吧,别管其他的了,管它是写文件?写db?写msmq?写service broker?写window事件?在当前计算机上写?在其他计算机上写?都不管,这里只管调用

具体咋处理完全不管,让应该管的去管吧,够抽象了吧,够隔离了吧,够暴露...

 

这次确实没啥料,就免点“推荐”了...

 

posted @ 2013-04-24 15:50  McKay  阅读(1123)  评论(3编辑  收藏  举报