文章目录
一、性能
性能,简而言之,就是速度
二、性能在计算机世界的两个方面表现
- (1)计算机硬件
- (2)计算机软件
三、软件系统高性能复杂度两个方面
1)单机复杂度
单机复杂度,就是单台计算机内部为了高性能带来的复杂度
计算机内部复杂度最关键的地方就是操作系统
操作系统和性能最相关的就是进程和线程
操作系统调度的最小单位就变成了线程,而进程变成了操作系统分配资源的最小单位
2)集群复杂度
集群复杂度,就是多台计算机集群为了高性能带来的复杂度
复杂业务的快速发展,单机性能是无法支撑的,需要采用机器集群的方式实现高性能
(1)任务分配
任务分配,指每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行
在性能计算上,实际情况通常是理论值的八折
(2)任务分解
业务越来越复杂,单台机器处理的性能会越来越低,采用“任务分解”,提升性能
四、应对高并发挑战的两个技术方向
互联网下的架构,最大的挑战就是高并发,其他的挑战往往是由高并发引起
高并发,即大量用户同时访问系统,系统面临大量的请求,系统需要同时针对用户请求进行处理,为每个用户创立线程,线程需要消耗CPU资源,占据一定的内存,消耗磁盘访问,消耗网络带宽空间,那么,如何处理并发访问的用户请求,为各个用户分配资源进行请求处理
1、垂直伸缩
(1)垂直伸缩的定义
垂直伸缩,并发量大量增加时,更多的用户请求,当前系统计算机资源不足,“增强单一服务器的功能”,“增强单一服务的计算能力”,原来100并发量,现在500,可以增强CPU、内存、磁盘、服务器等硬件条件
(2)垂直伸缩的解决方案
通过“升级硬件”和“网络吞吐能力”可以实现垂直伸缩,不需要改变应用架构,直接通过升级硬件和网络吞吐能力实现垂直伸缩
• 通过使用 RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力
• 通过切换到 SSD(固态硬盘)改善 I/O 访问速度
• 通过增加内存减少 I/O 操作
• 通过升级网络接口或者增加网络接口提高网络吞吐能力
• 更新服务器使用更多处理器或者更多超线程
(3)垂直伸缩的缺点
垂直伸缩符合“饱和曲线”,最后的成本代价很大,但是提升的效果不明显,业务赚取的利润都用来购买升级硬件,就得不偿失了
• 达到某个程度后,增加计算能力需要的更多的花费
• 垂直伸缩有物理极限
• 操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点
通常不需要使用垂直伸缩,当水平伸缩无法解决问题或者极其有钱的情况下,则可以采用垂直伸缩
2、水平伸缩
(1)水平伸缩的定义
水平伸缩,通过“增加服务器”提升计算能力的架构方法,就是增加同类服务器的数量,构成服务器集群,共同对外提供服务,也就是分布式系统架构
水平伸缩是当前互联网主要采用的方式,基于互联网渐进式特点,水平伸缩则是近似线性特点
(2)水平伸缩的缺点
虽然水平伸缩可以解决垂直伸缩的饱和曲线问题,但是,随着水平伸缩的不断扩展,也会带来系统的复杂性问题,也就是系统之间的交互复杂度,系统越多,交互耗损的时间越大
3、水平伸缩与垂直伸缩比较
通过一幅图即可了解两者之间的差别,可以跳转到有道云笔记查看
参考