Netty 的主要构成组件

Channel

Channel 是 Java NIO 的一个基本构造。

它代表一个到实体(如一个硬件设备、一个文件、一个网络套接字或者一个能够执行一个或者多个不同的I/O操作的程序组件)的开放连接,如读操作和写操作

目前,可以把 Channel 看作是传入(入站)或者传出(出站)数据的载体。因此,它可以被打开或者被关闭,连接或者断开连接。

Read more »

阻塞式编程

这里给出一个 TCP 简单的使用阻塞式网络编程的案例,为后面的 NIO 做个介绍的基础。

Read more »

DBLog: A Watermark Based Change-Data-Capture Framework

摘要(ABSTRACT)

本文讨论了应用程序在使用多种异构数据库时所面临的数据同步挑战,并探讨了现有解决方案的局限性。通常,应用会利用不同的数据库以满足特定需求,例如存储基本数据或提供高级搜索功能。因此,保持多个数据库之间同步显得尤为重要。尽管之前有双写和分布式事务等解决方案,但这些方法在可行性、健壮性和维护性方面存在不足。

最近出现的一种替代方法是使用变更数据捕捉(CDC),从数据库的事务日志中捕捉更改的行,并以低延迟将其传递到下游。然而,数据同步不仅需要捕捉更改,还需要复制数据库的全量状态,因为事务日志通常不包含完整的更改历史。同时,还有需要高可用性事务日志事件的场景,以便数据库能够尽可能保持同步。

为了解决上述挑战,本文介绍了一种新颖的CDC框架,名为DBLog。DBLog采用水印(watermark)驱动的方法,允许通过直接从表中选择的行与事务日志事件进行交错,从而捕捉数据库的全量状态。该解决方案使得日志事件在处理选择操作时可以继续前进,而不会出现停滞。选择操作可以在任何时间对所有表、特定表或特定主键的表触发。DBLog以块的形式执行选择操作并跟踪进度,允许暂停和恢复。水印方法不使用锁,对源的影响最低。目前,DBLog已在Netflix的多个微服务中投入生产使用。

Read more »

本文着重描述了 SourceReaderBase 实现逻辑,但是在描述 SourceReader 之前,肯定是需要了解与之关系密切的 SplitEnumerator 的行为,由于 SplitEnumerator 仅提供了一个接口,我们要确定多数情况下的实现,SplitEnumerator 是如何与 SourceReader 进行交互的,毕竟 Source 的起点是在 JobManager 的 SplitEnumerator 之中。

Read more »

文章大纲

  • 介绍 DAG 是什么
  • 介绍 DAG 能解决什么问题,有哪些出名的系统是依赖 DAG 的
  • 介绍 DAG 的实现
  • 介绍 DAG 算法场景
Read more »

Abstract

Apache Flink是一个用于处理流数据和批量数据的开源系统。Flink建立在这样一种理念之上:许多类别的数据处理应用程序,包括实时分析、持续数据流、历史数据处理(批处理)和迭代算法(机器学习、图分析),都可以表达并作为管道化的容错数据流来执行。在本文中,我们介绍了Flink的架构,并展开讨论了如何将一组(看似多样的)用例统一到一个单一的执行模型下。

Read more »
0%