00:00
首先呢,花点时间把我们上午的东西呢,给大家做一个我们的简单的回顾吧,啊,把上午东西给大家简单回顾一下,呃,那么到目前为止呢,咱们这个项目呀,咱们的项目其实主要介绍什么?就是介绍我们这个数据采集这一块啊,介数据采集这一块,那么如果要数据采集对吧?那么咱们现在那么主要大概的流程是什么样的呢?首先啊,那么咱们有一个价包,这个价包已经给大家提供好了啊,那这个价包呢,它的一个主要作用就是为了帮助我们呀,模拟生成我们日志数据的啊,就是各种各样的日志啊,行为日志啊,或者说我启动日志对他来负责帮你模拟生成啊,那么咱们现在这个和我原来离线不太一样,原来离线呢,这个价包呢,它其实功能比比我们现在的多,对吧,它生成完日志呢,直接就过盘了,对吧?那我们现在没有啊,我们现在呢,生成完日志直接发送到某一个指定的我们这个地址去,那需要我对自己呢,对我们这个日志进行处理啊,那对日志进行处理,我们现在主要的处理方式呢,其实我们是。
01:01
对吧,逐步的加深的对吧?那么一开始我呢,是写了一个我们的程序啊,在我idea里边我写了一个程序对吧,然后呢,去接收我们模拟生成的数据,然后呢对数据做一个处理,那么对数据做处理呢,主要有两方面,第一个落盘啊,那么这个落盘呢,我们是借助于我们这个log back对吧来落盘的,那么第二个呢,是往卡夫卡里边来写,对吧,那么这个呢,是我们现在的第一个的这个需求,然后呢,第二个需求呢,这个就咱今天呢开始做的了,说明你以后真正在生产环境里边,你不可能每次再去接触我们的日志的时候呀,那你都是对吧,这个干什么,你都你都是把我这个程序对吧,在你D里运行对吧,这肯定不靠谱对吧?那怎么办呢?我们是把我当前对日志进行处理的程序,我们打了一个包啊,放到我们利用的服务器上啊,那么我们现在呢,把这个放到利用服务器上,其实这个呢也比较简单,直接打包,然后呢放到利用服务器,然后把它运行起来,然后接下来去修改一下我们现在数据生成的一个地址,对吧,然后呢,交给他去。
02:01
处理这就OK了是吧,然后其实再往下走,我们呢,又加深了点难度,什么呢?我们现在日志啊比较多啊,数据量呢比较大是吧,那么一台服务器呢啊处理不过来了,那么这个时候呢,我需要对我们这个啊这个服务器呢,进行一个我们这个啊这个扩容,也就是我现在原来呢,就一台服务器,到现在呢,我需要有一个集群是吧?来这里进行处理是吧?那我现在把203和204啊也作为日志处理的服务器,那么如果把他们做日志处理处理的服务器的话,首先你是不是得把咱们现在这个这个价包拿过来啊,运行起来呀,对吧?然后接下来呢,那么咱们现在面临一个问题什么呢?就是我日志生成之后,我到底应该给哪台服务器发送过来?啊,那么这个时候我们需要有一个负载均衡器对吧?那么负载均衡呢,有两个我们这个选择,一个呢是硬件,比如说F5对吧,是深信服这些呢,是比较常用的对吧?然后还有另外一个呢,是我们这个软件的方式啊,那么软件呢,我们使用的是NG啊,使用的是NG,这个NG是什么,这个N它的描述对吧?那么两个一个呢,是我们的高性能的外部服务器或者attp服务器,那么另外一个呢,它是一个反向代理服务器啊,反向代理服务器也就是我现在呢,他代理的我们这些我们的处理日志请求的这些服务器,然后接下来那么接收到我们日志之后,他会把我的请求来转发给我们现在他的一个啊后边的一个服务器啊,它其实是一个这样的过程啊,它其实是一个这样的过程啊,然后呢,咱们大家在使用我们的NG的时候啊,那么有些同学遇到了一个问题什么呢?其实我当前NGS本身这个八零端口啊,那如果说你要是对吧,这个普通用户。
03:44
不是管理员用户的话,他在启动的时候是报错呀,对吧,那么我们在讲义上给大家提供了怎么样去把这个东西呢解决一下,让我们普通用户也可以使用1024以下的端口,但是我发现执行完这个之后呢,这个报错变了,它变成什么,变成八零端口啊冲突了。
04:01
啊,别成八零端有冲突了,这个不是每一台同学的机器都会碰到对吧?那么有部分同学呢会碰到对吧?那么如果说八零端口冲突的话,那说明咱们当前在我live上面是不是已经起了一个我们的八零端口这样的服务啊,谁呢,对吧?有一个叫HTTPB这样的服务对吧?这个呢,其实主要是我们的PHP这块啊,PHP导就我现在呢,在咱们这里面有语言是吧?PHP,那么它呢,其实要使用我们现在这样一个端口,对吧?那么这块咱们根本用不上,所以说呢,你可以把咱们的APP服务啊给它停掉。在我们这个sa OST里边,我现在呢,想停掉一个服务,怎么停,同学们system c,然后呢,然后是stop,然后接下来在HTTPD,就如果说啊,你在你这个运营的时候,你发现我们的八零端口呢,冲突了啊冲突了,那么这时候呢,那么你现在把这个服务呢给停掉啊,但是这种停呢,它是临时的,就只在你当前这个会话它停掉,我想让咱们这个开机的时候呢,这个服务干脆就不起这东西怎么办?诶system c PL这里是不是有一个叫disable啊对吧,然后呢,把这个服务对吧,把这个服务呢给它禁掉,就是禁掉它的一个开机启动,对禁掉开机启动,如果说你现在呢要八零端冲突,那么你把这个执行一下啊,你把这个这一下,对吧,然后接下来呢,那么咱们呢,就主要给大家介绍关于我们这个NG,它的一个我们这个负载均衡,那么它怎么样去实现咱们负载均衡呢?其实我。
05:37
我们现在在讲NG的时候,其实主要其实这个重点理解就是是不是它的一个配置文件里边的东西啊,对吧?你想安装这个东西比较简单对吧?直接呢解压,然后呢,指定安装目录,然后make,对make install这个就OK了,对吧?然后接下来我们主要呢,去修改它的一个配置文件,那么咱们现在来看一看啊,它的配置文件其实这个时候呢,已经发生变化了,来到我们的OT model,然后N这个中,原来默认面刚装完之后,它这里边是不是只有四个目录啊对吧?那么咱们现在呢,这里边它会多一些对吧?那么像这些你不用去管它对吧?咱们其实呢,主要有这四个Co HTML log,以及呢,我们这个那一看这几个这是什么呀,Time是临时的呀,对吧?哎,那么这个你不用去管它啊,不用去管它,那我现在来到我这com这个配置文件中,那么在咱们当前这个配置文件里边,你要想实现我们现在它的一个反向代理功能的话,那么大概咱们都需要做哪些配置呢?
06:34
首先第一个你是不是得去拦截请求啊,对,就用户发送请求过来给你这个N这个服务器对吧?那么你是不是得把请求给拦截一下,那么他怎么样去找到,诶我现在我把这请求发送给NGS呢,对吧?那么在我这里边对吧?在咱们ng.com文件里边,那么有一个server的配置对吧?那么这个server呢,其实是我当前NG的服务器,它的一个我们的域名和端口号,然后接下来你把请求发送给咱们现在NG的之后,那我怎么去拦截呢?这里是不是有一个location呀,对吧?通过location来对你的请求路径来做一个拦截,对吧?那么如果是反向代理的话,那么这个时候当你发送这个请求之后,那我把它交给咱们现在呢这个反向代理服务器来进行处理,那我当前的反向代理服务器到底代理了哪几台机器对吧?那么通过什么来配置的呢?是不是有叫upstream呀,对吧?这个呢,其实就是我们这个反向的意思啊,我们反向的意思对吧?那么这里那么有要求,要求什么呢?大家在写的时候一定要注意对吧?咱们现在呢,在通过pass来指定反。
07:34
代理服务器名称的时候,前面这个是是不是得加一个HPTP啊对吧?把把这个加上,然后呢,再往upstream后边跟着这个名称,那么要和你这个反向代理服务器它的名称呢,要保持一致啊吧,这是第一个需要注意的地方,比较容易出错的地方,对吧?那么好多同学在写的时候呢,哎,没有加这个对,然后呢,直接那大俩一致这样的有一些问题,这有些问题,然后第二个呢,那么咱们现在在配置的时候,每一行后边我是不是都加了一个分号啊结束对吧?那么这块呢,大家下去也要注意一下是吧,这块也别忘了啊吧,别忘了加咱们这分号是吧?然后接下来,那我现在呢,再去做我们这负载均衡的时候,那么主要有这么几种负载均衡策略,对吧,那比如说对吧,这个轮询对吧,比如说权重对吧,比如说呢,咱们的随机,比如说呢,咱们这个对吧,这个备份对吧,其实都有对吧,像这几种呢,是关于我们这个这个论训策略啊,关联策略好了,那么把这个配完之后呢,那么咱们要求大家什么呀,要求大家对。
08:34
我们整体这个思路对吧?你要弄明白对吧?其实有的时候咱们现在在写我这项目的时候,并不是因为代码把你难住了,对吧?你的代码写的没问题,但是呢,同学们在做测试的时候,我不知道该从哪测,所以你现在啊,你的你的卡不卡配置也没问题对吧?你的N这配置也没问题对吧,你的价包也没问题,但是呢,那么你在起的时候对吧?那么有的时候他是不是有先后顺序啊,比如说你上来把所有环节都准备好了对吧?这些东西还没起呢,你直接上来先引他,那肯定报错。
09:04
他报什么错,同学们。如果说我现在这个东西,我这这都没起对吧,这个东西我现在直接运行我们这个这这这个程序对吧,报什么是不什么什么网络连接那个没连上啊对吧?哎,那么如果说呢,我现在在咱们这里边对吧?那么找到我们现在啊这个网络了,那么接下来那么他往N里边找对吧,然后接下来N来交给我们现在的这些我们真正处理的服务器,那最后呢,发送给卡夫卡,所以这块的思路呢,大家要明白,而且呢啊,假如说啊,我现在在咱们这里边,我这个这这个没报错。那没报错,没报错呢,那我但是我现在这里边呢,没数据对吧,我现在这个东西我运行了,这东西我都提起来了,对吧,那我这块呢没数据,那你想一想,那你是不是得会调啊,为什么没数据啊,对吧?那么如果调的话,那怎么办呢?那你首先你是不是得先看一看对吧?我现在如果说啊,没有按这个次我单独把这数据发送给某一台机器的话,它是不是可以帮助我把这数据我拿到,如果说可以过去的话,那说明什么?说明你这个程序写的没问题。
10:06
对吧,那没问题的话,你是不是才能往203和204分发呀,如果说你的程序写的有问题的话,你再发送203204的话,那肯定是有问题的呀,对吧?诶所以说呢,大家一定要会调试这块啊,一定会调试这块好了,然后接下来呢,我们把N这个这环境啊给搭建好之后,比如说数据采集这块完成之后,那么我们接下来呢,就给大家介绍一个需求,我们先介绍什么呢?先介绍是我们这个日活啊,我们现在要做的是我们的日活,对吧?那么如果要做日活的话,那么他大概的一个需求什么样呢?就是今天啊,那每一个小时对吧,那么首次访问我们的系统,它的一个用户量,对吧?那么大概有多少,是什么样的,我们做一个展示对吧?那最终想要的效果呢,是这样的,那么如果想实现这个功能,对吧?如果想实现这个功能,那么具体它的一个实现步骤是什么样的,对吧?那我们说了现在数据呢,已经到我们这卡不卡了,卡卡现在有两个主题对吧?那么都是放日志的,一个是放启动日志,那么另外一个呢是放事件日志,对吧?那如果要是做日活。
11:06
记的话和咱们事件呢,现在没有关系,对吧?哎,和咱事件是没关系,主要呢是启动日志,那也就是说我现在呢,要从启动日志里边,对吧来读数据对吧?启动日志来读数据,但是呢,这和我离线不一样,启动日志的这个数据啊,它是源源不断的还会再往里来的,对,就是我现在假如说你现在执行的程据对吧,那我这个东西我是不是这个数据,我现在用户还在访问咱们系统啊,对吧,他还在不停的产生新的日志,所以这数据呢,是源源不断的过来了,对吧?那需要我对它做一个实时处理,那么如果实时处理的话,那么这块我们使用什么呢?我们使用SPA streaming对吧?来对我当前数据呢,来进行一个实时的处理啊,通过timing来对应这数据来进行一个实时的处理啊,那么处理完之后呢,注意看同学们,咱们把这数据可以通过SPA timing对吧,来读到它,那么怎么读卡法数据还有印象吗?同学们。想一想,我现在有SPA致命了,你怎么样从卡卡里头出去啊?
12:06
Spaing的,那从卡夫卡主题里边的读数据怎么读?怎么读?Spark stream,它把它数据封装成了一个抽象的概念,这的概念叫什么?叫咱们这个离散化流是不是叫stream啊,对吧?那如果要从卡卡里读出去这个stream吗?呃,Stream不是stream,那stream这个对象怎么来创建?有印象吗?是拗出来的吗?是你一个卡普卡迪推是这么是这么创建出来的吗?通过谁有一个工具类是吧?啊叫卡卡YouTube对吧,它里面呢,有一个叫什么create对吧,什么tra吧,Direct stream对吧,他来帮咱们把这个东西啊给创建出来对吧?那么你拿到咱们现在啊某一个采集周期的数据,比如说诶,我现在每三秒一个采集周期,每三秒一个采集周期,每三秒个采集周期,对吧?那么咱们现在在当前的采集周期里边,是不是有可能一个用户对他呢,登录多次。
13:11
啊,有可能我现在呢,可能获取多个数据,对吧,然后一个用户呢,也可能多了多次对吧,那么这个时候呢,那我怎么知道他现在登录呢,就是首次登录的,那么我们上午分析了,那我要把咱们当前用户啊登录的状态给保存起来,给记录起来,那往哪记录呢?那第一种方式,你可以通过一些可以记录状态的算子,比如说update。By key对吧?那么来记录,但是这个算子呢,第一个操作麻烦,那么第二个呢,那么咱们现在如果要是通过这个算子来记录的话,它是把它状态保存到我们这checkpoint中对吧?那么有一些小文件的问题对吧?所以说咱们把pass掉了,那么第二种方式呢,我们把这状态记录到关一些数据库里边,My circle对吧?但是呢,那么如果说你数据量比较大的话,对咱们买circle的压力会比较大呀,所以说我们考虑把它呢计入到我们这个red里边来。
14:02
啊,把它记录到red中对吧?然后接下来,那么你现在呢,那把如果说我记录到red中去的话,那第一次比如说张三对吧,那么他在什么时间登录了,那么一开始red没有,那咱们可以往里边呢去记录一下啊一开始没有,那么咱现在呢,可以往里记录一下,那么接下来,那么当我现在呢,那么再去,那当我现在张三他再登录的话,那么首先呢,是不是要从软底来查呀,看一下有没有对吧?那么我现在呢?诶,那如果说有的话,那我现在是不是其实不需要记录了呀,对吧?那么通过这个呢,我可以判断一下啊,通过这个我可以看判断一下是不是首次登录对吧?那么如果是首次登录的话,那么这个时候我才会需要把这条记录对吧,给我拿到来进行统计,如果不是的话,咱们其实呢,直接把它给过滤掉。啊,直接过滤掉了,这相当于做了一次数据清洗啊,相当于做一次数据清洗,那么如果数据清洗完毕之后,你的数据量比较小啊,那这个时候呢,咱们可以直接把咱们清洗之后的数据保存到类似于我们my circle呀,或者说对我们red里边来进行操作,但如果说你清洗完毕之后,这个数据呢,还是比较大,那么这个时候呢,咱们应该再去选择我们一些ola mapp对吧,来对它的做一些我的分析,那我们这里怎么做的呢?我们这里是把清洗完毕之后的用数据啊对这个日志给它放到哪呢?给放到了elect search里边对吧,然后通过K班的对吧,来进行展示啊,通过K班的进行展示,所以说那么整体咱们现在前面这一块对吧,那应该能把这个这个流程对吧,给它贯穿起来对吧?那但是呢,如果你想把整个项目实现的话,这个al elect测试咱们以前是不是没接触过呀,对吧?所以说呢,在做咱们这个日活需求之前,那我们需要先把这个X search对吧,给大家看一下啊,先把这个呢给学一下,那么对于我们现在这个日活的需。
15:48
什呢,先给大家介绍了对吧,然后呢,咱们先有个印象啊,先有印象,然后慢慢的下次咱们再去什么的时候,对吧,再去介绍我们这个日活的时候啊,印象呢,应该是加深啊,应该加深好了,稍微停一下。
我来说两句