鹏仔先生-趣站-一个有趣的网站!
鹏仔先生

鹏仔先生

当前位置:网站首页 > 文字大全 > 正文

Zookeeper算法原理

作者:百变鹏仔日期:2023-09-03 20:58:51浏览:12分类:文字大全

Zookeeper算法原理

zk算法的演进过程

1.Write-all-read-one

先讨论最简单的副本控制规则

Write-all-read-one(简称 WARO)是一种最简单的副本控制规则,顾名思义即在更新时写所有

的副本, 只有在所有的副本上更新成功,才认为更新成功, 从而保证所有的副本一致,这样在读取数据时可以读任一副本上的数据。

先做这样的约定 :更新操作(write)是一系列顺序的过程,通过其他机制

确定更新操作的顺序(例如 primary-secondary 架构中由 primary 决定顺序),每个更新操作记为 wi,

i 为更新操作单调递增的序号,每个 wi执行成功后副本数据都发生变化,称为不同的数据版本,记作 vi。假设每个副本都保存了历史上所有版本的数据。

假设有一种 magic 的机制,当某次更新操作 wi一旦在所有 N 个副本上都成功,此时 全局都能知

道这个信息(现实情况是比较难的) ,此后读取操作将指定读取数据版本为 vi的数据,称在所有 N 个副本上都成功的更新操作为“成功提交的更新操作”,称对应的数据为“成功提交的数据”。 在 WARO 中,如果某次更新操作 wi在某个副本上失败,此时该副本的最新的数据只有 vi-1,由于不满足在所有 N 个副本上都成功,

则 wi 不是一个“成功提交的更新操作”,此时,虽然其他 N-1 个副本上最新的数据是 vi,但 vi不是一个“成功提交的数据”,最新的成功提交的数据只是 vi-1 。

在工程实践中,这种 magic 的机制往往较难实现或效率较低。通常实现这种 magic 机制的方式就是 将版本号信息存放到某个或某组元数据服务器上 。假如更新操作非常频繁,那么记录更新成功的版本号 vi的操作将成为一个关键操作,容易成为瓶颈。另外,为了实现强一致性,在读取数据的前必须首先读取元数据中的版本号,在大压力下也容易因为元数据服务器的性能造成瓶颈。

缺点:

WARO 的可用性。 由于更新操作需要在所有的 N 个副本上都成功,更新操作才能成功,所以一旦有一个副本异常,更新操作失败,更新服务不可用。对于更新服务,虽然有 N 个副本,

但系统无法容忍任何一个副本异常。另一方面, N 个副本中只要有一个副本正常,系统就可以提供读服务。对于读服务而言,当有 N 个副本时,系统可以容忍 N-1 个副本异常。

从上述分析可以发现 WARO 读服务的可用性较高,但更新服务的可用性不高 ,甚至虽然使用了

副本,但更新服务的可用性等效于没有副本.

2.Quorum 机制

将 WARO 的条件进行松弛,从而使得可以在 读写服务可用性之间做折中 ,得出 Quorum 机制.

在 Quorum 机制下,当某次更新操作 wi一旦在所有 N 个副本中的 W 个副本上都成功,则就称

该更新操作为“成功提交的更新操作”,称对应的数据为“成功提交的数据”。令 R>N-W,由于更新

操作 wi仅在 W 个副本上成功,所以在读取数据时,最多需要读取 R 个副本则一定能读到 wi 更新后的数据 vi 。如果某次更新 wi在 W 个副本上成功,由于 W+R>N,任意 R 个副本组成的集合一定与成功的 W 个副本组成的集合有交集,所以读取 R 个副本一定能读到 wi更新后的数据 vi。

例一:

某系统有 5 个副本, W=3, R=3,最初 5 个副本的数据一致,都是 v1, 某次更新操作

w2 在前 3 副本上成功,副本情况变成(v2 v2 v2 v1 v1)。此时, 任意 3 个副本组成的集合中一定包括v2。

例二:

N=5, W=2, R=3 时,若 4 个副本异常,更新操作始终无法完成。若 3 个副本异常时,

剩下的两个副本虽然可以提供更新服务,但对于读取者而言,在缺乏某些 magic 机制的,即如果读取者不知道当前最新已成功提交的版本是什么的时候,仅仅读取 2 个副本并不能保证一定可以读到最新的已提交的数据。

得出一个简单的结论:

仅依赖 quorum 机制 是无法保证强一致性的。因为仅有 quorum 机制时 无法确定最新已成功提交的版本号 ,除非将最新已提交的版本号作为元数据由特定的元数据服务器或元数据集群管理,否则很难确定最新成功提交的版本号。

Quorum 机制只需成功更新 N 个副本中的 W 个,在读取 R 个副本时,一定可以读到 最新的成功

提交的数据。 但由于有不成功的更新情况存在,仅仅读取 R 个副本却不一定能确定哪个版本的数据是最新的已提交的数据(简而言之,就是说我读到的结果中包含了v1,v2我可以肯定最新的数据一定是他们两种的一个,但我却没办法确定是哪一个的)

例三:

在 N=5, W=3, R=3 的系统中,某时刻副本最大版本号为(v2 v2 v2 v1 v1)。注意,这里继续假设有 v2 的副本也有 v1,上述列出的只是最大版本号。此时,最新的成功提交的副本应该

是 v2,因为从全局看 v2已经成功更新了 3 个副本。 读取任何 3 个副本,一定能读到 v2。 但仅读 3 个副本时,有可能读到(v2 v1 v1)。 此时,由于 v2蕴含 v1, 可知 v1是一个成功提交的

版本, 但却不能判定 v2一定是一个成功提交的版本。 这是因为 ,假设**副本最大版本号为(v2 v1 v1 v1 v1), 当读取 3 个副本时也可能读到v2 v1 v1) ,此时 v2是一个未成功提交的版本。 所

以在本例中,仅仅读到(v2 v1 v1)时,可以肯定的是最新的成功提交的数据要么是 v1要么是 v2,却没办法确定究竟是哪一个。

对于一个强一致性系统,应该始终读取返回最新的成功提交的数据,在 quorum 机制下,要达

到这一目的需要对读取条件做进一步加强。

1. 限制提交的 更新操作必须严格递增 ,即只有在前一个更新操作成功提交后才可以提交后一

个更新操作,从而成功提交的数据版本号必须是连续增加的。

2. 读取 R 个副本,对于 R 个副本中版本号最高的数据,

2.1 若已存在 W 个,则该数据为最新的成功提交的数据

2.2 若存在个数据少于 W 个, 假设为 X 个, 则继续读取其他副本,直若成功读取到 W 个

该版本的副本,则该数据为最新的成功提交的数据;如果在所有副本中该数据的个数肯定不满

足 W 个,则 R 中版本号第二大的为最新的成功提交的副本。

例四:

依旧接例三,在读取到(v2 v1 v1)时,继续读取剩余的副本,若读到剩余两个副本为(v2 v2)则 v2 是最新的已提交的副本;若读到剩余的两个副本为(v2 v1)或(v1 v1)则 v1是最新成功提交的版本;若读取后续两个副本有任一超时或失败,则无法判断哪个版本是最新的成功提交的版本。

可以看出,在单纯使用 Quorum 机制时,若要确定最新的成功提交的版本,最多需要读取 R+

(W-R-1)=N 个副本,当出现任一副本异常时,读最新的成功提交的版本这一功能都有可能不可用。

实际工程中,应该尽量通过其他技术手段,回避通过 Quorum 机制读取最新的成功提交的版本。例如,当 quorum 机制与 primary-secondary 控制协议结合使用时,可以通过读取 primary 的方式读取到最新的已提交的数据。

在 primary-secondary 协议中,当 primary 异常时,需要选择出一个新的 primary,之后 secondary副本与 primary 同步数据。 通常情况下,选择新的 primary 的工作是由某一中心节点完成的,在引入quorum 机制后,常用的 primary 选择方式与读取数据的方式类似,即中心节点读取 R 个副本,选择R 个副本中版本号最高的副本作为新的 primary。新 primary 与至少 W 个副本完成数据同步后作为新的 primary 提供读写服务。首先, R 个副本中版本号最高的副本一定蕴含了最新的成功提交的数据。再者,虽然不能确定最高版本号的数是一个成功提交的数据,但新的 primary 在随后与 secondary 同步数据,使得该版本的副本个数达到 W,从而使得该版本的数据成为成功提交的数据。

以上这段其实就是zk的原理

简述下就是先用Quorum 机制选择出primary(版本号最高的,版本号是严格递增的),然后再用primary-secondary来同步数据,(我一定可以读取到版本号最高的,虽然此时有可能是已提交也有可能为未提交),但我同步之后可以保证该版本号的副本数达到w,从而使得该版本号的数据成为成功提交的数据.

例五:

在 N=5, W=3, R=3 的系统中,某时刻副本最大版本号为(v2 v2 v1 v1 v1),此时 v1是

系统的最新的成功提交的数据, v2 是一个处于中间状态的未成功提交的数据。假设此刻原 primary副本异常,中心节点进行 primary 切换工作。 这类“中间态”数据究竟作为“脏数据”被删除,还是作为新的数据被同步后成为生效的数据,完全取决于这个数据能否参与新 primary 的选举。此时有以下两种情况

情况一:

若中心节点与其中 3 个副本通信成功,读取到的版本号为(v1 v1 v1),则任

选一个副本作为 primary,新 primary以 v1 作为最新的成功提交的版本并与其他副本同步,当与第 1、第 2 个副本同步数据时,由于第 1、第 2 个副本版本号大于 primary,属于脏数据,删除脏数据,然后重新同步。

情况二:

若中心节点与其他 3 个副本通信成功,读取到的版本号为(v2 v1 v1), 则选取版本号为v2 的副本作为新的 primary,之后,一旦新 primary 与其他 2 个副本完成数据同步,则符合 v2 的副本个数达到 W 个,成为最新的成功提交的副本,新 primary 可以提供正常的读写服务。

一致性算法在实现状态机这种应用时,有以下常见的问题:

1.1 一般的leader选举过程

选举的轮次

1.2 leader选举的效率

1.3 加入一个已经完成选举的集群

怎么发现已完成选举的leader?

1.4 leader选举的触发

3.3.2 异常过程的顺序

follower挂掉又连接

raft与zk的对比

1 leader选举

为什么要进行leader选举?

在实现一致性的方案,可以像base-paxos那样不需要leader选举,这种方案达成一件事情的一致性还好,面对多件事情的一致性就比较复杂了,所以通过选举出一个leader来简化实现的复杂性。

1.1 一般的leader选举过程

更多的有2个要素:

1.1.1 选举投票可能会多次轮番上演,为了区分,所以需要定义你的投票是属于哪个轮次的。

他们都需要在某个轮次内达成过半投票来结束选举过程

1.1.2 投票PK的过程,更多的是日志越新越多者获胜

在选举leader的时候,通常都希望

选举出来的leader至少包含之前全部已提交的日志

自然想到包含的日志越新越大那就越好。

通常都是比较最后一个日志记录,如何来定义最后一个日志记录?

有2种选择,一种就是所有日志中的最后一个日志,另一种就是所有已提交中的最后一个日志。目前Raft和ZooKeeper都是采用前一种方式。日志的越新越大表示:轮次新的优先,然后才是同一轮次下日志记录大的优先

ZooKeeper:peerEpoch大的优先,然后zxid大的优先

但是有一个问题就是:通过上述的日志越新越大的比较方式能达到我们的上述希望吗?

特殊情况下是不能的,这个特殊情况详细可参见我们上面描述的

这个案例就是这种比较方式会 选举出来的leader可能并不包含已经提交的日志(和我们例三分析的一样) ,而Raft的做法则是对于日志的提交多加一个限制条件,即不能直接提交之前term的已过半的entry,即把这一部分的日志限制成未提交的日志,从而来实现上述的希望。

ZooKeeper呢?会不会出现这种情况?又是如何处理的?

ZooKeeper是不会出现这种情况的,因为ZooKeeper在每次leader 选举完成之后,都会进行数据之间的同步纠正,所以每一个轮次,大家都日志内容都是统一的

而Raft在leader选举完成之后没有这个同步过程,而是靠之后的AppendEntries RPC请求的一致性检查来实现纠正过程,则就会出现上述案例中隔了几个轮次还不统一的现象

1.2 leader选举的效率

Raft中的每个server在某个term轮次内只能投一次票,哪个candidate先请求投票谁就可能先获得投票,这样就可能造成split vote,即各个candidate都没有收到过半的投票,Raft通过candidate设置不同的超时时间,来快速解决这个问题,使得先超时的candidate(在其他人还未超时时)优先请求来获得过半投票**

ZooKeeper中的每个server,在某个electionEpoch轮次内,可以投多次票,只要遇到更大的票就更新,然后分发新的投票给所有人。这种情况下不存在split vote现象,同时有利于选出含有更新更多的日志的server,但是选举时间理论上相对Raft要花费的多。

1.3 加入一个已经完成选举的集群

1.3.1 怎么发现已完成选举的leader?

一个server启动后(该server本来就属于该集群的成员配置之一,所以这里不是新加机器),如何加入一个已经选举完成的集群

1.3.2 加入过程是否阻塞整个请求?

这个其实还要 看对日志的设计是否是连续的

如果 是连续的,则leader中只需要保存每个follower上一次的同步位置,这样在同步的时候就会自动将之前欠缺的数据补上,不会阻塞整个请求过程(****所以为什么redis的选举算法是raft?毕竟redis单线程****)

如果 不是连续的,则在确认follower和leader当前数据的差异的时候,是需要获取leader当前数据的读锁,禁止这个期间对数据的修改。差异确定完成之后,释放读锁,允许leader数据被修改,每一个修改记录都要被保存起来,最后一一应用到新加入的follower中。

1.4 leader选举的触发

触发一般有如下2个时机

2 上一轮次的leader

2.1 上一轮次的leader的残留的数据怎么处理?

首先看下上一轮次的leader在挂或者失去leader位置之前,会有哪些数据?

一个日志是否被过半复制,是否被提交,这些信息是由leader才能知晓的,那么下一个leader该如何来判定这些日志呢?

下面分别来看看Raft和ZooKeeper的处理策略:

Raft的保守策略更多是因为Raft在leader选举完成之后,没有同步更新过程来保持和leader一致(在可以对外处理请求之前的这一同步过程)。而ZooKeeper是有该过程的

2.2 怎么阻止上一轮次的leader假死的问题

这其实就和实现有密切的关系了。

3 请求处理流程

3.1 请求处理的一般流程

这个过程对比Raft和ZooKeeper基本上是一致的,大致过程都是过半复制

先来看下Raft:

再来看看ZooKeeper:

备注:数据同步过程就有点类似于两阶段提交了。

假装是图2

3.2 日志的连续性问题

在需要保证顺序性的前提下,在利用一致性算法实现状态机的时候,到底是实现连续性日志好呢还是实现非连续性日志好呢?

还有在复制和提交的时候:

其他有待后续补充

3.3 如何保证顺序

具体顺序是什么?

这个就是先到达leader的请求,先被应用到状态机。这就需要看正常运行过程、异常出现过程都是怎么来保证顺序的

3.3.1 正常同步过程的顺序

3.3.2 异常过程的顺序保证

如follower挂掉又重启的过程:

ZooKeeper:重启之后,需要和当前leader数据之间进行差异的确定,同时期间又有新的请求到来,所以需要暂时获取leader数据的读锁,禁止此期间的数据更改,先将差异的数据先放入队列,差异确定完毕之后,还需要将leader中已提交的议案和未提交的议案也全部放入队列,即ZooKeeper的如下2个集合数据

ConcurrentMap outstandingProposals

ConcurrentLinkedQueue toBeApplied

如果是leader挂了之后,重新选举出leader,会不会有乱序的问题?

3.4 请求处理流程的异常

一旦leader发给follower的数据出现超时等异常

4 分区的应对

目前ZooKeeper和Raft都是过半即可,所以对于分区是容忍的。如5台机器,分区发生后分成2部分,一部分3台,另一部分2台,这2部分之间无法相互通信

其中,含有3台的那部分,仍然可以凑成一个过半,仍然可以对外提供服务,但是它不允许有server再挂了,一旦再挂一台则就全部不可用了。

含有2台的那部分,则无法提供服务,即只要连接的是这2台机器,都无法执行相关请求。

所以ZooKeeper和Raft在一旦分区发生的情况下是是牺牲了高可用来保证一致性,即CAP理论中的CP。但是在没有分区发生的情况下既能保证高可用又能保证一致性,所以更想说的是所谓的CAP二者取其一,并不是说该系统一直保持CA或者CP或者AP,而是一个会变化的过程。在没有分区出现的情况下,既可以保证C又可以保证A,在分区出现的情况下,那就需要从C和A中选择一样。ZooKeeper和Raft则都是选择了C。

上册19课

《朱子读书法》对阅读过程有一段经典的描述:读书,始读未知有疑,其次则渐渐无疑,中则节节有疑。多了这一番,疑渐渐解,以至融会贯通,都无可疑,方始是学。朱熹将读书过程揭示得十分清楚,教师研读文本大概也要经历这样的过程,也要从“有疑”到“无疑”,再到“节节有疑”,以至“融会贯通”。笔者以为,教师研读文本大致需要经过三个轮次的阅读才能“融会贯通”。

第一轮:以读者的身份初读,达到从“有疑”到“无疑”方可

文本对于教师来讲首先是一篇文章,因而我们首先会以一般读者的身份去阅读,“始读未知有疑”,当我们初读时也许会遇到读音障碍,也许会遇到词句理解困难,这时便会运用以往的旧知或经验,通过猜测、查证等方法去弄懂。解决了词句理解障碍后,自然会透过语言符号组成的文章表面去揣摩作者所要表达的主要意思是什么,所要表达的思想感情又是什么。也就是说,我们作为一般读者,在初读时要解决词句理解障碍,要整体把握文章内容和思想感情,要“懂”文章的意思,即达到从“有疑”到“无疑”的程度。

例如,在初读《“精彩极了”和“糟糕透了”》一文中,可能遇到词句理解的问题,比如“腼腆”,我们可以推测大致意思,再通过查词典或教学参考书可以确认词义是“指因害羞而神情不自然”。在无词句理解的障碍后,我们通过整体初读,很容易理解本文作者通过写父母评价“我”幼时写的第一首诗的事,除了表达对父母的感激之情外,着重表达“宽容鼓励之爱和严格要求之爱都是孩子成长必需的,都不可缺少”的思想。我们身边的父母教育子女,要么从宽容放纵到溺爱,要么从严厉升格为粗暴,读了这篇文章的读者,特别是教育工作者和家长,会从教育的角度重新反思自己的教育,会更懂得宽严之爱都是孩子成长所需的,作者的思想会因为给读者以现实启发意义而引发读者的阅读认同。一般读者读到此算“无疑”便止。

