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,相关的参数后会执行服务器的函数,将函数的结果序列化之后通过网络的方式发送回来。