一、分布式
分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域须要解决的问题极多,在不一样的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式:
水平扩展:当一台机器扛不住流量时,就经过添加机器的方式,将流量平分到全部服务器上,全部机器均可以提供至关的服务;
垂直拆分:前端有多种查询需求时,一台机器扛不住,能够将不一样的需求分发到不一样的机器上,好比A机器处理余票查询的请求,B机器处理支付的请求。前端
二、高并发
相对于分布式来说,高并发在解决的问题上会集中一些,其反应的是同时有多少许:好比在线直播服务,同时有上万人观看。
高并发能够经过分布式技术去解决,将并发流量分不到不一样的物理服务器上。但除此以外,还能够有不少其余优化手段:好比使用缓存系统,将全部的,静态内容放到CDN等;还可使用多线程技术将一台服务器的服务能力最大化。
三、多线程
多线程是指从软件或者硬件上实现多个线程并发执行的技术,它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。
这几个概念中,多线程解决的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全。在JAVA语言中,须要对JVM内存模型、指令重排等深刻了解,才能写出一份高质量的多线程代码。数据库
总结:
●分布式是从物理资源的角度去将不一样的机器组成一个总体对外服务,技术范围很是广且难度很是大,有了这个基础,高并发、高吞吐等系统很容易构建;
● 高并发是从业务角度去描述系统的能力,实现高并发的手段能够采用分布式,也能够采用诸如缓存、CDN等,固然也包括多线程;
● 多线程则聚焦于如何使用编程语言将CPU调度能力最大化。编程