包含事件通知时序性的词条

来源网友投稿 627 2023-01-23

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。
本篇文章给大家谈谈事件通知时序性,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享事件通知时序性的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

纵向思维具有三大特点

纵向思维三大特点是:时序性、同一性、预测性。

一是时序性:它注重把事物或事件放在发展的过中进行比较,也就是按时间的先后顺序来描述事物或窜件的过去、现在和呆来,从市揭示拿物或事件的特点。

二是同一性:同一性即指历时性所考察的事物必须是同一的,具有自身的稳定性和可比性,而不可将被考察对象在某一阶段,如现在或将来阶段进行“调包”,如果这样,违反纵向思维的同一性,那思维的结果就会失真。

三是预测性:既然纵向思维是由过去到现在,再由过去和现在推断将来,并把对将来的推断作为指导现在行为的因素,那么它就具有预测性。

纵向思维的预测是一种可能性和可然性,即可能发生,也可能不发生,可能按照预测的趋势前进,也可能脱离了预测趋势,另辟他径。

所谓纵向思维,是指在一种结构范围内,按照有顺序的、可预测的、程式化的方向进行的思维形式,这是一种符合事物发展方向和人类认识习惯的思维方式,遵循由低到高、由浅到深、由始到终等线索,因而清晰明了,合乎逻辑。

我们平常的生活。学习中大都采用这种思维方式。与横向思维相对应。所谓横向思维,是指突破问题的结构范围,从其他领域的事物、事实中得到启示而产生新设想的思维方式,它不一定是有顺序的,同时也不能预测。

目前业界主流的实时计算框架包括 Flink、Spark Streaming、Storm。相比于 Batch,Stream 的容错则需要考虑更多。Batch 数据通常基于稳定性较高的分布式存储进行数据的读写(如 HDFS、S3 等),当数据计算出现异常时可以通过重新计算的方式保证最终结果的一致性,Spark 就是基于这样的思路设计的,它通过 lineage 机制来重新计算。并且 Batch 计算往往不需要过多的考虑数据的时效性,而且不需要做到 7×24 小时的运行。但相对于 Stream 而言则会更加复杂。

对于 Stream 而言需要面对不同的流式数据源,可以是 File Stream、队列(如 Kafka),甚至可能是某个服务发来的消息。数据源的多样性就注定了 Stream 的容错需要重新进行考虑。并且 Stream 数据的容错需要在短时间内进行恢复,否则将可能会导致大量的数据积压甚至丢失,因为 Stream 数据链路不会因为下游处理任务的异常而停止数据的产出。

让我们将问题描述的更具体一些,方便更清楚的了解 Stream 的容错思想。对于分布式计算而言,目前主流的思路都是采用 Master-Slave 架构。Master 主要用于进行 Slave 节点的管理(比如检测 Slave 是否存活,状态管理等),Slave 主要是担当数据计算的职责。因此,从容错角度而言分为:

Master 容错相对而言较为简单,因为不需要直接参与数据计算。主要分为有状态的 Master 和无状态的 Master 两类。

像 Storm 这类无状态的实时计算框架,Master(即 Storm 的 Nimbus 节点)的异常往往不影响 Slave(即 Storm worker 节点)的数据计算,只需要重新启动一个 Master 即可,这个过程中不需要进行 Master 状态的恢复,也不会影响实时数据的处理。甚至 Slave 节点在无感知的情况下就完成了 Master 的恢复。但是这种方式会牺牲一定的功能,实时计算框架本身无法支持状态流的处理。

像 Flink 、 Spark Streaming 这类包含状态的实时计算框架,需要恢复 Master 节点的同时还需要对其状态进行恢复,Master 状态信息包含一些必要的配置、以及对 Slave 节点状态管理的信息(如“某个 Slave 节点的状态快照所在的 HDFS 路径”)。Spark Streaming、Flink 的做法都是基于 checkpoint 机制对 Master 节点的状态进行备份,异常发生时需要基于上一次的状态备份进行恢复。

Flink 还提供了 HA 机制,即同时运行至少 2 个 JobManager 节点,但是只有其中一个真正的处理管理事务(称为主节点——Leader),其他的仅仅保持状态信息的同步(称为从节点——Standby)。一旦 Leader 发生异常,其中一个 Standby 将会代替异常节点继续进行任务的管理。 更多关于 Flink HA 可以参考官方文档 。这种机制是牺牲更多的资源来换取任务的稳定性,主从切换的成本相比于从状态备份中恢复速度更快。

Stream 数据处理整体而言可以分为 3 部分:

根据不同的保障级别,Stream 数据容错级别又分为 3 种语义:

