《软件架构》高扩展架构

为了支持不断增长的性能需求衍生出一种专门的高扩展架构。换句话说,如果你的性能需求突然超过原有的软件+硬件的组合性能上限,你可以调整自己系统,通过硬件或者软件来支持新增的性能需求

扩展因子

线性扩展:当你扩展你的系统硬件配置,你希望性能的扩展幅度也是同样水平的扩展。例如你双倍增加你的硬件配置,你的系统性能也是双倍增长。

但是一般来说非常难达到线性扩展的水平,一般你扩展一倍的硬件配置,但是你的性能扩展无法达到一倍,例如你双倍增加你的硬件配置,你的性能增长不到双倍。

扩展硬件系统配置,增加的额外的工作量多少,需要参考你系统的因素,扩展因素又依靠你的系统扩展组成

垂直扩容和水平扩容

当下非常流行的两种扩容方式:垂直扩容和水平扩容

垂直扩容:对服务器本身进行更换,部署比以前更好的服务器。新的服务器相比以前的服务器有更快的CPU,更多的内存,更大更快的硬盘,更快的内存总线

c53a7f66be3a1e328232abe5f2142cd5.png

水平扩容:部署更多的服务器,增加的服务器性能与之前的服务器性能相同,或者花费同样的费用(电脑更新速度很快,同样的费用在以后电脑性能更强)

daa7073871d8ef01c4fa0e431e9b2d40.png

具有可扩展性架构的必备要求

从开发人员的角度来看最简单的方法就是垂直扩容,只需要将服务部署到更好的机器上,那么服务的性能就会更好,这种方式在一开始是一个相对线性的提升,但是一旦超过普通硬件的标准,需要更好的CPU, 更大更快的内存,更大更快的硬盘,更快更好的主板,这些硬件的价格提升会非常巨大相比性能的提升。同时现在的CPU发展趋势是增加多核,那么增加更多的CPU核心,但是软件并没有去明确的去利用这些新增的CPU核心,那么新增的CPU核心就不会给你带来性能提升。

水平扩容是一个更好的方式,但是水平扩容对于开发人员不是那么容易实现,为了使你的软件在多个电脑上进行很好的运行(或者一台机器多CPU),你的软件需要使用并行任务。从实际的角度来看,你的软件并行任务越好,你的软件将具有更好的水平扩容的能力

任务并行化

并行化任务需要做到如下几点

  • 任务可以分配到不同的机器上

  • 分配不同的任务到一台机器的不同的CPU上

  • 分陪单独的任务在一个CPU的不同线程上

同时你你可以利用一些特殊先进的硬件来更好的支持,例如利用的显卡的计算能力,或者像具有高并发的InfiniBand网络接口。

负载均衡:分配单独的任务到单独的机器上,负载均衡的详细介绍在单独的文章中介绍。

并发任务:执行多个不同的程序在一台机器上,很可能使用同一个或者不同的CPU核心。多任务处理一般由操作系统进行操作,所以一般来说不需要软件开发人员进行考虑。所以你需要考虑的是如何将你的程序任务,变得更小,更独立但是又是相互协作的流程,如果有必要,你可以将其分布到不同的CPU核心上甚至不同的机器上。

多线程:将任务分配给一个人应用的不同线程叫做多线程,这里有一篇文章专门介绍Java 多线程,所以这里并不会具体介绍多线程。

为了实现完全并行,一个任务必须独立于其他并行执行的任务。

2bd5c6b03caf85017d6457351446530c.png

如果希望非常完全可以将任务部署到任何机器上,任务必须包含或能够访问执行任务所需的任何数据,而不管是什么服务器去执行任务。确切的说,这取决于您正在开发的应用程序的类型,因此在这里我无法更详细地介绍。

- - - -全文完- - - - 

喜欢本文的朋友,欢迎关注公众号  并发编程网,收看更多精彩内容

c07862122976904d0d6b65a5c5ac105f.jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值