首页
学习
活动
专区
工具
TVP
发布

木鸟杂记

专栏作者
121
文章
68243
阅读量
27
订阅数
DDIA:流积分就是快照,快照微分就得到了流
我们在这里讨论的事件溯源(event souring)和领域驱动设计(domain-driven design,DDD)社区中的相关概念有些相似之处。由于这个概念会牵扯出流式系统中的一些重要的思想,因此我们这里简单讨论一下。
木鸟杂记
2024-04-23
580
DDIA:数据库导出就变成了流
我们已经对比了消息代理和数据库的诸多方面。在传统上,他们被认为是两个完全不同类别的系统,但在之前小节的分析我们看到,基于日志的消息系统中成功地从数据库中借鉴了许多经验。其实,我们也可以有另外一条路,从消息系统中借鉴一些思想,应用到数据库中。
木鸟杂记
2024-04-16
660
DDIA:日志和消息队列只有一线之隔
通过网络发送数据包或者给一个服务发送网络请求都是透明的操作,不会留下任何永久痕迹。尽管,我们可以将其永久地记下来(通过抓包工具或者日志工具),但通常不会这么做。即使消息代理会暂时地将消息写到外存中,但在其被消费后也通常会删除,这一切是因为,我们认为消息是一种暂态数据。
木鸟杂记
2024-04-10
850
写对代码的利器——“循环不变性”
初学者在构建复杂代码时,往往会吃不准——我这样写对吗?本文就从”不变性“(invariants)的角度,给大家一些增加信心的”打开方式“。
木鸟杂记
2024-03-22
650
DDIA:消息系统——生产者和消费者的游戏?
在第十章的时候,我们讨论了批处理——它总是读取一些文件作为输入,产生一些新文件作为输出。这里的输出就是一种“衍生数据”:即,如果有需要,我们可以通过再跑一遍批处理任务获取相同的结果集。从之前章节的讨论我们可以看出,这种思想简单却强大:像搜索引擎、推荐系统、分析系统等很多现代常见的数据系统都是基于这种思想构建的。
木鸟杂记
2024-03-22
850
想徒手写个文件系统?来一起呀
文件系统基本都是构建于块存储之上的。但当然,现在的一些分布式文件系统,如 JuiceFS[2],底层是基于对象存储的。但无论块存储还是对象存储,其本质都是按 “数据块” 进行寻址和数据交换的。
木鸟杂记
2024-03-05
940
现代操作系统最核心抽象之一 —— 文件
说到文件,用惯了图形化操作系统的我们,第一反应是:文件夹中的一个个图标。但现代操作系统鼻祖 —— Unix 最初设计“文件”时,对其定义远不止于此。即使在今天的 Linux、MacOS 、Windows 的应用开发者眼里,文件的范围也要更大的多。
木鸟杂记
2024-01-24
970
DDIA:数仓和大数据的双向奔赴
在 MapReduce 流行这些年之后,针对大数据集的分布式批处理执行引擎已经逐渐成熟。到现在(2017年)已经有比较成熟的基础设施可以在上千台机器上处理 PB 量级的数据。因此,针对这个量级的基本数据处理问题可以认为已经被解决,大家的注意力开始转到其他问题上:
木鸟杂记
2024-01-23
1120
DDIA:图计算和迭代处理
在图数据建模一节中我们讨论过使用图模型对数据进行建模、使用图查询语言对图中的点边属性进行查询。但第二章相关讨论主要集中在偏 OLTP 方向——对符合要求的小数据集的查询。
木鸟杂记
2024-01-17
820
Y Combinator 2024 年关注 20 个创业领域
虽然,我们投资过的最棒创业 idea,往往并不是一开始我们想找的,反而是那些无心插柳的。
木鸟杂记
2024-01-03
1780
DDIA:MapReduce 进化之数据流引擎
尽管 MapReduce 在本世纪10年代最后几年中被炒的非常热,但它其实只是众多分布式系统编程模型中的一种。在面对不同的数据量、数据结构和数据处理类型时,很多其他计算模型可能更为合适。
木鸟杂记
2024-01-02
1020
DDIA:批处理和 MPP 数据库千丝万缕
我们已经讨论了串起 MapReduce 工作流的一些算法,但我们忽略了一个重要的问题:当工作流结束后,处理结果是什么?我们一开始是为什么要跑这些任务来着?
木鸟杂记
2023-12-26
1390
分布式存储系统在大数据处理中扮演着怎样的角色?
传统上,无论是基于 MapReduce 的数据流,还是基于 Spark/Flink 的流水线,其数据的来源和最终落脚点都可以是分布式存储(比如 GFS、HDFS、S3)。
木鸟杂记
2023-12-19
1020
DDIA:批中典范 MapReduce
MapReduce 在某种程度上有点像 Unix 工具,但不同之处在于可以分散到上千台机器上并行执行。和 Unix 工具一样,MapReduce 虽然看起来简单粗暴,但组合起来却非常强大。一个 MapReduce 任务就像一个 Unix 进程:接受一到多个输入,产生一到多个输出。
木鸟杂记
2023-12-19
1720
DDIA:Unix 中蕴含的批处理哲学
在本书的前两部分,我们讨论了请求(requests)和查询(queries),与之相对的是响应(responses)和结果(results)。这种请求应答风格的数据处理是很多现代系统的基本设定:你向系统询问一些事情,或者你发送一个指令,系统稍后(大概率上)会给你一个回复。数据库、缓存、搜索引擎、 web 服务器和其他很多系统,都以类似的方式工作。
木鸟杂记
2023-12-13
1620
DDIA:共识协议和分布式事务有什么关系?
分布式事务,尤其是使用两阶段提交实现的分布式事务,毁誉参半。一方面,他们可以提供其他方式难以实现的安全保证;另一方面,由于运维复杂、降低性能、承诺过多,他们广受诟病。为了避免分布式事务带来的运维复杂度,很多云服务选择不支持分布式事务。
木鸟杂记
2023-12-04
1770
DDIA:一文带你了解“两阶段提交”
在分布式计算领域,共识问题是最重要而基础的问题。从表面上看含义很直接:可以粗略的理解为多个节点就某件事达成共识。乍看起来,你会觉得,这有什么难的?但不幸的是,很多系统都因为低估了共识算法的实现难度而问题百出。
木鸟杂记
2023-11-30
1740
DDIA:分布式系统最重要的事情——“顺序”和“因果”
该定义暗含着:所有操作会形成一个确定的执行顺序。在图 9-4 中,我们就根据读到的结果来推测出了一个服务器端所有操作的看起来的执行顺序。
木鸟杂记
2023-11-27
2890
用“隐喻”的方式带你建立对 Raft 的直觉
相比 Paxos,Raft 的一大特色就是算法拆成了相对正交的几个部分——领导者选举、日志同步、状态持久化、日志压缩和配置变更。你如果对课程照目录看下就能看出来,除却最后一部分,这些模块就是我们课程 PartA ~ PartD 要分别实现的内容。将算法正交化拆分的好处是,让每个模块相对内聚,使得整体更易理解和实现——这也是 Raft 算法设计的初衷。
木鸟杂记
2023-11-20
1590
构建和维护星球最强对象存储系统的一点微小经验
截至 2023 年,Amazon S3 自 2006 年上线以来,已经 17 岁了。在开始之前,我们首先看下Andy Warfield 给出的一组数据,来感受下星球最强的对象存储已经到了什么量级:
木鸟杂记
2023-11-14
1420
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档