小学阶段的教材,编者往往考虑到学生的阅读理解水平,选文往往主题明确,通俗易懂,读者和作者(编者)的理解往往可以达成很大程度的一致性。尽管这样,许多时候作者的表达意义并不就等同于读者的理解意义,他们往往有落差,这就是说读者有个性化解读的可能。还有的文章,读者可以从不同的角度去理解揣摩作品,得出不同的理解,这就是多元解读。比如,像《去年的树》等一些非主题先行的文章就在文本意义上表现出复杂性,我们揣摩作者所表达的意思感到困难。遇到可能的个性化解读或多元解读,需要我们教师做更多的阅读思考,从而得出更恰当的理解。

第二轮:以作者的身份去体察研读,达到从“无疑”到“有疑”再到“有悟”的程度不少老师以为,我读懂了文章就可以备课、上课了,这是不够的。

进入教材的文章称为文本,文本毕竟不同于一般意义的文章,因而我们教师不能满足于一般读者身份的阅读,而要站在作者的角度,去设身处地进入事件情境,深入人物的内心,体察角色的情怀。在体察研读的过程中多问“为什么”,往往可能激发几许感动,产生某些感想,获得特定的感悟,即达到从“无疑”到“有疑”,进而到“有悟”之境界。

就本课而言,笔者在体察研读中站在作者角度,深入巴迪和父母的内心,设身处地想象当时的情境,想象人物的语言、神态、动作及心理活动,随时问个“为什么”,从而在下列几个地方有一些感触。

(一)阅读第一自然段,体会

记得七八岁的时候,我写了第一首诗。母亲一念完那首诗,眼睛亮亮地,高兴地嚷着:“巴迪,真是你写的吗?多美的诗啊!精彩极了!”她搂住了我,赞扬声雨点般落到我身上。我既腼腆又得意扬扬,点头告诉她这首诗确实是我写的。她高兴得再次拥抱了我。

1.母亲为什么这么兴奋?

“我”只有七八岁,能写出文字来已属不易,何况写诗呢?这是“我”的第一首诗,具有“划时代”的意义,难怪母亲“赞扬声雨点般落到我身上”。母亲的异常高兴,也是在鼓励我继续努力,不断进步。

2.改动第一自然段的一些字词,再在比较中体会。

记得七八岁的时候,我写了第一首诗。母亲念完那首诗,高兴地说着:“巴迪,真是你写的吗?多美的诗啊,很精彩。”她搂住了我,赞扬声雨点般落到我身上。

与原文对照,我们发现改后的文段删掉“一”“眼睛亮亮地”,将“嚷”换成了“说”,将“精彩极了”换成了“很精彩”,把“!”换成了“。”

这样一改,文章就不能准确表现母亲真实而强烈的惊喜之情。去掉“一”不能突出母亲兴奋的“惊”。“嚷”是说母亲情不自禁地“喊叫”起来,近乎失态的高喊表现了母亲从内心深处喷发出的激动,强烈地传达出母亲的“惊”与“喜”。眼睛是心灵的窗户,母亲的眼睛都“亮亮地”,可见母亲的惊喜是发自内心深处的。而“精彩极了”换成了“很精彩”,其夸奖的程度是有很大区别的,“极”表示达到了最高程度,母亲对孩子的鼓励和爱是毫无保留的。把连续的两个叹号换成句号,使人物说话语气大大失真,无法表现当时母亲的“真实而强烈”的惊喜语气,与事件的情境全不吻合。通过这样一比较,我们从语言、动作、神态上对母亲的异常高兴和真诚鼓励有了更深刻的印象。

3.我们通过第一轮研读已经知道“腼腆”是指“因害羞而神情不自然”,但是再读这段中的“既腼腆又得意扬扬”便产生了疑问:“腼腆”与后面的“得意扬扬”是矛盾的,难道用词不当?

通过深入研读,我们发现“腼腆”是反映了“我”写第一首诗后希望得到他人好评却又担心他人评价的矛盾心情,因而“害羞不自然”;在得到母亲如此热情的赞扬后,“我”马上有些“得意扬扬”。“得意扬扬”反映出“我”得到了母亲出乎意料的赞扬后的激动以至有些“飘飘然”的感觉。两个词并列,生动而准确地反映了“我”的两种心理感受在瞬间交织变化的复杂过程,这正是作者心理刻画准确和生动的表现。

(二)阅读第九、十自然段,体会

我把头埋得低低的。诗只有十行,可我觉得他读了几个小时。

“我看这首诗糟糕透了。”父亲把诗扔回原处。

1.只有短短的十行儿子写的诗,为什么父亲读那么久,他读时想了些什么呢?

“我觉得他读了几个小时”,一方面说明父亲看诗的时间的确较长,另一方面反映了“我”在父亲看诗时的紧张期待的心情。在这种紧张与期待的心境中,往往会感觉时间过得更加漫长。“父亲”是一家影片公司的重要人物,写过好多剧本。像父亲这样水平的人,读儿童诗应该会很快地做出优劣判断,他不至于会看这么久。我们自然会问,父亲在看诗时想了些什么呢?也许“父亲”左思右想的是,正是因为这是孩子写的第一首诗,如何评价关系孩子今后的发展,因而绝对不能随意下结论,他是异乎寻常地谨慎,所以看了很久;他应该想过,到底是该像母亲那样继续鼓励孩子,还是逆母亲的态度而动,让孩子不要骄傲,经过长久而深入的思考,父亲才做出了“糟糕透了”的断言。我们在这里看到的是一位高度负责的父亲,对孩子的爱有着更深刻理解的父亲。

