分布式、高并发和多线程三个概念的简单区分

每当提起分布式、高并发和多线程这三个概念的时候,很多的程序员都会认为分布式=高并发=多线程,即认为这三个概念是相同的,但实际上这种认为是错误的。

什么是分布式

关于分布式的概念,我们大可以如此理解:它是为了解决性能瓶颈问题以及单个物理服务器容量不足问题所采用的优化手段。

而分布式这个领域需要解决极多的问题,且这些问题都在不同的技术层面上,包括分布式文件系统、分布式缓存、分布式数据库和分布式计算等。一些名词如Hadoop、Zookeeper和MQ等也都都跟分布式有关。 

如果从理念层面看待,分布式的实现可以划分为水平扩展和垂直拆分两种形式。

水平拓展

所谓的水平扩展,指的是当集群中的其中一台机器负担不了巨大的流量时,就通过增添机器的方法,将这些流量二一添作五平分到所有服务器上,这样,所有的机器便都可提供同等相当的服务。 

垂直拆分

同理,当在前端有多种查询需求时而一台机器不能承载时,便将不同的需求分发到不同的机器上。

以购票系统为例说明,当用户在平台页面查询所剩余票并购买支付时就会出现一下情况:

1. A机器处理余票查询的请求。

2. B机器处理支付的请求。

什么是高并发

如果说,分布式是针对巨大流量来增添分流,平分压力,那么高并发所解决的问题上就是请求集中的问题,它所反映的是的是同时有多少量。

比如在线直播服务,同时有上万人观看,这就是高并发,强调的是同一时间的大量请求。所以高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。不过除此之外,还是有很多其他优化手段:比如使用缓存系统,将所有的静态内容放到CDN或使用消息队列等。

什么是多线程

多线程则更多的是解决CPU调度多个进程的问题,让这些进程看上去是同时执行(实际是交替运行的)。

简单来说,多线程就是从软件或者硬件上实现多个线程并发执行的技术,通过多线程技术将一台服务器的服务能力最大化。虽然多线程的手段比较单一,但是多线程所能遇到的最大问题就是线程安全了。在Java语言中,需要对JVM内存模型、指令重排等有深入的了解,才能写出一份高质量的多线程代码。

总结

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

2.高并发是从业务的角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN或消息队列等,当然也包括多线程。

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

"所谓的孤独,是半夜想找人说话却在通讯录翻不到可以信赖的人,是想哭却没有可以依靠的肩膀,是急切地想要和人分享却得不到半点回应。"

猜你喜欢

转载自www.cnblogs.com/yanggb/p/11719143.html