高性能与可扩展

性能低主要是由于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 @   McKay  阅读(1128)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2012-04-24 领导无形,管理有道
点击右上角即可分享
微信分享提示