2.对照母亲的态度,父亲为什么会做出这样迥异的断言(一个认为精彩到了极点,一个认为糟糕到了极点)?

通过比较,我们知道了父母是站在不同的立场表达着对孩子的爱。在母亲的眼里,孩子还很小,在成长的路上,需要的是多一些的鼓励;而在父亲的观点中,母亲的鼓励有点过分了,以致使孩子“得意扬扬”,在这种情况下,给孩子一些忠告,更有助于他的健康成长,所以他给予这首诗另一个极端的断言“糟糕透了”。不管是哪种断言,我们都能清楚地看到,其出发点都是为了孩子的成长,都是爱。

(三)从“无疑”到“反思”读了这篇课文,特别是读到“我谨慎地把握住我

生活的小船,使它不被哪一股风刮倒”时,作为教育工作者,作为家长,我为什么会自然开始反思自己的教育了呢?

今天我们很多人赞同赏识教育——的确,孩子是需要鼓励的,这正是母亲的态度。从儿童心理学的角度说,母亲的做法也是应该提倡的,父亲的做法似乎确实有些过分。不过,母亲的鼓励也过了头,以致孩子“得意扬扬”。我们作为教师,从教育的角度冷静地评判巴迪父母的做法,首先应该肯定他们都是对的,孩子确实既需要热情的鼓励,也需要严格的要求,这才是全面的教育,否则片面的教育可能会给孩子成长埋下隐患。但是他们又都不完全对,不对的地方在于他们都给孩子以极端的断言。应该说,教育孩子的正确策略是表扬与批评都要留有余地,鼓励和鞭策都要指出努力的方向,不能“一口气吹上天”,也不能“一棍子把人打死”。尽管我们对巴迪父母的做法有不同的看法,但是我们谁也不会责怪巴迪的父母,因为在今天许多人的教育行为中,很有必要提醒全面教育的观点,且这极端的断言传达出的是只有父母才有的那种毫不保留的纯粹的爱。

(四)课文表达方面的特点

课文给我们留下了这样深刻的印象,表达上有些什么特点呢?

从作品的表达特点来说,除了语言、动作、神态及心理描写非常生动准确外,作者选材十分典型,一件小事让读者充分领略了父母从截然相反的角度发出的对孩子的真挚的爱,并在父母的鲜明态度中将深刻的教育之理自然地表达出来了。因为对比十分强烈,所以给读者的印象也更深,作品的感召力也更大。从叙述顺序上说,作者以时间为序,有条理地叙述了发生这件事的经过和结果,叙述很清楚,文章后一部分补充叙述了父母评诗事件后“我”的丰硕成果,显然是作者为了增加说服力,为印证自己思想观点的正确性而补充的。

进行完了第二轮体察研读的工作,我们来简单梳理一下前面使用过的研读方法。第一用了体察法,即从作者或人物角度去深入体察角色内心,还原作品的情境,获得个人独特的感悟。记事写人的文章大多可以通过此法深化对文本的理解,这课就是因为深入了人物的内心,所以也理解了作者,理解了巴迪父母的做法,甚至理解了他们做法中的瑕疵。第二是质疑法,即在深入研读中要多问“为什么”,善问“为什么”。例如,提出“‘腼腆’与后面的‘得意扬扬’是矛盾的,难道用词不当?”提出问题并解决问题,这就是质疑法。第三,比较法,这种方法用得比较多,我们常用人物比较、事件比较、场景比较、词句比较等获得文本感悟。本文中,题目“精彩极了”和“糟糕透了”及引出的父母态度就是鲜明的对比,我们在体会中将第一自然段与第九、十自然段比较,即“父亲”和“母亲”的不同态度作比较就会获得许多感悟;在第一自然段的体会中,我们通过去掉某些词句再与原文对照,也是比较法的运用。第四,品读法,这是具有语文学科特点的办法。在“改动第一自然段的一些字词,再在比较中体会”中,我们使用的就是抓住关键词句来品读欣赏的方法,在品读中往往可以体会到文字背后的形象和思想感情,可以获得许多阅读收获。第五,在研读中我们使用了溯果追因的方法。“对照母亲的态度,父亲为什么会做这样迥异的断言”是在质疑,同时也是在溯果追因。许多文章可以通过追溯某种结果的原因来挖掘文本深处的东西,加深对文本的理解。另外,还使用了抓点带面的方法。本次研读围绕题目“‘精彩极了’和‘糟糕透了’”展开,由题目引出写父母的不同断言,自然又引出第一自然段和第九、十自然段的比较,再由这两个部分引向对全篇的体会,这是一个“抓点(题目)—引线(父母态度对照)—带面(全篇)”的过程,这种方法抓住一个点带出一条线索,统揽了全篇,能使研读不至于零敲碎打、漫无边际。

