f*****e 发帖数: 57 | 1 你计数器算完,最后出票结果还得存在外围数据库里,这不就是 master-slave 吗?
可惜 计数器这个master 不知道 slaves 的存在, data consistency 根本无从维护。
一个 web server 从 计数器拿到一张票, 然后 crash 了, 这张票不就丢了吗? |
n*****t 发帖数: 22014 | 2 没丢,拿票的时候我会记 timestamp,计数器需要你最后 confirm 出票成功,超时我
就清标准还原了。另外,最终出票是有记录的,也在外围,所以计数器挂了也无所谓,
可以重新计算余票。
?
【在 f*****e 的大作中提到】 : 你计数器算完,最后出票结果还得存在外围数据库里,这不就是 master-slave 吗? : 可惜 计数器这个master 不知道 slaves 的存在, data consistency 根本无从维护。 : 一个 web server 从 计数器拿到一张票, 然后 crash 了, 这张票不就丢了吗?
|
f*****e 发帖数: 57 | 3 那计数器每张票都得有个timer?
【在 n*****t 的大作中提到】 : 没丢,拿票的时候我会记 timestamp,计数器需要你最后 confirm 出票成功,超时我 : 就清标准还原了。另外,最终出票是有记录的,也在外围,所以计数器挂了也无所谓, : 可以重新计算余票。 : : ?
|
n*****t 发帖数: 22014 | 4 我的设计里有,每张票每个站用 1 个 byte,6 个 bit 做 timestamp,精确到分钟就
可以了,64 分钟没响应就清掉。一个 timer 定时比较 timestamp,超时了干掉。
当然也可以只用 4 bit,每个单位是 4 分钟,不需要太精细。
【在 f*****e 的大作中提到】 : 那计数器每张票都得有个timer?
|
i*****o 发帖数: 1714 | 5 它这个计数器其实是个slave,只保证不重票。外围的db是master,到时候人不出钱了
或者退票,这个票还要计数器。所以它这个东西死了也没关系,从db里再拿数据就好了。
?
★ 发自iPhone App: ChineseWeb 8.6
【在 f*****e 的大作中提到】 : 你计数器算完,最后出票结果还得存在外围数据库里,这不就是 master-slave 吗? : 可惜 计数器这个master 不知道 slaves 的存在, data consistency 根本无从维护。 : 一个 web server 从 计数器拿到一张票, 然后 crash 了, 这张票不就丢了吗?
|
n*****t 发帖数: 22014 | 6 我的方案算 hybrid 吧,比计数器多干点活,反正算力有余,闲着也是闲着。实在不行
了,就把这些活分给前端。
总之,就是血汗工厂流水线
了。
【在 i*****o 的大作中提到】 : 它这个计数器其实是个slave,只保证不重票。外围的db是master,到时候人不出钱了 : 或者退票,这个票还要计数器。所以它这个东西死了也没关系,从db里再拿数据就好了。 : : ? : ★ 发自iPhone App: ChineseWeb 8.6
|
f*****e 发帖数: 57 | 7 那如果写进数据库后, 送ack之前 crash 了, 不就有重票了吗?
【在 n*****t 的大作中提到】 : 我的设计里有,每张票每个站用 1 个 byte,6 个 bit 做 timestamp,精确到分钟就 : 可以了,64 分钟没响应就清掉。一个 timer 定时比较 timestamp,超时了干掉。 : 当然也可以只用 4 bit,每个单位是 4 分钟,不需要太精细。
|
b*******s 发帖数: 5216 | 8 都是几个月前就讨论过的
?
【在 f*****e 的大作中提到】 : 你计数器算完,最后出票结果还得存在外围数据库里,这不就是 master-slave 吗? : 可惜 计数器这个master 不知道 slaves 的存在, data consistency 根本无从维护。 : 一个 web server 从 计数器拿到一张票, 然后 crash 了, 这张票不就丢了吗?
|
n*****t 发帖数: 22014 | 9 不会,最后出票的时候要到数据库校验,重票很容易查。每个铁路局的票单设一个服务
器的话,很轻松。当天作业完毕后可以复合,生成第二天的余票送到中心节点,这样丢
票也避免了。
【在 f*****e 的大作中提到】 : 那如果写进数据库后, 送ack之前 crash 了, 不就有重票了吗?
|
f*****e 发帖数: 57 | 10 这补丁不错, 确实有 eventual consistency.
【在 n*****t 的大作中提到】 : 不会,最后出票的时候要到数据库校验,重票很容易查。每个铁路局的票单设一个服务 : 器的话,很轻松。当天作业完毕后可以复合,生成第二天的余票送到中心节点,这样丢 : 票也避免了。
|