设计一系统涉及方方面面。下面我们单从性能方面描述设计的考虑。

解决软件架构设计问题,我们遵循分而治之的方略。所以我们看到有横向的划分跟纵向的分层。这样我们才可能把问题各个击破。

在业务层面上,我们可以考虑把系统拆分成子系统。子系统相对独立并协调合作。自然我们可以考虑SOA。我这里并不强调SOA的概念,核心强调的是业务的分拆。如果子系统可以单独扩展,这样在遇到瓶颈是就可以对相应的子系统进行扩展。 这样子系统从数据库,持久层,业务层,服务提供层都相对独立开来。

再进一步我们考虑服务的部署。同样我们要考虑各部件的逻辑独立性。我们要清楚划分边界,Web服务器,应用服务器,数据库服务器,文件服务器,消息中间件.....我们要尽量保证各组件的界地。这样也是为了我们扩展的灵活。可以在相应服务出现瓶颈时单独扩展。

具体到各层应用的设计上,我们要考虑充分利用资源,同时考虑横向跟纵向的扩展。

在资源利用上,我们常面临I/O的瓶颈,从南桥(即系统I/O芯片(SI/O):主要管理中低速外部设备;集成了中断控制器、DMA控制器。)到网络I/O。常常会成为我们性能的瓶颈。在系统设计时,我们不能寄希望于相应资源的升级,提升。从软件本身的角度出发,我们要考虑的是软件的机制。我们可以合理的设计缓存来减少I/O。缓存的可以在系统的各个层次。从数据库到客户端浏览器为了合理减少I/O,都有缓存的身影。引入一个方案能解决相应的问题,同时也要付出代价。缓存的引入势必带来数据一致性的问题。在设计时我们一定得归类各种数据,不变的,常变的,偶变的。还有我们还要考虑应用对数据一致性的要求。从多个角度我们综合分析是否 并如何引入缓存。

在说缓存的同时,我们要区分内存存储。缓存跟内存存储是有重要区别的。缓存并不保证被保存的数据一直存储。记得在Infoq上有一个文章专门指出我们不能用memcache来存储session。用他来存储会导致某些用户意外中断连接,这就是由于memcache的本质所决定的,它作为缓存并不保证对session的存储。而session实际上要的是存储。所以此文章建议用内存数据库来保存session.

说了I/O,当然我们还要考虑其他资源的有效利用。CPU, memory等等。多进程,线程,并行程序设计必然是我们要考虑的。多进程,线程能充分利用我们的CPU的计算能力。当然同时也会带来上下文切换的开销。所以要综合应用I/O的情况,来规划。如果是计算密集型的应用,太多的进程,线程调度反而适得其反。

在I/O密集型的时候,当然可以考虑引入异步的计算。其实当下很多的reactive的平台提供了很多异步的支持供我们取舍。

总之系统的无银弹,我们得从各个角度综合分析。

转载于:https://blog.51cto.com/simonwzing/1632203

