zoukankan      html  css  js  c++  java
  • 高性能与可扩展

    性能低主要是由于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事件?在当前计算机上写?在其他计算机上写?都不管,这里只管调用

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

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

  • 相关阅读:
    CoreBluetooth
    IOS Monkey 测试
    Ruby+appium实现截图、滑屏、长按、日志输出到本地文件夹
    maven中GroupID 和ArtifactID怎么写
    MAC安装Eclipse及对其进入相关配置
    单元测试断言利器 AssertJ
    python+appium app自动化的方法实例运用
    美团接口自动化测试实践
    appium滑动操作总结
    Appium+python自动化-Appium Python API
  • 原文地址:https://www.cnblogs.com/aarond/p/CPUIOExtention.html
Copyright © 2011-2022 走看看