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