复杂度的六个来源之一:高性能

运算性能迅猛发展、软件复杂度发展、硬件存储发展。

用来代替旧技术的新技术才会给软件系统带来复杂度,而用来淘汰旧技术的新技术则不用担心。

 

1.单台计算机

    手工操作->批处理->进程->分时多进程->进程通信->线程(共享进程数据)->互斥锁机制

    进程:操作系统分配资源的最小单位

    线程:操作系统调度的最小单位

    SMP多核处理器方案

    很多开源软件也不一定要用到多进程,例如:Redis

2.多台计算机集群

    2016年双十一支付宝每秒峰值12万笔支付。

    2017年春节微信红包手法红包每秒达到76万个。

    以上规模的业务系统,背后的机器数量都是万台级别的。

想提升性能不仅仅是增加机器,需要配合达到高性能是一个复杂的任务。

① 任务分配

a.需要增加任务分配器:硬件设备F5、软件网络设备LVS、负载均衡软件Nginx,根据性能、成本、可维护性等方面选择。

b.连接和交互并进行管理:连接建立、检测、中断后恢复方案等。

c.分配算法:轮询、加权、负载等。

 



单台任务分配器本身遇到瓶颈也要进行扩展,如图:



d.需要讲用户分配到不同的分配器上:DNS轮询、智能DNS、CDN、GSLB设备等。

e.任务分配器与业务服务器之间变为多对多关系。

上面的业务可以是一个完整的业务,也可以是一个具体的任务,如:Memcache自己的集群算法。

② 任务分解

【实例分析】

往往业务的复杂对单机压力很大,无法通过扩展机器的方式得到成倍的性能提升,此时需要将任务分解,如微信:



a.简单的系统容易性能高

b.分配后的系统方便对单个业务进行扩展

那将微信的7个子系统再进行扩展更多可以么?

c.分的太细会使得层次调用次数成指数上升,反而导致业务性能下降。



机器之间的通讯时间会明显增长,耗时耗力。

 

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信