读数据工程之道:设计和构建健壮的数据系统13无服务器

1.       无服务器

1.1.         云供应商的一个大趋势是无服务器,允许开发人员和数据工程师无须在后台管理服务器即可运行应用程序

  • 1.1.1.           无服务器快速将价值投入到其正确的用例

1.2.         无服务器真正开始流行是在2014年AWS Lambda全面投入使用之后

  • 1.2.1.           由于无须管理服务器,只需在无服务器的基础上执行小型所需的代码块,无服务器人气迅速提升

  • 1.2.2.           它受欢迎的主要原因是低成本和便利性

1.3.         无服务器有很多种

  • 1.3.1.           功能即服务(Function as a Service,FaaS)广受欢迎,并早于AWS Lambda的出现

  • 1.3.2.           Google Cloud的BigQuery是无服务器的,因为数据工程师无须管理后端基础设施结构,系统自动扩展以处理从小到大的查询

1.4.         你支付的金额取决于查询消耗的数据量和少量存储数据的成本

  • 1.4.1.           其为消费和存储付费的模式正变得越来越普遍

1.5.         无服务器也有固有的开销低效的问题

  • 1.5.1.           以高事件率处理每个函数调用一个事件会带来灾难性的成本,而更简单的方法(如多线程或多进程)是很好的选择

1.6.         监控确定真实环境中每个事件的成本和无服务器执行的最长时间,并对每个事件的成本建模以确定随着事件速率的增长的总体成本

  • 1.6.1.           建模还应该包括最坏的情况

1.7.         当无服务器的使用和成本已经超过自己维护一个服务器的成本时,选择无服务器就意义不大了

  • 1.7.1.           在一定规模上,无服务器的经济利益可能会减少,并且搭建服务器变得更有吸引力

  • 1.7.2.           定制化、强大功能和易于控制是青睐于服务器的其他主要原因

1.8.         服务器故障将发生

  • 1.8.1.           避免使用“特殊雪花”服务器,它们是高度定制化且脆弱的,这会在你的架构中引入一个明显的薄弱环节

  • 1.8.2.           如果你的应用程序需要在服务器上安装特定代码,请使用启动脚本或者构建镜像,然后使用CI/CD管道将代码部署到服务器

1.9.         使用集群和自动扩展

  • 1.9.1.           利用云能够根据需求的增长和缩减来计算资源的能力

1.10.     将你的基础设施当作代码

  • 1.10.1.      自动化不仅仅适用于服务器,还应该尽可能扩展到你的基础设施中

1.11.     使用容器

  • 1.11.1.      对于更复杂或更繁重的多依赖性工作,考虑在单个服务器上或Kubernetes上使用容器

1.12.     无服务器是否适合你

  • 1.12.1.      工作负载大小和复杂性

    • 1.12.1.1.        无服务器最适合简单、离散的任务和工作负载

    • 1.12.1.2.        如果你有许多活动部件或需要大量计算、内存则不太合适

  • 1.12.2.      执行频率和持续时间

  • 1.12.3.      请求和网络

    • 1.12.3.1.        无服务器平台通常使用某种简化的网络,而不是支持所有云虚拟网络功能
  • 1.12.4.      语言

    • 1.12.4.1.        如果它不是官方无服务器平台支持的语言之一,那么你反而应该考虑容器
  • 1.12.5.      运行时限制

    • 1.12.5.1.        无服务器平台不会为你提供完整的操作系统抽象

    • 1.12.5.2.        相反,你会受限于特定的运行时

  • 1.12.6.      成本

    • 1.12.6.1.        无服务器功能非常方便,但可能很昂贵
  • 1.12.7.      抽象往往更加好

1.13.     建议首先考虑使用无服务器,然后是服务器(如果可能配合容器和编排)​,如果规模较大成本较高,使用服务器

2.       容器

2.1.         将无服务器和微服务相结合,容器是最强的操作技术发展趋势之一

  • 2.1.1.           容器能在无服务器和微服务中都发挥作用

2.2.         容器通常被称为轻量级虚拟机

  • 2.2.1.           传统的VM包括了整个操作系统,而容器只包括了一个孤立的用户空间(例如文件系统和一些进程)​,许多这样的容器可以共同存在于单个主机操作系统上

    • 2.2.1.1.            和完整VM相比,容器集群不提供同样的安全性和隔离性

      2.2.1.1.1.             虽然Amazon EC2是一个真正的多租户的环境,许多客户的虚拟机托管在同一环境硬件中,但Kubernetes集群应该只存放在一个相互信任的环境中

    • 2.2.1.2.            容器逃逸

      2.2.1.2.1.             从广义上解释,指一类利用容器中的代码获得外部操作系统级别权限的漏洞

      2.2.1.2.2.             是很常见的一种多租户的风险

    • 2.2.1.3.            代码审查流程和漏洞扫描对于确保开发人员不引入安全漏洞也至关重要

  • 2.2.2.           这样做的主要好处是虚拟化(即依赖和代码隔离)​,无须支付整个操作系统内核的开销

