8.20面试小结

Flink介绍一下

flink是分布式的处理引擎,用于处理批数据或者流数据,批数据是有界的,流数据是*的,分别对应批处理和流处理

Flink整个的架构由三个组成:Client,JobManager,TaskManager

Client对Flink任务进行预处理,并将任务提交到Flink集群中

JobManager对整个集群进行管理,并负责资源的分配

TaskManager是对具体的任务进行管理,它会从集群中拿取资源让具体的任务执行

TaskManager中有具体的TaskSlot,负责任务的执行。

任务的执行也分为3步:

Sources:源数据的获取

Transform:转换算子,map,reduce之类

DataSink:数据存储,定义数据存到哪个地方

Kafka介绍一下

Kafka是一个基于分布式的发布-订阅系统

解耦,削峰,异步通信

Producer:生产者

Kafka集群:里面有broker,broker里面有具体的partition,zookeeper进行管理

consumer:consumer组的概念,一个partition只能被一个consumer组的一个consumer消费

介绍一下医药实时过滤

用户在医药界面买药,浏览会产生实时的数据,算法的同学会根据这些数据计算用户的特征。

之前的操作是医药那边每天会生成一个数据表,然后算法同学直接调用就好了

从kafka读数据,flink数据过滤,存到tair

tair能存的数据量比redis多,适合读多写少的情况,单个节点redis性能比tair高1/5,并且tair在分布式的扩展方面比redis更有优势。

介绍一下RPC

远程的函数和进程ID会有一个映射关系,客户端会根据这个映射关系找到call ID,然后在网络层通过序列化的方式将call ID,函数名,函数的参数转换成二进制流,然后将这个流发送给服务器,服务器收到call ID,相关的参数后会执行服务器的函数,将函数的结果序列化之后通过网络的方式发送回来。

 

上一篇:从零开始实现简单 RPC 框架 4:注册中心


下一篇:用 “volatile 标记位的停止方法“ 不适合的场景