刚刚,就是刚刚,STEEMIT肿么啦?

in steemdev •  7 years ago 

很多朋友可能会发现,从北京时间晚上6:00 到北京时间晚上7:30这段时间,STEEMIT.COM先是无法访问,然后好不容易可以访问了,显示的最新数据竟然是13天以前的。同时busy.org等网站也无法访问。

好几个朋友上来问我,STEEMIT肿么啦,我们这十三天的帖子会不会丢,我们这十三天的收益会不会清零?另外,还有人对STEEM表示的怀疑,是不是数据不安全啊?等等等等。


(图源 :pixabay)

尽管我在微信上答复了这几个朋友,但是我想可能这几个问题也是大家所关心的,恰好STEEMIT刚刚恢复正常,那么就发帖说一下这些问题。

API节点

为了说明这些问题的根源,我们先来说一下STEEMIT.COM、BUSY.ORG等网站都是如何访问STEEM区块链的。

我们可以把STEEM区块链看成一个大数据库(有别于传统的中心化数据库,它是去中心化并且数据不可篡改),那么STEEMIT.COM以及BUSY.ORG等网站就是用于查询和访问STEEM区块链的工具。

STEEM区块链为了便于大家访问,由RPC节点提供了一系列API,比如我们要读取一个区块的信息,那么就向节点发送发送类似如下请求信息即可:

{"jsonrpc": "2.0", "method": "call", "params": ["database_api", "get_block", [21702122]], "id": 1}

比如这个信息就会返回编号21702122区块内的所有数据。同时我们也可以通过给节点发送查询信息来获得当前最新区块编号等区块链信息。

{"jsonrpc": "2.0", "method": "call", "params": ["database_api", "get_dynamic_global_properties", []], "id": 1}

任何人都可以运行和提供RPC节点服务,官网提供的节点为:https://api.steemit.com

节点缓存信息

知道了API节点,我们不难想象,当访问量很多很大时,节点会比较辛苦。每次大家向节点提问,节点都会去做响应的运算,然后返回对应的信息。

get_dynamic_global_properties,这个信息对于STEEM区块链而言,每个块(3秒)更新一次。假设这三秒内有1W个查询请求,一种方式是针对每个请求我们都去查区块链并返回信息,另外一种方式是,我们知道数据并没有变化,直接返回我们缓存的信息即可,然后每三秒更新一下缓存。

上述做法保证了返回的数据正确,并且节省了开销,这就是jussi,简单总结就是在steemd之上弄了个缓存层(caching layer)。

换句话说https://api.steemit.com并非是单纯的steemd节点,而是steemd+jussi。

JUSSI缓存故障

好了,现在我们知道了API节点,也知道JUSSI缓存层。

STEEMIT.COM、BUSY.ORG等网站就是访问官方节点https://api.steemit.com,来从STEEM区块链查询以及向其内写入信息的。

那么如果JUSSI缓存层出故障了,会是什么效果呢?比如说我向节点询问,当前最新块是多少?正常情况下,节点应该返回当前最新块的信息,比如现在'head_block_number': 21702109,,但是缓存出问题了,返回的是老旧的数据,返回的信息为:'head_block_number': 21342317,落后约40W个块,也就是约13天的样子。

这就是STEEMIT.COM以及BUSY.OGR,这段时间不好用的原因。

当这种情况发生时,我们可以通过其它好用的节点访问STEEMIT区块链,比如说:https://gtg.steem.house:8090

结论

网站以及软件等通过RPC NODE API来访问STEEMIT区块链。为了提升效率节省资源,STEEMIT官方节点集成了JUSSI缓存层。

JUSSI缓存层故障导致我们取回的最新区块编号等信息不够新鲜,进而导致STEEMIT和BUSY显示的都是13天以前的帖子😀。

了解了相关原因,我们就会清楚,STEEM区块链的数据还是安全的,我们的帖子和资产都不会消失,大可放心。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  7 years ago (edited)

STEEMIT官方 @steemitdev 的公告:
Stale Account Info Due to Caching Error

感兴趣的可以去瞧瞧

谢谢分享,解释的很清楚

  ·  7 years ago 

我发现了一些微妙的小更新

不知道是我以前没注意,还是有更新

我们的大脑也会产生类似的“缓存”问题,比如最近两天发生的某些事情怎么也想不起来,但是几年前的还记得清清楚楚。stemmit出现类似的问题也就不足为奇了。

你确定还清清楚楚记得几年前偷看刘美女洗澡的事情?

如果事后被刘美女恼羞成怒爆揍,就记得更清楚。。

这种辣眼睛的回忆我会主动选择从记忆里清除

正解,steem 区域链没事,steemit在处理缓存, 前几天steemit wallet也有类似的问题 :)

  ·  7 years ago 

昨天吃完饭就看到微信群里还有私信,说steemit怎么了怎么打不开,我就说了句:

relax,估计又是更新之类的。刚好放下手机关上电脑,回归到生活呀。陪家人吃吃饭聊聊天,或者出去锻炼身体,看看电影,又或者看看书。毕竟离开steemit生活也并不是过不下去。

看的真通透!

最好就是像我这样,看到出问题了,关掉手机,好好的看场戏,看完出来这不就正常了吗。

👍

你有沒見過Steem App與其用的API節點的列表?

听不懂你丫说的啥意思

就像你說steemit busy用官方的API,那其他很多Steem Apps用誰的,有沒人整理。看來你是沒看到過。

公共Steem Full API 节点列表 / List of Public Steem Full API Nodes
很久以前我整理的部分API列表,但是这个列表已经不新鲜了😀

https://developers.steem.io/
这里应该也列出了一些,但是同样不新鲜了
(这个页面当前我打不开)

  ·  7 years ago 

好像正常了

  ·  7 years ago 

谢谢大神解答困惑!

感覺越來越習慣了,囧

  ·  7 years ago 

有O哥在,Steemit還會有事嗎!

此風不可長

要得

  ·  7 years ago 

現在全靠O哥才能把劉姓禍害平衡著~如果O哥不在,我們就慘了😭😭😭😭😂😂😂

  ·  7 years ago 

当时我还以为被删帖了,钱都被收回去了

谢谢O神扫盲,解答了我的疑惑!谢谢!

这种过度依靠公司服务器,分布式不足的设计,还是有很大缺陷的,这次就暴露出软肋了。

技术人,受教了