文本研读无止境。体察研读文本从“无疑”到“有疑”,“有疑”后经过研读又到“无疑”,我们在“无疑”—“有疑”—“无疑”—“有疑”……直至朱熹说的“融会贯通”的过程中获得研读文本的乐趣。这个“融会贯通”的境界也是许多教师说的达到对文本“有所感有所悟”的境界。教师对文本读出了个人独特的感受、感动和感悟,就大致可以算“融会贯通”了。

第三轮:以学生的身份再读,达到从“有悟”到“有用”

我们对文章做了一系列的研读,文本藏于胸,融于心,化于情,这对教学的意义是十分重大的。同时我们也知道,教学不是简单地把教师感悟到的统统倒给学生就行了,而应该是有所选择的。因此,教师研读文本还需要多一分耐心,再次转换角度,以学生身份,设“生”处“地”地阅读,从而有效选择适合有用的训练点,即要从第二轮的“有悟”到本轮的“有用”——对学生有用,对教学有用。

(一)确定教学训练点

我们该怎样确定哪些教学训练点对学生有用、对教学有用呢?

这需要处理好学生需要、教材特点与课标要求三者之间的关系。笔者以为,上述三者的关系中,教材特点是中间环节,也是关键环节,它上要服从于课标要求,下要服务于学生学习发展的需求,我们用“上挂下连”的方法可以有机地处理好三者的关系,即先行研读教材特点,并与上面的课标要求挂钩,看哪些训练点是适合课标对本年段要求的,适合的我们把这些要求作为重点目标加以关注;其次向下联系学生语文发展的需求,假如教材的某些训练点符合课标要求,但并不是当前学生发展所需要的,我们就要有所选、有所弃,只选择其中符合课标要求,又符合学生发展需求的教材训练点作为学生学习的重点。

例如,本课教材的特点很多,很多训练点也都可以进行语文训练。我们读懂课标高段要求“在阅读中揣摩文章的表达顺序,体会作者的思想感情,初步领悟文章基本的表达方法”和本单元导语“认真阅读课文,把握主要内容,想一想作者是怎样通过外貌、语言和动作的描写表现父母之爱的”提示,教学的基本方向和重点也就明确了;再根据本班学生语文发展的实际情况进行训练。五年级学生在阅读中往往只重视对内容和思想感情的把握,忽视对人物的语言、动作、神态及心理活动的体会,对文章的叙述顺序也不大留意。于是,我们就在三者之间找到结合点,确定了本课的教学重点是要抓住人物的语言、动作、神态及心理活动来体会人物思想感情,同时也要注意引导学生把握文章的叙述顺序。这就是课文的重点训练点,也是文本研读的落脚点。

(二)“设‘生’处‘地’”研读我们该怎样“设‘生’处‘地’”地研读呢?所谓“设‘生’”,就是以学生的身份去阅读,所谓“处‘地’”,就是放低自己的位置,以全班大多数学生的实际阅读能力为标尺,去寻找学生可能遇到的阅读疑难点、误读点、忽略点,从而找到本课的教学着力点。

例如,站在学生的角度,“我谨慎地把握住我生活的小船,使它不被哪一股风刮倒”等句子不会是老师理解的困惑点,但会是大多数学生理解的困惑点,教学时需要引导。五年级学生阅读到父亲对“我”写的诗作粗暴的断言,还把诗“扔”回原处时,可能结合现实生活中自己接受教育的经验,认为母亲是对的,而父亲在这里的做法不对。学生不能理解父亲,就不能正确理解文章的主要思想,这就是学生在阅读中可能存在的“误读点”。找到了学生的“误读点”,于是我们要在教学中提醒学生和指导学生正确理解。“忽略点”在前面也提到,五年级学生的实际阅读往往重视内容的理解,而对人物的语言、动作、神态及心理活动的理解体会,是学生阅读时容易忽略的地方,我们在教学中就需要着重强调和有目的地引导。

把上述三轮研读的思路归纳起来,我们可以把文本钻研的程序、方法以及研读深度做一个梳理。为了更直观,我们用表格的形式呈现如下:

研读轮次

研读的身份

研读的程度

研读的方法

第一轮

读者的身份

有所懂

运用旧知、猜读查证、整体把握

第二轮

作者的身份

有所悟

体察、质疑、比较、品读及溯果追因、抓点带面等

第三轮

学生的身份

有所用

设“生”处“地”、上挂下连

下册19课

学习目标

1.熟读课文,了解故事发生的情境,能从内心批评和唾弃托德和老板在金钱面前的丑恶嘴脸。

