前言
昨天在想一个问题,对于💰,我在消费的时候的时候会有一个比较精准的预算。但是对于⌚️,
我在消费的时候却只是有一个大概范围,更加随意。想了一下,大概是潜意识里就认为,金钱是一个更强外部的约束,更难以获得;时间是一个更软化的内部约束,并且随着时间增加,时间就自动增加。而本质是时间比金钱宝贵的多
时间的概念非常之抽象,甚至比抽象的概念更抽象,比如说抽象概念学习,快乐、学习,快乐、学习都是抽象的概念,而你会联想到相关的内容,快乐:遇到喜欢的女生、看到好看的风景;学习:教室里上课、12点了还在做作业。可是想到时间,你会想起什么呢?时间太宽泛了,它是我们一切生活的载体,而人类更善于具体的问题。
总之,昨晚跟Zelda 🎮 battle 失败了,今天接着修炼吧
Soul网关WebSocket数据同步
首先明确一点,数据同步参与方是两端:client端(bootstrap) server端(admin)
admin 建立websocket通信
DataSyncConfiguration --> WebsocketListener --> WebsocketCollector
DataSyncConfiguration: 作为 Spring Bean 的配置工厂, 可以根据配置信息, 构建各类监听器(Listener), 包括 HTTP 长轮询方式、Zookeeper 方式、Nacos 方式、Websocket方式
WebsocketListener: 作为 DataSyncConfiguration 的内部类, 负责 websocket 监听器初始化.
WebsocketCollector: 监听 websocket 连接及接收信息, 维护所有连接后台的 session 会话, 提供 send() 方法通知 session 信息.
Soul网关作者--猫大人的命名规则做的很好,WebsocketCollector 看名字就知道是websocket 的连接的一端
bootstrap 建立websocket通信
WebsocketSyncDataConfiguration --> WebsocketSyncDataService --> SoulWebsocketClient --> WebsocketDataHandler --> AbstractDataHandler
WebsocketSyncDataConfiguration: 作为 Spring Bean 的配置工厂, 是网关端构建 Websocket 通信的入口. (独立出一个启动项目 soul-spring-boot-starter-sync-data-websocket , 供网关自由选用)
WebsocketSyncDataService: 获取所有注册为 Bean 的 WebsocketConfig 以及各种 DataSubscriber 订阅器, 构建实现了 WebsocketClient 的 SoulWebsocketClient 列表
SoulWebsocketClient: Websocket 通信类, 监听 websocket 连接及接收信息, 在接收到后台传来的信息后会通知各个订阅器.
WebsocketDataHandler: 初始化时构建各类实现 AbstractDataHandler 的数据处理类并缓存.