分布式、高并发、多线程,到底有什么区别?

<div class="rich_media_content" id="js_content">
                

                

                
                
                <p></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?</span></p><p style="min-height:1em;line-height:27.2px;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">&nbsp;</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,<strong>他们三个总是相伴而生,但侧重点又有不同。</strong></span></p><p style="min-height:1em;text-align:center;line-height:2em;"><br></p><p style="min-height:1em;"><span style="font-size:15px;"><em><strong><span>什么是分布式?</span></strong></em></span></p><p style="min-height:1em;"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">分布式更多的一个概念,<strong>是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段</strong>。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式:</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">&nbsp;</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><strong><span>水平扩展:</span></strong><span>当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;</span></span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">&nbsp;</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><strong><span>垂直拆分:</span></strong><span>前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。</span></span></p><p style="min-height:1em;text-align:center;line-height:2em;"><br></p><p style="min-height:1em;"><span style="font-size:15px;"><em><strong><span>什么是高并发?</span></strong></em></span></p><p style="min-height:1em;"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><strong><span>相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量</span></strong><span>:比如在线直播服务,同时有上万人观看。</span></span></p><p style="min-height:1em;line-height:27.2px;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">高并发可以通过分布式技术去解决,将并发流量分不到不同的物理服务器上。但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。</span></p><p style="min-height:1em;line-height:2em;"><img src="https://img-blog.csdnimg.cn/img_convert/87efec8daa5a82567d675e03f30e0bcb.png" alt="640?wx_fmt=jpeg"></p><p style="min-height:1em;text-align:center;line-height:2em;"><br></p><p style="min-height:1em;"><span style="font-size:15px;"><em><strong><span>什么是多线程?</span></strong></em></span></p><p style="min-height:1em;letter-spacing:.544px;line-height:27.2px;font-family:'Optima-Regular', 'PingFangTC-light';"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><strong><span>多线程是指从软件或者硬件上实现多个线程并发执行的技术</span></strong><span>,它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。</span></span></p><p style="min-height:1em;line-height:27.2px;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">这几个概念中,<strong>多线程解决的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全</strong>。在JAVA语言中,需要对JVM内存模型、指令重排等深入了解,才能写出一份高质量的多线程代码。</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;">&nbsp;</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><strong><span>总结一下:</span></strong></span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><strong><span>&nbsp;</span></strong></span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="font-size:15px;"><span>●</span><span style="color:rgb(0,0,0);">分布式是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常管且难度非常大,有了这个基础,高并发、高吞吐等系统很容易构建;</span></span></p><p style="min-height:1em;line-height:27.2px;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';"><br></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="color:rgb(0,0,0);font-size:15px;">● 高并发是从业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程;</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="color:rgb(0,0,0);font-size:15px;">&nbsp;</span></p><p style="min-height:1em;letter-spacing:.5px;font-family:'Optima-Regular', 'PingFangTC-light';line-height:2em;"><span style="color:rgb(0,0,0);font-size:15px;">● 多线程则聚焦于如何使用编程语言将CPU调度能力最大化。</span></p><p></p>
            </div>
          </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值