2.通过对描写人物的语言的揣摩,把握托德和老板的特点,感受课文神态描写和语言描写的传神之处。

3.认识课文中的4个生字,积累有关语言。

课前准备

课前介绍《百万英镑》的故事梗概。

课时安排

1课时

教学过程

一、新课导入

1.谈话:感受了中国文学作品中的一些人物形象,让我们再来看看外国作家笔下的人。下面这篇课文选自美国著名作家马克土温写的短篇小说《百万英镑》。

2.了解故事梗概

一个富豪之家的两兄弟,从银行中取出面额为一百万英镑的钞票,藉此验证这一百万的价值。他们选择了身无分文的年轻人作为实验品。于是一个流落伦敦街头的穷光蛋忽然之间得到了一张一百万英镑的钞票,他的生活由此发生了翻天覆地的改变,引起了他生活方式的突变……

3.揭题:24*金钱的魔力

二、自读课文,畅谈体会

1.静心读文,想想可以用哪些词语概括老板和托德的特点,课文的哪些描写突出了这些特点。(在书上作批注。)

2.交流阅读感受。

(1)学生在四人学习小组交流,谈谈对两个人物的评价。推选代表准备全班交流。

(2)派代表分别在写有“老板”和“托德”的题板上写上概括性的词语。

例:

老板:见钱眼开、金钱的奴隶……

托德:以貌取人、刻薄、世故……

3.各学习小组针对其中一个人物选取课文中一处最精彩的描写读一读,谈谈体会。教师结合学生的交流,相机指导:

◆关于“托德”:

(1)入木三分的语言描写:

那个家伙摆出一副非常刻薄的嘴脸,说道:“啊,是吗?哼,当然我也料到了你没有带零钱。我看像你这样的阔人是只会带大票子的。”——(抓住:“刻薄的嘴脸”读出“刻薄的语气”。)

他一听这些话,态度稍微改了一点儿,但是他仍旧有点儿摆着架子回答我:“我并没有恶意……恰恰相反,我们换得开!”——(抓住“仍旧”“摆着架子”读出“善变”。)

(2)细致入微的神情刻画:

他微笑着接了过去,那种笑容是遍布满脸的,……恰像你所看到的维苏威火山边上那些小块平地上凝固起来的波状的、満是蛆虫似的一片一片的熔岩一般。

你体会到什么?是怎么读懂的?

(点拨:托德神情的变化:“笑容是遍布满脸的”——“凝结”、“毫无光彩”;通过表情朗读体会比喻的妙用。)

◆关于“老板”:

(1)动作描写:

老板望了一眼,吹了一声轻快的口哨,一下子钻进那一堆顾客拒绝接受的衣服里,把它来回翻动,同时一直很地说着话,好像在自言自语似的:

(引导抓住:“钻进”“来回翻动”“兴奋地说着话”,想象人物的连续动作,体会人物的心情。)

(2)生动传神的语言描写:(课文12~18自然段。)

学生自由试读十二自然段,谈谈感受。分角色朗读。(较快的语速,体现人物的金钱的奴隶媚态。)

4.小结、提炼:读了文章,托德与老板的可耻嘴脸及性格跃然纸上,呼之欲出,这都缘于作者对人物的生动传神的动作描写,细致入微的神情刻画,入木三分的语言描写。

三、拓展延伸,引发阅读兴趣

一个富豪之家的两兄弟,从银行中取出面额为一百万英镑的钞票,藉此验证这一百万的价值。他们选择了身无分文的年轻人作为实验品。于是一个流落伦敦街头的穷光蛋忽然之间得到了一张一百万英镑的钞票,他的生活由此发生了翻天覆地的改变,引起了他生活方式的突变……想知道故事的原文吗?(这段最好放在前面,介绍背景,帮助孩子更好地理解课文)

1.在《百万英镑》这篇短篇小说中处处可寻觅到这样的生动描写。感兴趣的同学可读原文,进一步感受作家笔下的人物特点。

(发下原文的阅读材料或者介绍网站。)

2.了解作者——马克·吐温

马克·吐温是美国批判现实主义文学的奠基人,世界著名的短篇小说大师。他经历了美国从“自由”资本主义到帝国主义的发展过程,其思想和创作也表现为从轻快调笑到辛辣讽刺再到悲观厌世的发展阶段。马克吐温的《镀金时代》、《汤姆索亚历险记》《王子与乞丐》等作品,描绘了一幅幅形象资本主义社会的幽默画。这些作品读来亲切、自然,充满轻松的幽默又蕴涵深刻的批判意义,受到广大读者的欢迎和喜爱。

四、作业

阅读一篇文章,做一则读书笔记:(课标《同步阅读》同主题文章)摘录语言描写、动作描写、神情描写的句子,概括人物的性格特点。

鹏仔 微信 15129739599

百科狗 baikegou.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

  • 上一篇:已经是第一篇了
  • 下一篇:已经是最后一篇了
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)