亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

學架構筆記4:高性能復雜

標簽:
架構
单机复杂度

计算机内部最关键的地方是操作系统,操作系统和性能最相关的就是进程和线程。

批处理程序的计算机一次只能执行一个任务,如果某任务需要从IO设备读取数据,CPU在此时则是空闲的。因此为了提升CPU利用率,引入了进程。为了达到多进程并行运行的目的,采取了分时的方式。

多进程每个进程数据不共享,如果两个进程需要通信,则需要依托中间存储介质,效率低且程序复杂。引入进程间通信,包括管道、消息队列、信号量、共享存储。

多进程的每个进程内部只能串行,也需要并行处理。引入线程,同时为了保证数据的正确性,引入互斥锁机制。从此,线程是操作系统调度的最小单位,进程是操作系统分配资源的最小单位。

多线程、多进程本质上还是分时系统,引入多个CPU实现真正意义上的多任务并行,有解决方案:对称多处理器结构SMP、非一致存储访问结构NUMA、海量并行处理结构MPP,其中SMP最常见。

集群复杂度

计算机硬件的发展速度远远比不上业务的发展速度。单机性能无法支撑业务,必须采用机器集群。

任务分配

不同的任务分配到不同的机器上执行,拆分业务的复杂度体现在:

  1. 需要增加任务分配器,可能是硬件网络设备(F5、交换机),可能是软件网络设备(LVS),可能是复杂均衡软件(Nginx、HAProxy),如果自研系统则还需要更多的维护成本。
  2. 任务分配器和业务服务器之间有连接交互
  3. 任务分配器需要新增分配算法。
  4. 任务分配器在大量请求下也需要多台,结构会更复杂

任务分解

通过以上任务分配可以突破单台机器性能的瓶颈,但是随着业务增长,单纯的任务分配和增加机器已经不能获得相应的收益,引入“任务分解”。

将一个业务的任务或者功能从逻辑的角度分解成不同的小功能,独立出来一个个业务子系统。

虽然代码量可能不减反增,但能提高性能的原因如下:

  1. 子系统简单而容易优化
  2. 易扩展

但是分解的粒度必须要把握好,而度量的关键在于网络的延迟不占主要延时 —— 如果粒度过细,则需要消耗太多的时间作连接和传输的工作。

总结

学习了软件中高性能带来的复杂度,一是体现在单机内部的复杂度,例如多线程多进程,另一个体现在集群的复杂度。

先这样吧

若有错误之处请指出,更多地关注煎鱼

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消