分布式,高并发,多线程之间有啥区别

这三个词估计是现如今博客区或招聘网站上最常看到的字样了,我想大部分不接触大型互联网企业的程序员都很难接触这些东西。心向往之,但无奈没机会接触。平时多线程遇到到的还算多。分布式和高并发在企业信息管理系统中可能不多见。当面试官问起这三个词的时候,是不试试很多人都认为分布式=高并发=多线程? 一开始接触的时候可能很多都会混淆。所以总结一下:

1. 什么是分布式?

 分布式是一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题很多,在不同的技术层面上,又包含:分布式文件系统,分布式数据库,分布式缓存,分布式计算等等,一些名词,如:Hadoop, zookeeper,MQ等都跟分布式有关。从理念上讲,分布式的实现有两种方式:水平扩展, 当一台机器的容量抗不住的时候,需要增加机器的方式,将流量平均到所有服务器上,所有机器都可以提供相当的服务;.垂直扩展,前端有多种需求查询时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的时候,B机器可以处理支付请求等。

2. 什么是高并发

相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少流量进来。比如:在线直播,秒杀等,同时有上万人观看,参抢。高并发可以用分布式来解决,将并发的流量分到不同的物理服务器上。但除此外,还可以有很多其他的优化手段,比如:使用缓存,将所有的,静态内容放到CDN等。 还可以使用多线程技术将一台服务的服务能力最大化。

3. 什么是多线程

多线程是指从软件或硬件上实现多个线程并发执行的技术。它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行。这几个概念中,多线程解决的问题是很明确的,手动也是比较单一的,基本上遇到的最大问题就是线程安全。这JAVA语言中,需要对JVM内存模型,指令重排序等深入了解,才能写出一份高质量的多线程代码。

总结一下:

分布式是从物理资源的角度去将不同的机器组成一个整体对外提供服务的,技术范围非常广且难度非常大,有了这个基础,高并发,高吞吐等系统很容易实现。

 

高并发是从以业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如:缓存,CND等,也包括多线程。

多线程则聚集于如何使用编程语言将CPU调度能力最大化。

 

posted on 2019-02-17 22:42  Msea  阅读(6700)  评论(1编辑  收藏  举报

导航