初学时,不少人都会将三者混淆,误以为分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。
分布式是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。在不同的技术层面上有分布式文件系统、分布式缓存、分布式数据库、分布式计算等,例如zookeeper、MQ等都跟分布式有关。目前常见分布式的实现有两种:
1.水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,通过负载均衡将流量平分到所有服务器上,负载均衡又分为硬件负载和软件负载,常见的硬件有F5,软件NGINX;
2.垂直拆分,也就是常说的按业务拆分,分中心部署,将不同的业务需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。
高并发
相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量,比如秒杀,抢购,促销等。
高并发可以通过分布式技术去解决,将并发流量分不到不同的物理服务器上。也可以通过其他的优化手段,比如使用缓存系统,将所有的静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。
多线程?
多线程是指从软件或者硬件上实现多个线程并发执行的技术,它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。多线程解决的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全,内存共享。在JAVA语言中,涉及的知识点有JVM内存模型、lock、volatile、automic、synchronized
领取专属 10元无门槛券
私享最新 技术干货