当前位置:首页 > 技术文章 > 正文内容

你分得清分布式、高并发与多线程吗?

lcy2019-01-25技术文章1990

当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?

 

当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?

 

确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。

 

什么是分布式?

 

分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式:

 

水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;

 

垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。

 

什么是高并发?

 

相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量:比如在线直播服务,同时有上万人观看。

 

高并发可以通过分布式技术去解决,将并发流量分不到不同的物理服务器上。但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。

你分得清分布式、高并发与多线程吗?

 

 

什么是多线程?

 

多线程是指从软件或者硬件上实现多个线程并发执行的技术,它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。

 

这几个概念中,多线程解决的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全。在JAVA语言中,需要对JVM内存模型、指令重排等深入了解,才能写出一份高质量的多线程代码。

 

总结一下:

 

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

 

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

 

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

 


 

版权声明:本文由cy's Blog发布,如需转载请注明出处。

本文链接:https://www.c3389.com/post/439.html

相关文章

linux安装系统对基本安全设置

安装注意1.删除系统特殊的的用户帐号:禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有...

服务器概念及分类

一、服务器概述服务器(server)指的是网络环境下为客户机(client)提供某种服务的专用计算机,服务器装有网络操作系统和各种服务器应用系统软件。服务器的处理速度和系统可靠性比普通PC要高得多。二...

利用Squid + DNSPOD 搭建CDN服务器心得[转载]

利用Squid + DNSPOD 搭建CDN服务器心得我的个人网站 www.c3389.com 最近很多人反映访问速度很慢,后来我知道原来服务器一直搭建在铁通线路上,造成国内的电信线路用户有时候网页都...

CentOS 7 通过yum安装python3,pip3和最新版的Django

安装python3yum源中提供了python3的安装包,但未必是最新的python版本。例如当前我的环境中,yum源中的python3为3.6版本。python36.x86_64 : Interpr...

ETP 留言本v1.5爆出漏洞及利用方法

留言内容写一句话木马,选择提交留言``开始测试了一句话不行....  后来搜了下一句话木马的多种写法 最终确定:┼攠數畣整爠煥敵瑳∨∣┩愾   ...

oracle注射详细资料...

第一部分基本查 程序代码select * from V$PWFILE_USERS //查看dba用户select * from v$version //查看oracle版本以及系统版本select *...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。