课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
高可用性和高并发编程开发都是随着互联网的不断发展而出现的软件开发需求,而今天我们就通过案例分析来了解一下,高并发编程软件开发都有哪些优化方法。
1、提升单机性能
尽可能的提升单机的性能是一个永恒的话题,无论是采用分布式还是其他方案,单机性能的提高,对于一个系统来说只有益处。拿编程语言来说,c或者c++语言编写的程序理论上会比java,net,Python写的程序要高效,当然这需要建立在程序正常运行的情况下。
2、横向扩展
当一个单机系统无法抵抗巨大流量冲击的时候,简单有效的解决方案之一便是横向扩展,横向扩展是指把巨大的流量分割为数个比较小的流量,从而解决高并发系统的性能问题,本质上,横向扩展属于分而治之的理论,属于分布式的概念范畴。
3、缓存
除了上面所说的横向扩展方案,另外一种行之有效并且足够简单的便是缓存方案。这一点毋庸置疑,缓存可以遍布在一个系统的各个角落,从操作系统到浏览器,从cpu到磁盘,从数据库到消息队列,任何稍微复杂的服务和组件中都有缓存的影子。
缓存为什么可以大幅度提高性能的性能呢?这还需要从系统的瓶颈来说,在客户端一个请求的生命周期中,这个请求的响应时间严重受限于慢的那个环节,这类似于木桶效应。
4、异步
谈到异步,必须要说下同步,同步调用是指调用方要阻塞等待被调用方执行完毕才可以返回。系统现在普遍都会采用多线程的方式来提供系统的吞吐量(多进程的方式现在很少,但不代表没有,比如:nodejs,nginx),在同步这种方式下,如果被调用方的响应时间过长,会造成调用方的线程长时间处于等待状态,线程的利用率大幅度降低,线程对于系统来说,是很昂贵的资源,创建大量的线程去应对高并发是不明智的,不仅仅浪费了内存,而且会加大线程上下文cpu切换的成本。
一个高吞吐量的系统,理论上所有的线程都要时时刻刻在工作,而且把cpu资源压榨到多。对于一个IO密集型操作来说,采用异步方式可以大大提高系统吞吐量。异步不需要等待被调用方执行完成就可以执行其他的逻辑,在被调用方执行完毕之后通过通知回调的方式反馈给调用方。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。