这是一个创建于 1849 天前的主题,其中的信息可能已经有所发展或是发生改变。
目前使用 redis 回收用户数据,分钟级别刷新到 DB,再新调用内容会从 Redis 里去查。
内容量变大,redis 会有一些问题,所以想利用 Flink 流式计算来承担一部分 feeds 流更新的功能,比如说点赞计数。
所以想问 Flink 适合这个场景吗? 以及 Flink 怎么在这个场景里用起来,能承担哪一部分的功能?
场景:
下游应用 --- redis ----- db
问题:
高峰 api 请求失败率高。
在 feeds 更新的时候,接受数据-redis 处理-返回成功,这个过程是同步的,也没有消息队列。在流量高峰的时候,如果下游收到了 fail,可能是 redis 没收到,也可能只是算比较慢迟到了。看到 Flink 可以异步 I/O,如果数据到了先返回成功,处理可以排队,这样会不会提高请求的成功率。这个流量的大小不稳定,如果有活动会有很大增长,如果扩机器的话平时用不到,会浪费。
状态数据的管理
Redis 里收到的数据会每分钟更新一次 DB,但是只更新最近一分钟的内容。redis 是 kv 结构,除了上报内容之外,还维护了一个数组来记录内容到达时间之类的状态。这样需要双写,看 Flink 有针对状态数据的处理,所以想或许这里可以用。