我现在是用一个 while 循环每隔一秒钟查询一次来判断的,有没有什么其他方法可以实现这个需求? 谢谢
我现在是用一个 while 循环每隔一秒钟查询一次来判断的,有没有什么其他方法可以实现这个需求? 谢谢
|
lishunan246Aug 23, 2021 via Android
1
canal
|
|
mtrecAug 23, 2021
2
不如说说你想干什么以及你现在的做法有什么让你不满的地方
|
|
qiyueyAug 23, 2021 via Android
3
监听 binlog
|
|
4
设置个更新操作的触发器,然后触发器里面判断有没有更新这个值。
|
|
5
@lishunan246
@mtrec @qiyuey @dorothyREN 我现在代码是这样 感觉很蠢得样子 ```python while True: print('start check') action = mysql.get_action() if action == 'turn_on': turn_on_the_light() elif action == ''turn_off': turn_off_the_light() else: time.sleep(1) continue ``` |
|
dangyuluoAug 23, 2021
6
自己写个插件
MySQL UDF |
|
8
看起来你这个值就不该放到数据库,也许你可以试试配置中心?
|
|
ericlsAug 23, 2021 via iPhone
9
Trigger
|
|
10
我们之前搞了个 trigger,当插入值的时候自动触发其他关联表的更新。
但是后面负载高的时候操作偶尔会丢失,找了 DBA 查了 binlog,貌似是出错了还是怎么的,反正排查特别麻烦。查错误的时间快够我重构接口了。 如果你有数据库的权限去监听变更,那一般来说 Model 层代码也是自己维护的,这种事情最好在业务逻辑里面做。 当更新字段值的时候,自己写逻辑,想直接改关联数据,还是用消息队列,都可以比较直观地执行,后期查日志也方便。 |
|
qiyueyAug 23, 2021 via Android
11
@Ackvincent 搜索配置中心
|
|
12
看起来是 IoT 应用,为什么没有采用基于订阅 /回调之类的架构呢? MySQL 连接还是比较重的吧
|
|
ilaAug 23, 2021 via Android
13
trigger+scheduler event
|
|
darkengineAug 23, 2021
14
@Ackvincent action 就不应该存到数据库里,放队列里更合适
|
|
bthuluAug 23, 2021
15
订阅并解析 binlog 就行了
|
|
16
1,数据库触发器
2,binlog 监听 3,业务代码层监听 |
|
inhzusAug 23, 2021 via iPhone
17
觉得这种业务形式不太适合数据库,可以看看类似于阿里云 configserver 的产品
|
|
cheng6563Aug 23, 2021
18
如果懒得改,就给这数据加个版本号然后继续凑合用即可。
|
|
mtrecAug 23, 2021
19
@Ackvincent 除了感觉很蠢有没有别的问题 如果能满足现在的需求 没有必要增加别的依赖
|
|
PiersSoCoolAug 23, 2021
20
x s 轮询一次
|
|
fregieAug 23, 2021
21
用 etcd
|
|
22
多谢楼上各位,看了各位的解决方案,我还是决定用自己比较蠢的方法,毕竟虽然蠢,但是没有什么坑要踩。
|
|
ch2Aug 23, 2021
23
怎么方便怎么来
|
|
razertoryAug 23, 2021
24
订阅 binlog
|
|
masterclockAug 23, 2021
25
1. 又不是不能用
2. 带持久化的 mqtt,用 retained 的消息 |
|
C02TobNClov1Dz56Aug 23, 2021
27
这种用配置中心很香啊, 比如 nacos
|