我们之所以将数据接收和写入单独拿出来,是因为在面对不同的数据源时,实时框架的容错机制与最高语义保障级别是不同的。如 Flink 而言,它的 exactly-once 语义总的来说是针对于数据处理阶段而言,即只有框架内数据的处理可以保障 exactly-once,而数据的接收、写入是否是 exactly-once 语义取决于数据源本身与 Source、Sink 算子的实现逻辑。通常来说,我们将能够保障数据接收、数据处理、数据接入整体数据一致性称为 端到端(end-to-end) 的数据一致性。

端到端的数据一致性保障相对而言是很复杂的,因为数据源的种类众多,这些一般都不是分布式实时框架中的一部分,数据的发送与接收逻辑不受实时框架的控制。

对于 Storm 而言,框架内仅提供了相关的接口用于用户自己实现一致性语义,并没有直接提供各种存储的一致性 Spouts,数据写入也是如此。数据处理过程提供 at-least-once 语义保障(exactly-once 语义由 Storm Trident 提供了保障,本篇暂不做讨论)。Storm 通过 ACK 的机制保证 at-least-once 语义。简单来说,当 Storm 接收到一条数据后将会给这条数据唯一的 id,数据被下游 Bolts 处理但是处理后的 id 不会发生改变,当且仅当该 id 的数据经过的 Bolts 全部 ACK 后才认定该数据被 彻底处理(fully processed) ,否则 Spout 将再次发送该数据直到数据被彻底处理。

Spark Streaming 的数据接收通过预写入日志的机制保障了 at-least-once 语义。简单来说,就是将接收到的数据以日志的形式写入到稳定的存储中(存储位置基于 checkpoint 配置获取),这样一来就与数据源解耦,可以基于预写入日志实现数据重发的能力,从而保障 at-least-once 语义。数据处理过程中基于 RDD 的容错机制进行恢复,提供了精确一次的语义。数据写入需要用户自己实现,Spark Streaming 提供了两种思路:幂等写入和事务性写入。

Flink 全局基于 checkpoint 进行容错,通过向流数据中插入特殊的事件——checkpoint barrier 来触发各个算子制作状态快照,快照会写入到持久化的存储中。Flink Source、Sink 的语义保障需要依赖数据源以及自身的实现逻辑。但是 Flink 提供了多种状态接口,如 ListState、MapState,用于进行算子状态的记录,状态容错可以保障 exactly-once 语义。这也是与 Spark Streaming 的不同之处。

到这里我们大致了解了各个框架的容错机制,我们不禁想回味一下:分布式实时计算框架的容错机制的本质是什么?容错到底在保障什么?

从本质上讲,容错在保障数据可以被正确的处理,即使在发生异常的情况下。实时流处理的正确性又体现在 处理过程的完整性 与 时序的正确性 。即一条数据要被所有的逻辑完整的处理一次(根据语义的不同也可能是多次),且多条数据之间的处理的时序不发生改变。

举个例子,如下图所示的数据流 DAG 图中,流数据序列 [1, 2, 3, …, n] 被输入到 A 中,然后最终流向 D。完整性即每一个事件都被完整的 DAG 路径处理,即 A - B - D 或 A - C - D ,时序性即事件 1 永远先于事件 2 被处理,即使在发生了异常后恢复的情况下也是如此。

从整体来看,实时分布式计算框架的容错机制核心思想是 确认 与 重试 ,但是不同的框架重试过程中回滚的数据量不同。

Storm 通过 ACK 机制判断数据是否完整处理,否则将重发数据,重新进行计算。这种单条数据粒度的 ACK 与重试机制即可以保障时序性,也可以保障处理过程的完整性。但是这样细的粒度牺牲了一定的性能。Storm 并没有将数据流进行冗余存储来保障容错,从这个角度而言它的容错是轻量级的。

Spark Streaming 通过微批次的方式将数据进行截断,以批次为单位进行容错。这种方式一旦发生了异常,可以从上一个批次中恢复继续执行。这种机制从一定程度上提升了性能,但是对时效性有损。因为微批次的思路对数据流进行了截断,时间语义上的单位时间也只能根据批次的大小来界定。Spark Streaming 提供了数据流的冗余(预写入日志)可以真正做到与数据源解耦,对于所有的数据源均可以保障容错的语义,但是这类的容错是重量级的。

Flink 的思路也是对数据进行截断,从而可以分段治之。相比于 Spark Streaming 而言这种截断并没有改变数据流的连续性,时间语义上的单位时间仍然是以事件粒度来界定。并且 Flink 不会对数据流进行冗余(虽然 unaligned-checkpoint 会产生一部分的数据冗余,但是与 Spark Streaming 这种全部数据冗余的思路是不同的),只关注计算中的状态容错。这种思路较为轻量级,并且能够保障 exactly-once 语义。但是这种思路无法应对所有的数据源场景,需要强依赖数据源的实现与 Source、Sink 算子的逻辑。

