服务端有什么类似 Vue 依赖收集模式的实现吗?用来在数据更新后做刷新缓存之类的操作

2022-07-04 11:55:09 +08:00
 Sin
1179 次点击
所在节点    程序员
6 条回复
zcf0508
2022-07-04 12:12:31 +08:00
做过一个 python 的尝试
noe132
2022-07-04 12:14:58 +08:00
@vue/reactivity 可以单独拿出来用的。
rxjs 其实也有些类似的东西
tairan2006
2022-07-04 12:43:46 +08:00
虽然不知道 vue 是咋实现的,不过在服务端这个需求一般用消息队列…
Sin
2022-07-04 12:57:27 +08:00
@tairan2006
之前服务端代码里涉及到消息通知、缓存刷新之类的工作都是主逻辑完了手工主动调用的,比较繁琐,扩展性差,key 多了管理起来也很麻烦。所以想能不能有一种声明式或者自动化的方法来处理这样的工作
尝试过的方法包括订阅 ORM 事件、实体类的 AOP 拦截(有点类似 vue 的实现了)等等,想问下有没有现有的比较好的完整实践
tairan2006
2022-07-04 13:00:55 +08:00
@Sin 解耦的方案是通过数据库 binlog 订阅分发…
pastor
2022-07-04 16:20:37 +08:00
我先假定 OP 是指 web 类的服务,在这个基础之上,OP 提出的这个问题本身是错误的,原因:
1. 对于前端:技术模型是有渲染树、数据更新则需要对应的视图更新,换另一个词就是有状态,前端的画面显示是跟数据、状态对应的
2. 对于后端:web 类的服务是无状态的接口为主,一个请求来了,都去查询、写入公共的缓存、数据库即可,每次与缓存、数据库的交互本身就是一个完整的原子流程、只要更新了也就相当于刷新了因为下次或者其他请求也是查缓存数据库,根本就不存在如何刷新的需求

对于其他类型的有状态服务,单进程内你可以简单的发布订阅去实现一个数据更新时自动回调订阅者来实现多个模块及时刷新数据、状态相关的,如果是多进程多服务,队列之类的发布订阅来实现跨进程的数据同步也可以,但如果涉及到并发时序与事务相关的,则需要认真设计、避免因为乱序导致数据不一致的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/863920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX