你分得清分布式、高并发与多线程吗?
当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?
当面试官问到高并发系统可以采用哪些手段来处理,或者者被问到分布式系统如何处理一致性的问题,是不是一脸懵逼?
的确,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量客户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。
什么是分布式?
分布式更多的一个概念,是为理解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要处理的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,少量名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式:
水平扩展:当一台机器扛不住流量时,就通过增加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;
垂直拆分:前台有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比方A机器解决余票查询的请求,B机器解决支付的请求。
什么是高并发?
相对于分布式来讲,高并发在处理的问题上会集中少量,其反应的是同时有多一些:比方在线直播服务,同时有上万人观看。
高并发可以通过分布式技术去处理,将并发流量分不到不同的物理服务器上。但除此之外,还可以有很多其余优化手段:比方使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。
什么是多线程?
多线程是指从软件或者者硬件上实现多个线程并发执行的技术,它更多的是处理CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。
这几个概念中,多线程处理的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全。在JAVA语言中,需要对JVM内存模型、指令重排等深入理解,才能写出一份高质量的多线程代码。
总结一下:
?
●分布式是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常管且难度非常大,有了这个基础,高并发、高吞吐等系统很容易构建;
● 高并发是从业务角度去形容系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程;
● 多线程则聚焦于如何使用编程语言将CPU调度能力最大化。
分布式与高并发系统,涉及到大量的概念和知识点,假如没有系统的学习,很容易会杂糅概念而辨识不清,在面试与实际工作中都会遇到困难。假如你从事Java开发,具有1年以上工作经验,希望深入浅出理解Java分布式、高并发等技术要点,渴望实现技术和职业成长上的双重突破,那么以下福利就很适合你:
Java进阶免费系列直播课。由多位拥有10+年Java开发经验的讲师向你传道高并发、分布式、大数据、高可用系统的架构设计,每天2小时,密集输入Java开发相关知识及经验,帮你快速实现技术和职业成长上的突破。 架构群:614478470 点击:免费领取
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 你分得清分布式、高并发与多线程吗?