总体而言,实时流的容错核心是基于 数据截断 和 重试机制 。Storm 的数据截断粒度是单条数据级别的,通过 ACK 的机制实现的重试机制,此截断粒度不会影响数据的时效性。Spark Streaming 的截断粒度是微批次的,截断会影响数据的时效性,然后通过数据冗余的方式保障了重试机制,这种冗余数据的方式可以面对任何数据源时都能够保证数据一致性。Flink 是基于 checkpoint barrier 将数据流截断,barrier 会随着数据流而流动,避免了流量截断带来的时效性影响,并且 Flink 容错只关注状态,借助状态的回滚来保证数据一致性。

从容错实现来看,三种框架的侧重点有所不同。Storm 作为无状态计算框架,采用的是非常简单有效的机制保障容错。Spark Streaming 更注重数据的可恢复性,希望通过备份原始数据能够在任何情况下、面对任何数据源都能够保证数据一致性。Flink 相对而言更加轻量,更注重数据的时效性,不希望容错机制带来太多的时效性损失(例如 unaligned-checkpoint)。

感谢你读到这里,希望你现在对 Flink 容错机制和其他的实时计算框架的容错机制有了一个基本的了解,对其容错思路和本质有了不同的想法。 下一篇 我们将讨论 Flink checkpoint 的数据结构,探索它究竟是如何存储的?都存储了哪些内容?基于这些备份数据如何在异常中恢复?

可可 @ 欢迎邮件联系我

网络层次结构

网络层次结构

一、网络分层的原因 

1.网络通信面临的一些问题:

硬件故障、网络拥塞、包延迟、包丢失、数据损坏、数据重复、数据乱序

2.假设:将所有工作分成面向应用与面向传输两部分

-----------------------------------

应用程序:QQ、微信、浏览器、播放器

-----------------------------------

物理连接:网卡等

-----------------------------------

这种方式的特点:* 应用程序完全了解本机网络连接的内部细节

                             *应用程序直接通过网络连接与其它应用程序通信

缺点:* 会造成大量的重复劳动

           * 扩展性太差

3.现在:将面向传输功能进一步细分为通信软件和物理连接

------------------------------------

应用程序:QQ、微信、浏览器、播放器

------------------------------------

通信软件: 起到“承上启下”的作用

------------------------------------

物理连接:网卡等

------------------------------------

采用包交换机制在系统中增加若干中间层(主要是网络层),使应用程序不直接处理硬件连接

这种设计的好处是:* 开发新应用只要遵守通信软件提供的接口即可实现通信功能

*出现新网卡时只需扩展通信软件上层应用即可使用新网卡

4.网络之所以使用层次结构的原因:

(1)出于复杂问题的解决需要

(2)系统功能的扩展性需要

二、网络的层次结构

1.层次结构的两大特点:

*层次性:发送方—(由高到低)单向依赖

                接收方—(由低到高)单向依赖

*结构性:上层起着隐藏下层细节和统一下层差异的作用

2.网络体系结构:网络通信功能的层次构成、各层的通信协议规范和相邻层的接口协议规范的集合。

     层次    协议      接口

每一层的目的都是向它上一层提供一定服务而把如何实现这一服务的细节对

上层加以屏蔽。

3.协议

* 协议就是一组规则和约定。

* 计算机网络协议

系统:包括一个/多个实体、在物理上明显区分的主体

例如:主机、路由器、交换机、AP等

 实体:系统中能够收发信息和处理信息的任何东西

例如:Email、ftp、www 

*计算机网络协议:网络中两个实体之间控制数据通信的规则和约定的集合。

4.计算机网络协议的要素

*语法(数据结构、编码和信号电平等):1.消息格式、编码2.HTML网页表示

3.TCP报文格式

* 语义(用于协调和差错处理的控制信息):1.双方“握手”控制信息

                                                                      2.TCP一方主动发出建立请求

                                                                      3.TCP另一方表态是否同意或拒绝连接

* 时序(传输速率匹配和事件先后顺序):1.双方握手过程规定 2.先和服务器

建立TCP连接3.在请求某个HTML网页

5.层次结构的有关概念

*第n层协议:一台机器的第n层与另一台机器的的第n层进行通话采用的规则和约定。

*对等实体:不同机器中组成相同协议层的实体

*接口:位于相邻层间,定义下层向上层提供的原语操作和服务

*协议栈:特定系统使用的一组协议

6.计算机网络体系结构分层原则

*协议分层原则:目标机器第n层收到的对象应与源机器第n层发出的“对象”完全一致