2.3.         单个硬件节点可以承载多个具有细粒度资源的容器

2.4.         容器上运行的就是一种无服务器环境

  • 2.4.1.           Kubernetes也是一种无服务器环境,因为它允许开发人员和运营团队部署微服务并且无须担心部署的细节

2.5.         容器为分布式单体问题提供了部分解决方案

2.6.         各种类型的容器平台为无服务器增加了新的功能

  • 2.6.1.           功能容器化的平台由事件来触发容器而不是一直运行着容器

2.7.         抽象将继续在数据技术栈中发挥作用

3.       基准战争

3.1.         要么比较针对完全不同用例进行优化的数据库,要么使用与现实世界需求毫无相似之处的测试场景

3.2.         数据领域充满了无意义的基准

3.3.         20世纪90年代的大数据

  • 3.3.1.           声称支持PB级“大数据”的产品通常会使用足够小的基准数据集,可以轻松放入智能手机的存储空间中

3.4.         无意义的成本比较

3.5.         非对称优化

  • 3.5.1.           非对称优化的欺骗以多种形式出现

  • 3.5.2.           标准化数据模型对于基于行的系统是最佳的,但列式系统在其他的框架下才能展示出全部潜力

  • 3.5.3.           供应商通过额外的连接优化来增强它们的系统,而没有在竞争数据库中应用相匹配的调优

3.6.         买者自负

  • 3.6.1.           与数据技术中的所有事物一样,买家要当心

  • 3.6.2.           要先做功课去了解,以避免盲目依赖供应商基准来评估和选择技术

4.       底层设计及其对技术选择的影响

4.1.         无论你选择何种技术,一定要了解它如何支持数据工程生命周期里的底层设计

4.2.         数据管理是一个广泛的领域,就技术而言,一项技术是否将数据管理作为主要关注点并不总是很明显

  • 4.2.1.           合规性、安全性、隐私、数据质量和治理

  • 4.2.2.           你如何保护数据免受来自外部和内部的破坏?

  • 4.2.3.           你的产品是否符合GDPR、CCPA和其他数据隐私法规?

  • 4.2.4.           你是否允许我托管我的数据以遵守这些规定?

  • 4.2.5.           你如何确保数据质量以及我在你的解决方案中查看的数据是否正确?

4.3.         DataOps

  • 4.3.1.           问题总是会出现

    • 4.3.1.1.            服务器或数据库可能会死亡,云的区域可能会中断,你可能会部署错误代码,这可能将错误数据引入你的数据仓库,也可能会出现其他无法预料的问题

4.4.         数据架构

  • 4.4.1.           良好的数据架构意味着评估权衡和选择最适合工作的工具,同时保持你的决定的可逆性

  • 4.4.2.           数据格局以极快的速度变化着,现在最佳工具是一个移动目标

  • 4.4.3.           主要目标是避免不必要的锁定,确保不同技术栈的互操作性,并产生高投资回报率

4.5.         Airflow

  • 4.5.1.           编排领域目前由一种开源技术Apache Airflow主导

4.6.         软件工程

  • 4.6.1.           应该努力简化和抽象整个数据技术栈

  • 4.6.2.           对金融科技平台提供支持的特定的算法

  • 4.6.3.           通过抽象出大量冗余的工作流和过程,你可以继续削减、改进和定制那些推动业务发展的东西

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ —— 类和对象

目录 介绍类和对象 一. 类和对象——类的定义 1.访问限定符 2.类域 作用操作符:: 3.对象大小 类的实例化 内存对齐规则 4.this指针 this指针会出现的问题 5.C语言结构体与C类对比 封装的本质 C类的优点 二 .类和对象——关于成员 1.类的默认成员函数 I.构造函数 构…

