架构即未来-读书笔记二

读<架构即未来>,记录个人收获

读书第二阶段应理论结合实际,从组织,过程、架构三个方面任选一到二个,结合行业和我司实践,试请剖析:

1、理论到实践中的差距在哪里?

2、如何对理论目标做平衡与取舍,如复杂性和有效性的取舍,质量和效率的取舍等。

3、AFK在架构设计中如何应用,试剖析Flink或者K8S架构

AKF立方体简述

架构即未来-读书笔记二
X轴 -水平扩展,服务资源的复制、系统负载的均分,提升稳定性,可用性的最常规做法。
Y轴 -领域功能拆分,每个领域独立部署,独立演化,研发效率提高,服务拆分粒度是个考验,避免走向极端,不拆分即单体应用,拆分过细则服务间交互复杂,稳定性弱,运维成本高,需要权衡做折中处理。
Z轴 - 数据分区,多数据中心,多集群联邦机制等都是Z轴扩展的体现方式。
一般来说,x,y轴扩展结合起来完成服务的稳定性,可用性建设,x,y轴正交,互不影响,z轴的扩展成本比较高。

Flink架构介绍

架构即未来-读书笔记二
Flink作为新兴起的计算框架,想要统一流、批计算场景,国内发展迅速,Flink把批计算看作是有界数据流的流计算来处理。

  • 从进程层面来说 Flink框架主要由JobManager,TaskManager两个进程组成。

  • JobManager 作为Flink框架的控制中心,由三个组件组成:

    • ResourceManager 资源管理器,管理 task slots,支持YARN, Mesos, Kubernetes and standalone deployments等计算环境。
    • Dispatcher 负责job提交,为每个job启动新的JobMaster,另外提供集群管理控制台UI查看集群运行情况。
    • JobMaster 一个job执行流程的总管家,不同job启动不同的JobMaster,支持不同的job类型,一个job也就是一个数据处理流程,相当于工作流模型中的process概念,不同job可以并行在Flink集群上执行,互不影响。
    • JobManager是计算任务调度控制中心,不能单点故障,官方介绍的HA配置方案是建立JobManager集群,采用zk选主节点,其他节点做stand by节点。
    • 总之,JobManager 服务作为独立进程,是AKF立方体扩展的Y轴扩展。X轴扩展是部署多个实例,避免单点故障,配合zk进行选主来实现高可用,是X,Y轴扩展性的结合。
  • TaskManager

    • worker节点,slot均分memory, 目前版本不分cpu资源。
    • worker节点负责具体task的执行,涉及资源的使用策略,不同场景有不同配置,同一个job/process的不同task可以共用同一个jvm,也可以资源隔离。
    • TaskManager 独立的执行节点,Flink集群至少有一个,可以水平扩展,X轴扩展即可
  • Flink Code
    Flink程序的客户端代码,产生Taskflow的处理逻辑定义,确定执行环境等,支持三种场景

    • Flink Session Cluster 长时间执行的,资源隔离性差,job周期和 session周期不一致。
    • Flink Job Cluster 生命周期和Job执行周期一致,job结束,job cluster进程退出。
    • Flink Application Cluster job提交由ApplicationClusterEntryPoint调用jar里的main方法启动,不需要client,隔离性好。
    • Flink Code 数据处理流程定义,面向开发者,应支持多语言,多执行场景如上三种,作用Flink集群的一个客户端,不需要考虑X,Y扩展性。

yarn架构浅析

k8s架构浅析