日志是什么?如何在数据集成、实时处理和系统构建中使用日志?
2021-01-04 14:11:59 阅读(171) 评论(0)
JayKreps是Linkedin的首席工程师。他说,日志几乎存在于计算机生成时,除了分布式计算或抽象分布式计算模型外,还有广泛的用途。他讲述了日志的原理,以及数据集成、实时数据处理和分布式系统设计,通过使用日志作为单独的服务。文章内容很干,值得学习。以下是原文:我在六年前的一个激动人心的时刻加入了Linkedin公司。从那时起,我们就解决了单一集中数据库的限制,并开始了特殊分布式系统套件的转换。这是一件令人兴奋的事情:我们构建和部署分布式图形数据库、分布式搜索后端、Hadoop安装、第一代和第二代键值数据存储,直到今天仍在运行。我们从这一切中意识到的最有益的事情是,我们构建的许多东西的核心都包含了一个简单的概念:日志。有时也被称为提前写入日志或提交日志或事务日志,它几乎存在于计算机生成时,也是许多分布式数据系统和实时应用结构的核心。不懂日志,就不能完全懂数据库,NoSQL存储,键存储,复制,paxos,Hadoop,版本控制和几乎所有的软件系统;然而,大多数软件工程师对它们并不熟悉。我愿意改变这种情况。在这篇博客文章中,我将带你浏览你必须知道的所有日志,包括什么是日志,如何在数据集成、实时处理和系统构建中使用日志。第一部分:什么是日志?日志是一种简单的抽象存储,不能再简单了。它是一系列只能添加的记录,完全按时间排序。日志看起来如下:我们可以在日志的末尾添加记录,并从左到右阅读日志记录。每个记录都指定了具有一定顺序的唯一日志记录编号。日志记录的排名是由“时间”决定的,因为左边的日志记录比右边的日志记录早。日志记录编号可以看作是这个日志记录的“时间戳”。一开始,按时间排序有点多余。然而,与任何特定的物理时钟相比,时间属性是一个非常容易使用的属性。当我们运行多个分布式系统时,这个属性非常重要。日志记录的内容和格式对本次讨论的目标并不重要。另外,在存储空间完全耗尽的情况下,我们不能再给日志添加记录了。我们稍后会提到这个问题。日志与文件或数据表并不完全不同。文件由一系列字节组成,表由一系列记录组成,而日志实际上只是按时间顺序存储记录的数据表或文件。在这个时候,你可能会想,为什么要讨论这么简单的事情?一个只能在不同环境中添加一定顺序的日志记录是如何与数据系统相关联的?答案是日志有其特定的应用目标:它记录了什么时候发生了什么。在分布式数据系统的许多方面,这才是问题的真正核心。然而,在我们进行更深入的讨论之前,让我澄清一些令人困惑的概念。每个编程人员都熟悉另一个日志记录——使用syslog或log4j可能写入本地文件的非结构错误信息或跟踪信息。为了区分,我们称这种情况的日志记录为“应用日志记录”。应用日志记录是我在这里所说的日志的低级变种。最大的区别是,文本日志主要是为了方便人们阅读,而我所说的“日志”或“数据日志”的建立是为了方便程序访问。(事实上,如果你深入思考,人们在机器上阅读日志的想法有些不符合时代潮流。当涉及到许多服务和服务器时,这种方法很快就成为一种难以管理的方式,为了了解多台机器的行为,日志的目标很快就成为查询和图形这些行为的输入——对于多台机器的某些行为,文件中的英文文本几乎不适合这里描述的结构化日志。)我不知道日志的概念起源于哪里——也许它就像一个二进制搜索:发明者认为它太简单了,不能作为一项发明。它早在IBM系统R出现时就出现了。数据库中的用法是在崩溃时同步各种数据结构和索引。为了保证操作的原子性和持久性,数据库在更改数据库维护的所有数据结构之前,将即将修改的信息转录到日志中。日志记录了发生了什么,每个表或索引都是一些数据结构或索引的历史映射。由于日志是即时永久性的,它可以被用作可靠的数据源,以恢复所有其他永久性结构。随着时间的推移,日志的使用从ACID细节发展到数据库之间复制数据的一种方法。使用日志的结果是,发生在数据库上的变更顺序需要与远端复制数据库上的变更顺序完全同步。Oracle,MySQL和PostgreSQL都包括日志传输协议,用于复制备用数据库传输日志。Oracle还将日志产品转化为一种通用的数据订阅机制,使非Oracle数据订阅用户可以使用XStreams和GoldenGate订阅数据,MySQL和PostgreSQL上的类似实现成为许多数据结构的关键组成部分。正是因为这个起源,机器识别日志的概念大多局限于数据库。日志作为数据订阅的机制似乎是偶然的,但将这种抽象用于支持所有类型的信息传输、数据流和实时数据处理是不现实的。分布式系统日志解决了两个问题:改变动作排名和数据分发,这在分布式数据系统中尤为重要。分布式系统设计的核心问题之一是协商一致的改变动作顺序(或保持每个子系统本身的做法,但可以复制副作用的数据)。以日志为中心的分布式系统受到简单经验知识的启发。我称这种经验知识为状态机复制原理:如果两个相同的、确定性的过程从相同的状态开始,并以相同的顺序获得相同的输入,那么这两个过程将产生相同的输出,并在相同的状态下结束。这可能有点难以理解,让我们更深入地讨论和理解它的真正含义。确定性意味着处理过程与时间无关,任何其他“外部”输入都不会影响处理结果。例如,如果一个程序的输出受到线程执行的具体顺序、获取等非重复性事件的调用或其他非重复性事件的影响,那么这些程序通常最有可能被视为不确定性。过程状态是过程中保存在机器上的任何数据。在过程处理结束时,这些数据要么保存在内存中,要么保存在磁盘上。以相同的顺序获得相同输入的地方应引起注意——这是引入日志的地方。这里有一个重要的常识:如果输入两个具有相同确定性代码的日志,它们将产生相同的输出。分布式计算的应用尤为明显。您可以将使用多台机器一起执行同一事项的问题减少为为这些过程输入实现分布式一致性日志的问题。这里日志的目的是将所有不确定的东西排除在输入流之外,以确保每个复制过程都能同步处理输入。当你理解这一点时,状态机的复制原理就不再复杂或深奥:这或多或少意味着“确定性处理过程是确定性”。无论如何,我认为它是分布式系统设计中常用的工具之一。这种方法的一个美妙之处在于,索引日志的时间戳就像时钟状态的副本——你可以用一个单独的数字来描述每个副本,这是处理日志的时间戳。时间戳与日志对应整个副本的状态。由于写入日志的内容不同,在系统中应用这一原则的方法也有很多。例如,我们记录一个服务请求,或者服务从请求到响应状态的变化,或者它执行命令的变化。理论上,我们甚至可以为每个副本记录一系列要执行的机器指令或调用的方法名和参数。只要两个过程以相同的方式处理这些输入,副本就会保持一致。一千个人眼中有一千种日志用法。数据库工作者通常区分物理日志和逻辑日志。物理日志是记录每行变化的内容。逻辑日志记录的不是改变行,而是导致行内容改变的SQL句子(insert,update和delete语句)。分布式系统通常可以分为两种方法来处理数据和完成响应。“状态机器模型”通常引用一个主动-主动模型,即我们记录请求和响应的对象。对此进行细微的更改,称为“预备份模型”,即选择副本作为领导,并允许其按要求到达的时间进行处理,并输出记录处理过程中状态变化的日志。其他副本按照leader状态变化的顺序应用这些变化,以便在leader失败时实现同步并取代leader的工作。为了理解这两种方法的区别,我们来看一个不太严格的例子。假设有一个算法服务副本,保持一个独立的数字作为其状态(初始值为0),并对该值进行加法和乘法。主动-主动方式应输出所进行的变换,如“ “*2”等。这些变换将应用于每个副本,以获得相同的解集。主动-被动模式将有一个独立的主体来执行这些变化并输出结果日志,如“1”、“3”、“6”等。这个例子也清楚地显示了为什么顺序是确保副本之间一致性的关键:加法和乘法顺序的变化会导致不同的结果。分布式日志可理解为一致性问题模型的数据结构。因为日志代表了一系列后续追加值的决定。尽管日志模块是他们最常见的应用程序,但您需要重新审视Paxos算法簇。在Paxos算法中,它通常使用称为多paxos的协议,将日志建模成一系列问题,每个问题都有相应的部分。日志在ZAB、RAFT等其他协议中的作用尤为突出,它直接建模了维护分布式和一致性日志的问题。我怀疑的是,我们对历史发展的看法存在偏差,可能是因为分布式计算的理论在过去几十年中远远超过了它的实际应用。现实中,共识问题有点太简单了。计算机系统很少需要决定单个值,它们几乎总是按顺序处理请求。这种记录自然更抽象,而不是简单的单值寄存器。此外,专注于算法掩盖了抽象系统所需的底层日志。我怀疑我们最终会更加*日志作为商业基石,无论它是否以同样的方式实施,我们经常谈论一个哈希表,而不是纠结于我们是否得到一个特定的细节,如线性或其他变体哈希表。日志将成为一个流行的界面,为大多数算法和实现提升提供最好的保证和性能。变更日志101:表与事件的二相性。让我们继续谈论数据库。日志和表之间的二相性在数据库中有很多变化。这类日志与贷款清单和银行流程有些相似,数据库表是当前的盈余表。如果您有大量的变更日志,您可以使用这些变更来创建一个捕获当前状态的表。本表将记录每个关键点(日志中的特殊时间点)的状态信息。这就是为什么日志是一个非常基本的数据结构:日志可以用来创建基本表或各种衍生表。与此同时,它意味着可以存储非关系对象。这个过程也是可逆的:如果您正在更新一个表,您可以记录这些变化,并将所有更新的日志发布到表的状态信息中。这些变更日志是您需要的准实时克隆支持。基于此,您可以清楚地理解表与事件的二相性:表支持静态数据和日志捕获变化。日志的魅力在于它是变化的完整记录,它不仅捕捉到了表的最终版本,还记录了其他版本的信息。本质上,日志是表历史状态的一系列备份。这可能会导致你管理源代码的版本。源代码管理与数据库密切相关。版本管理解决了一个非常熟悉的问题,即什么是分布式数据系统需要解决的分布式管理。补丁的发布通常是基于版本管理系统,这实际上可能是一个日志。您可以直接与当前类似于表中的代码进行“快照”交互。你会注意到,与其他分布式状态系统类似,版本控制系统会在您更新时复制日志,您只想更新补丁并将其应用到您当前的快照中。最近,一些人从Datomic开始–一家销售日志数据库的公司得到了一些想法。这些想法使他们对如何在他们的系统中应用这些想法有了广泛的理解。当然,这些想法不仅仅是针对这个系统,它们将成为十多年来分布式系统和数据库文献的一部分。这似乎有点太理想化了。但不要悲观!我们很快就会实现它。请先解释一下“数据集成”是什么意思,为什么我觉得很重要,然后再来看看和日志有什么关系。数据集成是组织数据,以便在相关服务和系统中访问数据。“数据集成”(dataintegration)这个短语应该不仅仅是那么简单,但我找不到更好的解释。更常见的术语ETL通常只覆盖数据集成的有限子集(译注:ETL,Extraction-Transformation-与关于Loading的缩写相比,即数据提取、转换和加载)-
推荐阅读
- 免费域名注册平台有哪些呢?免费域名有什么优势呢?
现在的人们已经进入到了网络快速发展的时代了,可以说大家的生活已经离不开网络,而通过网站的建设,自然也能够带来各种各样的好处,比如说品牌的推广,还有提升公司的形象等等,而且要让网站的发展更好,一个好的域名是不能缺少的,那么免费域名…查看详情
- 打造直播电商之都,广州代运营市场需求或将上升?
代运营主要是为传统企业升级线上渠道提供运营推广服务,运营范围涉及到构建、营销、推广、物流、客服、客户等全套供应链。专业的代运营企业具备营销、产品、客服等全方位的知识体系,能够帮助企业有效提升运营销售业绩。在杭州提出打造“直播电商第一城”之后…查看详情
- 用户产品运营:怎么样让用户购买我们的产品?
每一次成功的转化其实就是满足客户需求的一个过程,客户需求得到了满足,自然就会产生购买行为。这些需求都是由解决一个个问题而产生的,今天我们就来看看怎么做好用户产品运营,让用户心甘情愿的购买我们的产品。 图片来自网络1.让自己成为“产品专家”时…查看详情
- 良心测评,适合学生党的网购软件
学生党平常在日常生活中开销非常多,其中就有网购,那么哪些软件比较适合学生党呢?今天我就给大家盘点七款适合学生党网购的软件,这几款软件都是非常非常适合学生党的。1.豆苗联盟省钱购物软件豆苗联盟省钱购物软件是一个省钱购物软件,这个平台提供了许多…查看详情
- 陷经营管理困境,中小企业是时候借力SaaS
SaaS是当下最流行的中小企业信息化应用服务模式,专治企业经营管理在互联网时代凸显出来的各种弊病,以及优化企业经营管理模式,使企业始终保持良好健康发展。 中小企业正处在市场发展的上升期,经营管理尤为关键,一旦出现纰漏,很可能造成致命危机。同…查看详情
- 手机文件管理软件哪个好,手机文件管理软件推荐
很多人在平时的时候特别喜欢在手机上保存一些文件,但是如果文件比较乱或者是种类比较多,就需要用到文件管理软件,这样才会让手机变成跟电脑一样整理文件,相对来说也是非常方便的,能够将所有的文件区分开带来很大的帮助,在查看文件的时候也能…查看详情
- 这四款薪酬管理软件收获各大hr的好评不断,你确定不了解一下
每一家企业都需要对员工的薪酬进行统计计算,员工薪酬的主要构成部分包含了基础工资、绩效工资、额外奖励、差旅报销、经营分红等内容,企业在进行薪酬管理时,往往需要借助专业的薪酬管理软件来简化薪酬计算流程,实现奖惩有度、薪酬精确。那么,…查看详情
- 点菜系统软件哪个好?餐饮点菜都用什么系统软件
互联网时代信息化普及,五花八门的点餐系统层出不穷,其业务效果也越来越得到各餐饮行业的认可,针对不同性能来看,点菜系统软件哪个好?餐饮行业用的最多的点菜系统软件都是哪些? 1. 二维火点菜系统 二维火是比较老牌的一款点餐系统,集合多平台支付方…查看详情
- 哪个浏览器速度快 速度快的浏览器排行榜
浏览器作为必备的软件,相信每个人都花费了很多的精力去寻找,而且现在市面上浏览器很多的,但是有些浏览器速度真的很慢,下面*就给大家来详细介绍一下哪个浏览器速度快 速度快的浏览器排行榜这一块的相关内容,希望能帮助到大家。速度快的浏览器排行榜…查看详情
- 系统备份软件哪个好用 好用的系统备份软件
不管是计算机还是手机都是有系统的,如果你要重新更换一台计算机,首先要把里面的重要文件备份下来,这样更换了新的计算机之后,就可以保留原先的重要文件了,那么,系统备份软件有哪些? 1、Disksync 是一款备受大家钟爱的专业型…查看详情
- 如何根据功能和优势为企业选择合适的协同系统
谈到企业如何选择合适的协同系统,一款优质且成熟的协同系统拥有着卓越的性能和大并发特色功能,能完全贴随企业成长,避免后顾之忧,你知道如何根据产品的根据功能和优势去为企业选择一套合适的协同系统吗?OA系统的选择标准应该从流程设计、执行、管理、关…查看详情
- 8款剪辑视频的软件app,视频剪辑软件必看!
随着短视频的盛行,很多人开始用手机进行随时的短视频创作,无论是直播还是录制视频,或是你刚刚拍下的旅游或生活记录视频,在分享之前,或许你想很快地转换格式、压缩与编辑,那么这时候一个简单的视频剪辑工具就很重要了,以下8款剪辑视频的软件app,视…查看详情
- 百度贴吧打不开帖子怎么办?
为什么贴吧评论了点进去却看不到?1、发布的内容涉及到广告或者交易,被系统删除了 2、发布的内容没按照吧里的规定来发,被吧务删除了 3、发布的内容被帖子的楼主删除了 4、不排除帖子被误删,可以到贴吧右上角的服务中心里面申请恢复。 5系…查看详情
- 目前国内外主流的思维导图软件,好用又高效
思维导图软件在我们的工作中是一款极为常见又使用率很高的一款辅助软件,而在众多思维导图软件里面,如何选出又好有适合自己的软件呢,今天我便为大家分析几款目前国内外主流的思维导图软件,一起来看看吧。1、百度脑图百度脑图是一款国内的轻量化软件,操作…查看详情
- 著作权的取得并不需要进行登记,可自动获取!
在我国《著作权法》第一章第二条有明确规定,中国公民、法人或者其他组织的作品,不论是否发表,都依法享有著作权,所以著作权的取得并不需要通过著作权登记。著作权登记是作者的确权行为,取得的是具有法律效益的著作权登记证书。图片来源于网络著作权即版权…查看详情
猜你喜欢
最新文章

扫码二维码
立即领取《千元实战营销秘籍》
还可免费试用营销管理系统
*如有疑问,请随时拨打免费咨询热线:400-0033-166
邮箱:zjb@iwanshang.com
服务时间:8:30-18:00
软件企业
认定号:川RQ-2018-0216
高新技术企业
认定号:GR201951001121

关注微信公众号
和10万中小企业共同成长

扫码下载APP
享全方位服务一触即达
Copyright © 2004-2022 万商云集(成都)科技股份有限公司 版权所有
蜀ICP备12001963号-2
川公网安备 51010402000322号

快速找产品

找一找哪款产品适合您?
咨询热线:400-0033-166
-


-
电话沟通
获取方案
下载APP
官方微信
扫码下载APP
全方位服务一触即达

关注万商云集
和10万中小企共成长

TOP

企业首选的AI增效平台

400-0033-166
8:30-18:00















































注册有好礼