SpringBoot+Vue+Uniapp智能社区服务小程序系统(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

三菱FX3U-4AD模块怎样读出模拟量数据的?

关于使用FX3U-4AD读出模拟量数据时,所需的最低限度的程序,就此进行说明。读出模拟量数据的步骤如下所示: 1、确认单元号 从左侧的特殊功能单元/模块开始,依次分配单元号0~7。连接在FX3UC-32MT-LT(-2)可编程控制器上时&#xff0c…

ubuntu24.0离线安装Ollama和纯cpu版本以及对接Spring AI

文章目录 一.官网下载 0.3.13版本二.将文件包上传至ubuntu服务器三.下载安装脚本四.剔除GPU相关下载ROCM等,纯CPU运行脚本五.ollama常用命令六. 远程测试 七.对接spring AI 一.官网下载 0.3.13版本 ollama离线安装包下载地址 二.将文件包上传至ubuntu服务器 三.下…

电感电容谐振原理及Matlab仿真

一、电感电容谐振原理概述 电感电容谐振(LC谐振)是一种电路现象,它发生在电感器(L)和电容器(C)通过适当的方式连接时,电路中电流和电压之间形成共振。在这种共振状态下,…

计算机组成原理与系统结构——外部存储器

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 磁盘 磁盘是一个由非磁性材料构成的圆形盘片(称为基片),上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的&#xff0…

基于SpringBoot+Vue+Uniapp汽车保养系统小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而…

linux下使用VSCODE 调试python

文章目录 一、环境准备安装VS Code:安装Python: 二、环境测试创建Python文件:编写测试代码运行 Linux下使用VS Code调试Python 在Linux环境中进行Python开发时,一个高效、直观的调试工具是必不可少的。Visual Studio Code&#xf…

2024.10月18日- Vue2组件开发(3)

Vue组件开发 一、 ref属性 如果在vue里,想要获取DOM对象,并且不想使用JS的原生语法,那么就可以使用ref属性。ref属性的用法: 1)在HTML元素的开始标记中,或者在Vue子组件中的开始标记中定义,相…

第 5 章:vuex

1. 理解 vuex vuex 是什么: 概念:专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对 vue 应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式&am…

ant design vue TimePicker时间选择器不点击确认也可以设置值

文章目录 前言一、背景二、操作步骤1.复现前的准备工作(1)vue版本和ant design vue 版本(2)任意ant design vue TimePicker的demo 2.解决问题(1)使用change时间(无效)(2&…

DEV C++自动补全文件头的设置操作

第一步&#xff1a;打开DEV C 第二步&#xff1a;打开“工具” 第三步&#xff1a;点击“编辑器属性” 第四步&#xff1a;点击“代码” 第五步&#xff1a;点击“缺省源” 第六步&#xff1a;输入常用的文件头代码&#xff1a; 例如&#xff1a; #include<bits/stdc.h&g…

数据结构(JAVA)包装类泛型

文章目录 包装类基本数据类型和对应的包装类装箱和拆箱面试题 泛型什么是泛型泛型的语法泛型类的使用泛型的使用裸类型(Raw Type) &#xff08;仅需了解&#xff09;擦除机制泛型的上界泛型方法 包装类 基本数据类型和对应的包装类 注意&#xff0c;除了int基本数据类型的包装…

OracleT5-2 Solaris11安装

1、Solaris11安装 在光驱中插入Solaris11的光盘后,在ok提示中boot cdrom {0} ok boot cdrom NOTICE: Entering OpenBoot. NOTICE: Fetching Guest MD from HV. NOTICE: Starting additional cpus. NOTICE: Initializing LDC services. NOTICE: Probing PCI devices. N…

玄机平台-应急响应-webshell查杀

首先xshell连接 然后进入/var/www/html目录中&#xff0c;将文件变成压缩包 cd /var/www/html tar -czvf web.tar.gz ./* 开启一个http.server服务&#xff0c;将文件下载到本地 python3 -m http.server 放在D盾中检测 基本可以确认木马文件就是这四个 /var/www/html/shell.p…

初识MySQL · 数据库

目录 前言&#xff1a; 数据库 简单使用 存储引擎 前言&#xff1a; 本文也是MySQL的第一篇文章了&#xff0c;新的知识点已经出现&#xff0c;怎么能够停止不前&#xff0c;穿越时空……(迪迦奥特曼乱入哈哈哈)。 言归正传&#xff0c;我们在本文的目标有&#xff1a; …

Flink CDC同步mysql数据到doris

前置参考 flink快速安装&#xff1a;Flink入门-CSDN博客 doris快速安装&#xff1a;Apache Doris快速安装-CSDN博客 Flink CDC简介 Flink CDC 是一个基于流的数据集成工具&#xff0c;旨在为用户提供一套功能更加全面的编程接口&#xff08;API&#xff09;。 该工具使得用户能…

洞察云上风险,主机安全尽在掌握

在实战攻防演练中&#xff0c;主机一直是攻击方的最终目标。作为网络架构中的重要组成部分&#xff0c;主机包含了大量的敏感数据、关键服务和系统资源。同时主机拥有网络资源的访问权限&#xff0c;攻击者通过入侵主机获得权限&#xff0c;进而控制整个网络或系统。因此做好主…

vue2 Canvas 多边形区域绘制组件封装

效果预览&#xff1a; CanvasBox组件 <!-- 区域设置canvas --> <template><div class"all" ref"divideBox"><!-- <div><button click"test">清空</button></div> --><img id"img"…

Ubuntu中MySQL远程登录设置

mysql单独放在一台Ubuntu服务器上&#xff0c;我远程连接不上。可能是安装的时候忘记设置远程登录了。事后补救措施如下&#xff1a; MySQL 绑定地址配置问题 MySQL 可能只绑定了 localhost&#xff0c;无法接受来自外部主机的连接。你需要检查 MySQL 的配置文件 /etc/mysql/…