从性能方面谈系统设计相关推荐

  1. 从几方面谈计算机专业就业形势

    从几方面谈计算机专业就业形势 -------------------------------------------------------------------------------- 发表日期 ...

  2. 芜湖方特系统设计书php,芜湖方特梦幻王国

    魔法城堡 飞舞的塔罗牌.闪光的魔法阵.变成青蛙的冒失盗贼--血腥惨象迎面扑来,双头龙频频发起袭击--这里新奇古怪又危机四伏.大型DARK RIDE表演项目--魔法城堡,运用跟踪式立体电影.虚实结合技术 ...

  3. #翻译# 关于 Java 性能方面的 9 个谬论

    Java性能问题被冠以某种黑暗魔法的称谓.一部分是因为其平台的复杂性,在很多情况下,无法定位其性能问题根源.然而,在以前对于Java性能的技巧,有一种趋向:认为其由人们的智慧,经验构成,而不是应用统计 ...

  4. 关于 Java 性能方面的 9 个谬论

    http://www.oschina.net/translate/9_fallacies_java_performance?from=20130505 Java性能问题被冠以某种黑暗魔法的称谓.一部分 ...

  5. 芜湖方特系统设计书php,芜湖方特东方神画之旅

    摘要:我带着女儿和姐姐的孩子们去方特东方神画世界玩,我们玩了飞跃河谷.灵魂之旅.女娲补天等好玩的项目. 车子飞越穿过高速,女儿听着音乐,不一会儿,躺在车椅上睡着了,车子似乎很快就到了芜湖.这次我准备带 ...

  6. 手机淘宝 521 性能优化项目揭秘

    http://www.infoq.com/cn/articles/mobile-taobao-521-performance-optimization-project 又是一年双十一,亿万用户都会在这 ...

  7. 天猫11.11:手机淘宝 521 性能优化项目揭秘

    又是一年双十一,亿万用户都会在这一天打开手机淘宝,高兴地在会场页面不断浏览,面对琳琅满目的商品图片,抢着添加购物车,下单付款.为了让用户 更顺畅更方便地实现这一切,做到"如丝般顺滑" ...

  8. 手淘双十一性能优化项目揭秘

    亿万用户都会在双十一这一天打开手机淘宝,高兴地在会场页面不断浏览,面对琳琅满目的商品图片,抢着添加购物车,下单付款.为了让用户更顺畅更方便地实现这一切,做到"如丝般顺滑",双十一前 ...

  9. 手淘双十一系列(一) | 521 性能优化项目揭秘

    该文章来自阿里巴巴技术协会(ATA)精选集 亿万用户都会在双十一这一天打开手机淘宝,高兴地在会场页面不断浏览,面对琳琅满目的商品图片,抢着添加购物车,下单付款.为了让用户更顺畅更方便地实现这一切,做到 ...

最新文章

  1. 程序员的自我修养--链接、装载与库笔记:内存
  2. VirtualBox快照(Snapshot)功能使用及注意事项
  3. 基于DDD的.NET开发框架 - ABP领域服务
  4. grs matlab公式,[转载]matlab中Max的用法(转)
  5. 2020年旷世校招JAVA岗笔试第二题
  6. 重磅 |《企业埋点体系搭建方法论及实践经验》白皮书上线
  7. 数据结构Java05【二叉树概述、二叉树遍历、堆排序、线索二叉树实现及遍历】
  8. 电脑知识:电脑无法开机解决方案,赶紧收藏吧!
  9. 算法设计与分析——递归与分治策略——全排列
  10. CF1404C:Fixed Point Removal(离线)(树状数组二分)
  11. 【Python基础入门系列】第05天:Python函数
  12. GetDlgItem
  13. nodejs mysql 返回值_带有Mysql数据库返回值的Nodejs
  14. 怎样在xcode5中使用低版本sdk,解决兼容ios7ui问题
  15. 201671010410 冯婷秀 实验十四 个人总结
  16. masm汇编语言linux命令,Windows10下利用DOSBOX和MASM32搭建汇编语言开发环境
  17. 基于支持向量机的图像分类(上篇)
  18. exec函数族的基本用法
  19. kaggle泰坦尼克号_Kaggle基础知识:泰坦尼克号比赛
  20. 报录比超过13:1的计算机专硕?211暨南大学公布报考人数!

热门文章

  1. scala与python混合调用实验
  2. java调试生命周期,一种基于JAVA的智能合约生命周期的管理方法与流程
  3. char类型的实参与const char类型的形参不兼容_C++干货系列——顶层const和底层const...
  4. vb6 combo根据index显示_VB6.0软件安装教程及学习资源
  5. java reference详解_Java Reference详解
  6. 新概念0817:终身学习
  7. C#中获取多个对象list中对象共有的属性项
  8. Winform中通过代码设置DevExpress的TextEdit的类型为Numbernic
  9. Winform中使用NPOI实现导出Excel并文件另存为
  10. Could not find a version that satisfies the requirement PIL