Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fibos-tracker 1.3.0 更新指南 #8

Open
WxSimon opened this issue May 24, 2019 · 0 comments
Open

fibos-tracker 1.3.0 更新指南 #8

WxSimon opened this issue May 24, 2019 · 0 comments
Labels

Comments

@WxSimon
Copy link

WxSimon commented May 24, 2019

fibos-tracker 1.3.0 更新指南

前面两篇文章中,我们介绍了 fibos-tracker 使用指南emitter 插件的使用。最近我们也将 fibos-tracker 从 1.2.0 升级到了 1.3.0,那么这次升级我们做了哪些改动呢?下面就让我们一起来一探究竟。

"更慢了"

在 FIBOS 客户端(v1.5.4.4)中将 emitter 插件的推送方式从异步更改为同步,这个改动意味着在使用 emitter 插件时,由 emitter 插件推出来的数据将是线性,只有当当前数据接收并处理完毕后才会继续推送下一个事件的数据。相比于之前异步的方式,我们在开启 emitter 插件进行数据同步时同步的速度会有所降低,但是基于同步推送的方式,同步大量区块数据时,将会大大降低客户端的压力。避免客户端因为数据量过大时因机器性能不够而导致节点服务崩溃的问题。

"更可信了"

配合着 FIBOS 客户端的改动,fibos-tracker 内部增加了快速确认逻辑。该逻辑实现的目的是保证由 tracker 推送到业务上的数据都是可信的数据。避免由于节点微分叉而导致的数据回滚问题。而 tracker 实现快速确认的逻辑便是建立在这次 emitter 插件的更新上。同步的数据推送能够保证 tracker 接收到的数据为连续的区块数据,即区块高度为1的数据被 tracker 存储完毕后 emitter 插件才会推送区块高度为2的数据。根据对主网出块的调研,我们确认快速确认的逻辑为:当前区块的前12块的出块BP所出的块都可以被确认为不会出现微分叉的块,具体逻辑可见下图:

快速确认逻辑

"更小了"

在老版的 tracker 中,我们定义了三个基础数据表:actions、blocks、transactions。同时是否存储这三个默认数据用户可根据业务进行自定义配置。而在新版 fibos-tracker 中,我们删除了 actions 表。同时存储了完整的区块头数据,和所有发生交易的区块数据。即完整保证了 blocks 表中的所有数据和所有非 “onblock@eosio” 的事务 transactions。

升级注意事项:

本次升级的 fibos-tracker 需要使用 FIBOS 版本 v1.5.4.4 以上版本。如果你之前业务中有使用 fibos-tracker,需要修改 blocks 表数据结构,修改脚本如下:

ALTER TABLE `blocks` ADD previous varchar(64) NOT NULL;
ALTER TABLE `blocks` CHANGE `status` `status` ENUM('noreversible','reversible', 'lightconfirm');

当然如果你之前没有存储过 blocks 的数据,可以直接将表删除,重启后 orm 会自动创建 blocks 表。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants