我眼中的云计算

来源:互联网 发布:海岩剧 知乎 编辑:程序博客网 时间:2024/04/30 12:13
        CPU厂商在提高主频遭遇功耗/性能瓶颈后,转而积极的增加核心,缓存,提升制造工艺(处理器面积决定了核心数和缓存大小),为了充分挖掘CPU的潜能(整数运算单元/浮点运算单元/一二三级缓存),Intel为单物理核心增加了一个新的逻辑运算单元,以约5%制造面积的代价换取15~30%的性能提升;而软件架构也面临同样的问题,随着业务的增长,系统垂直升级时遭遇成本/性能瓶颈,转而使用水平升级,先对业务进行纵向分割成不同的功能块,再基于业务功能的访问量实施横行分割,以充分利用物理资源的并行计算能力,原则是异常情况发生时对系统的影响最小。把任务分割成串行部分和并行部分后,在拆分粒度合适的情况下,通过多线程对并行部分的加速,性能会得到一定的提升,随并行部分在整个任务中占比的增大,总的处理速度也会随之加快(需比较串行部分和并行部分之间工作传递的时间t1,工作在并行部分的执行时间t2,显然t2/t1越大,获得的效果越明显,而如何分割任务产生合适数量的并行工作线程则依赖于测算调优)。多用户环境下,使用同步模式,如果系统中存在着多个处理层,每个处理层都必须等待下一层的返回结果,导致了资源的较大浪费,7号信令应用前的长途电话接续超慢即是典型;而使用异步模式时,各处理层在完成自身的逻辑后,把任务异步传递到下一层,即可继续执行新的工作,极大的提高了资源利用率,整个系统的吞吐量受限于最慢的处理层;如果允许增大响应时间,那么吞吐量还可以获得一定的增长。习惯用于在两个处理层之间传送任务的队列,其读写峰值由所采用的硬件决定,在超过访问线程数的阈值后,每线程访问队列的平均时间随线程数的增加而增大,继续增加工作线程数得到的收益率在减少,即便使用了并发性能较好的CAS无锁队列,也只是增大了访问线程数的阈值。分而治之,化整为零,是处理问题的不二选择。

        软硬件总是相伴着前行,也相互借鉴。服务器早期的SMP模式,计算资源共享访问系统的存储资源(内存及I/O),而内存总线带宽是固定的,计算资源在增加到一定程度后,由于总线带宽的限制,计算资源在获取内存资源时出现争抢,计算能力无法得到进一步提升;而为了解决SMP模式在创建大规模系统时遇到的可扩展性问题,业界又提出了MPP模式和NUMA模式,MPP模式使用外部I/O来共享计算节点,在提供与计算能力匹配的I/O带宽和节点间带宽后,使用软件的协调处理可获得近乎无限的线型扩展能力;NUMA模式分组搭配相应的物理资源,计算资源在访问分配给自己的存储资源时可获得更快的访问时间,而在访问远端内存时则要接受较长的等待时间,在硬件保证缓存一致性的情况下,可让业务获得更快速的处理(而Intel在Nehalem架构引入类似策略,通过为每个CPU在三级缓存上设置对应的区块来提升速度,不再使用统一管线避免计算资源争抢完全共享的三级缓存);在而实际应用时如何权衡,则取决于业务的特性以及系统构建的成本,MapReduce是MPP模式下的典型进化应用,使用本地存储的数据进行map计算,但第二阶段的reduce计算仍需要网络带宽进行传输,从时间上考虑适合离线并行化任务处理。随着硬件资源的升级,而计算资源和存储资源提升曲线不一致,那么计算资源需要线性衡量,以匹配业务规模。

        作为MPP模式基石的分布式文件系统,自然也是云计算的重要组成部分,大文件的分块存储,分块的多副本,保证了并行计算的性能和数据的安全性,但不可避免的是I/O操作相对内存来说在数据读写方面的性能差距较大,需要权衡计算所耗费时间与数据读写耗费的时间比例,为计算任务设置合适的规模。而云计算利用各种不同应用自身的特性(计算密集型/内存密集型/磁盘密集型),以及应用在执行时间点和访问峰值时间点的差异,当这些不同类型的应用混合到一定规模时,对物理资源的利用率会达到一个令人惊讶的程度,加上适当的人工调整,使计算/缓存/存储/ 访问的比例均衡,云的利用效率相比单机/小集群高出很多。

        分工制促进了人类生产力的提高,原因有三,一是熟练程度的提高了,二是多个任务间切换的时间减少了,三是工具的辅助。虚拟化的发展使硬件的'分工'成为可能,相对人的单任务模式,当前的计算资源天然具有多任务特性,而云计算在虚拟化的基础上,提供各种物理资源(CPU/内存/存储空间)的租用服务,演进出的云应用,云存储,云数据库(RDBMS/NOSQL),云分析,按需分配,提高了硬件的利用率的同时,用户节省了开支,快速增加资源的同时,跨越了空间的限制;而大厂商通过出租闲置资源加收入,形成共赢,只是商业数据的敏感性限制着租用模式的增长。
原创粉丝点击