Java大数据:关于分布式、高并发与多线程

2020-11-09 18:11:08 浏览数 (1)

大数据作为Java新一轮的热点方向,越来越多的企业在招聘当中,想要找到懂分布式、高并发的开发人才,而在Java大数据方向上,分布式、高并发、多线程既是重点,也是难点。今天我们就来聊聊Java大数据开发当中,分布式、高并发与多线程的概念异同。

对于新手小白们来说,学习Java的阶段,分布式、多线程、高并发,是常常听到,却又容易混淆的概念,甚至有人会认为分布式=高并发=多线程。

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

什么是分布式?

分布式的概念,在大数据的带动下,关注度明显上升。所谓分布式,其实就是一个概念,简单来说,就是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。

而分布式,在不同的技术层面上,又涉及到:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,代表性的框架很多,比如Hadoop、zookeeper、MQ等。

理论上,分布式的实现有两种形式:

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

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

什么是高并发?

高并发非常典型的一个场景,大家都非常熟悉,每年的双十一,就称得上是阿里的一次高并发实验:零点开抢,每秒几十万量级的订单,这就需要高并发来解决问题。

高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。这就是高并发与分布式产生关联的一种方式了。

但除此之外,应对高并发还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。

什么是多线程?

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

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

总结一下:

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

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

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

对于Java大数据开发这个方向来说,分布式、高并发与多线程,始终是绕不开的重难点,要想在职业道路上走得更远更高,那么相应地这些内容,需要逐步掌握,基础打扎实才行。

0 人点赞