*协议栈 :1.上层隐藏下层的细节 2.上层统一下层的差异 3.上层弥补下层的不足

7.层次划分设计的问题

*标识接收方/发送方机制:机器上的进程需要某种手段标识它想和哪个进程通话

*数据传输规则:传输形式、数据的顺序、收发双方的同步。。。

*差错控制:确定错误检测和错误纠正方法

*多路复用:下层可决定为多个上层通信使用同一个连接

*路由选择:在多条可能的路径中选定一条

三、网络协议与服务

1.服务提供者与服务使用者

* 服务提供者:使用下层服务的实体

  服务使用者:为上层提供服务的实体

* 第N层实体:1.实现的功能为N+1层使用 2.利用第N-1层来实现本层的功能

                      3.既是第N+1层的服务提供者又是第N-1层服务用户

2.服务分类

(1)面向连接

* 有连接服务/面向连接服务:1.类似于电话服务 2.本质上数据结构是一个管道

* 其发送的形式有两种:1.报文序列:保持发送数据的边界 2.不保次发送数据的边界

(2)无连接

* 无连接服务:1.类似于邮政服务 2.每次发送一个报文 3.每个报文都给出详细的目标地址信息

* 其根据服务质量可划分为两种:1.无确认:不能确定接收方是否收到 2.有确认:能确认发送是否成功

3.如何使用下层服务

* 服务:形式上由一组原语(操作)来描述

* 原语:上下两层通信形式

* 参数:用来传递数据和控制信息

* 国际上定义的4个原语:

1.Request:由服务使用者发出/要求服务做某种工作

2.Indication:由服务提供者发出/通知发生了某事件

3.Respone:由服务使用者发出/表示对某个事件的响应

4.Confirm:由服务提供者发出/报告事件的响应

* 服务原语的时序性

4.服务与协议是完全分离的

* 服务(上下关系):1.服务是各层向它的上层提供的一组原语(操作)

                                  2.服务定义了该层能为它的用户完成的操作

                                  3.服务只与两层之间的接口有关

* 协议(水平关系):1.协议是一组规则

                                  2.决定同层对等实体交换帧、包和报文的格式和意义

                                  3.实体用协议来实现他们向上层提供的服务

四、网络标准与标准化组织

* 标准化是规模化的基础

优点:1.能保证设备/软件有一个大市场

           2.允许来自多个厂商产品的互通

           3.使用户在设备选择和使用中有更多的灵活性

* 标准及其分类

  标准:标准是一组规定的规则、条件或要求

* 一些有关的标准化组织

ITU ISO ANSI IEEE(制定通信和信息系统领域的标准)

因特网标准:IRTF IETF RFC

五、TCP-IP模型及因特网

*  TCP是传输层的协议 IP是网络层的协议

*  TCP/IP设计目标:1.互联网络 2.保护子网硬件 3.体系结构灵活 4.网络故障不能影响两端之间连接

*                              应用层

                               传输层

                               网络层

                          主机-网络层————交换机、集线器、接入点

                     ( 802.3/802.11)

* 主机-网络层

(1)主要功能:1.端系统与其所接网络之间的数据交换 2.特定软件取决于所用的网络类型

(2)设计优点:1.将网络访问功能隔离成一个单独层次 2.网络访问层之上的通信软件不必关心所用的网络类型

(3)又分为两层:*  物理层:1.设备与介质/网络之间的物理接口

                                                 2.规范传输介质特性,信号、数据率及相关方面

                               *  网络访问层:1.主机与网络之间的数据交换

                                                       2.发送主机必须向网络提供目的主机的地址

* 网络互联层(互联协议:IP、ICMP、IGMP、ARP/RAPP、BGP/OSPF)

基本任务:1.采用存储-转发技术 

                   2.提供Best-effort服务 

                   3.处理来自传输层的报文发送请求(主机)

                   4.处理入境数据包的转发(路由器) 

                   5.处理ICMP报文

* 传输层(TCP/UDP)

(1)主要功能:1.提供端-端的数据传送服务

                           2.为应用层隐藏底层网络的细节

(2)TCP/IP在无连接的基本传送服务IP之上既提供了无连接服务,也提供了可靠的有连接服务

* 应用层

应用层服务:1.虚拟终端(TELNET)协议

                      2.文件传输协议(FTP)

                      3.简单邮件传输协议(SMTP)

                      4.域名服务(DNS)

                      5.超文本传输协议(HTTP) 关于事件通知时序性和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 事件通知时序性的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、事件通知时序性的信息别忘了在本站进行查找喔。
上一篇:国产智能手表如何超越AppleWatch
下一篇:织云智能运维平台(织云智能运维平台官网)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~