00:00
那下面要给大家讲的呢,是另外一个章节,阿卡,我们打开这个幻灯片。好,这是我们讲的阿卡,那么阿卡是一个什么东西呢?阿卡是一个并发编程模型,在我们后续的这个Spark里面呢,它的这个底层的就是master和worker的通讯呢,就是用的阿卡这个模型来进行编写的,那我们来看一下阿卡是什么,首先呢,我们先对阿卡做一个基本的介绍,好的同学们请看。首先,阿卡4JAVA虚拟机平台上构建高并发分布式容错应用的一个工具包。和运行时。那就是他是对高并发这个处理的非常好,比较牛的一个框架,你可以简单的理解阿卡是编写并发程序的一个框架,就是我们scan呃的一个框架。那么阿卡它是什么语言写的呢?就是scanner语言编写的,同时它提供了scanner和Java的开发接口。
01:06
对啊,那阿凯他要解决的一个问题是什么呢?可以轻松的写出高效稳定的并发程序,程序员不用过多的考虑线程锁和资源竞争的问题。那以前同学们写一段代码呢,要要有很多的这个考虑,而且你们写的并发程序呢,通常情况下都是本机并发,很少涉及到就是一个集群,比如说我这有台机器,我这里还有还有多台机器,他们之间的这个相互通讯,嗯,应该说呃。这个要我们自己去写,这样一个底层要自己去写的话呢,还是很累的,而且你还不敢保证你的通讯这种机制是稳健的,有可能突然其中有一台机器宕机了,比如说将来我们这种。
02:00
啊,5G集群往往都是层级式的。成绩是什么概念呢?就是往往我们一台机器是撑不住的,比如说我们传统的这种服务器结构是怎样一种服务器结构呢?我简单的给大家聊两句,就传统的这种服务器结构,它是这样子的,我打开一个示意图给大家说一下。包括你们。你们在学习的时候呢,对吧,传统的服务器结构是这样子的,这有一台服务器。这有一台服务器,然后呢,下面就跑了很多很多的客户端。比如说这有三个客户端。那么我们同时就一台服务器,就。直接连到了,呃,多个客户端连到了同一台服务器上面去。对,你们前面写的。你们前面写的那个电信项目是是构建并发了吗?
03:00
还是说是这种一台服务器上面跑的。是多台还是一台,呃,是是多台还是一台呀。是一台是吧。就是你们写的电信那个项目。用集群了是吧,好,那就那就是多彩了。可以跑多台是吧?好,如果大家知道这个多台,那就更好处理了,就传统的一台服务器是撑不住的,后面通常情况下会怎么样呢?通常情况下它是这样子的,就是这边对外提供一个负载均衡。它提供一个负载均衡。负载均衡均衡器。均衡。那么这个负负载均衡呢,有软件,有软件这种构建的负载均衡,也有硬件的。也有硬件的。那么这个负载均衡器跑到跑到前面过后呢,咱们后台有更多的服务器,就是这样的一种服务器集群。
04:01
然后呢,这边有多台服务器。那负载均衡这个这前面跑的这个负载均衡的一个组件呢,它可以把你的任务负载,呃,这个分散到不同的服务器去进行这个运行。啊进行运行,这样呢,就缓解了这个服务器的一个压力,对吧,它就缓解这个服务器的压力。啊,像这种。那如果说这个一层还不够呢,还可以在这一层上面再进行这个,这再挂一个负载均衡,如果如果传统的这种还不够,那这这一级呢,就不是其直接的服务器又是一台负载均衡,它就一个负载均衡,下面还可以继续挂。那现在就就很大很大了,所以它是这么一个结构,好,那既然是这个结构呢,我们如果很多这个安全性都并发的线程锁资源竞争呢,都要你自己去处理,所以说比较累,那阿卡如果用了呢,诶你这些就不需要考虑了,包括网络的通通讯也不需要大家考虑了,所以这是它的一个基本介绍。
05:09
那基本介绍完了过后,我们来看看,嗯,阿卡里面呢,它有一个最重要的模型是actor模型,简单的讲阿卡它的核心组件。他是以一个角色,就是ICU这么一种模式来进行这个相互通讯和这个并发处理的,那么我们来一起看一看这句话啊,这句话呢,就是实际上是我们自己把它这个总结出来的,处理并发问题的关键是要保证共享数据的一致性和正确性。因为程序是多线程的,多个线程对同一个数据进行修改,如果不加同步条件呢?势必造成数据的污染。这个最经典的,同学们在学Java的时候呢,老师应该讲过,就是像这种出票系统。
06:01
这个出票系统在出票的那那段代码里面呢,往往我们会加入一个同步条件,加一个互斥锁,比如像SNCH加个对象锁来进行互斥。那么这种加了呼市过后呢,实际上并发就会阻塞在这种代码,对程序效率呢,就有比较大的影响,你比如说我写一段代码。我写一段代码。好,我们。就写到这儿,我们新建一个章节。我们新建一个章节,叫CHAPTER16。下面我写一段代码,大家体验一下,比如说我写一段Java代码测试。好比如现在呢,我们这儿有一个这样的一个类,叫做。Take票啊票啊,那票呢,里面咱们有一个方法叫做什么呢?啊有有这个出票sell。
07:02
这有个ticket。TT,那在出票的时候呢,一般会有这样,诶,假设我们这VO的啊VO啊,假如我们这前面有一段代码来进行这个处理。哦,前面有一段代码来进行这个处理,下面呢也有一段代码,中间这个代码是干什么呢?是卖票的。是卖票就出票的。啊,这个卖卖票啊,那卖票呢,往往会对我们这个票的总数进行一个减,所以说为了保证这个互斥并发,在这有个互斥的问题,因为不能让同时让多个线程来进,这就存在一个互斥。那互斥呢,在我们Java里面呢,一般可以这样去处理,就是类似啊,加一个这样一个锁啊,在这里面写上我们互斥的代码。互斥的代码。啊,那这样子的好是好,但是这样会造成我们多个县城会阻塞在。
08:04
这段代码,那换言之就是这个对程序的效率呢,就有比较大的影响。那么如果不用这个呢,也可以,那就用单线程处理,单线程呢不会有数据一致性和这个问题,但是系统性能又不能得到保证好,阿卡这个模型的出现解决了这个问题,它可以什么呢?它可以简化并发编程,提高程序性能。你可以这样理解,阿卡模型是一种处理并发的一个很好的解决方案,比较牛的一个方方案说这是对他做了一个介绍。好,有了介绍过后呢,我们。把这个基本介绍先说到这儿,下面呢,我给大家说一下它的一个模型的机制。截取一段。
我来说两句