云技术多领域实用指南
消息处理与状态管理
在消息处理时,为避免写入重复内容,可在处理前执行清理操作。对于不允许更新的存储系统,可能需要定制解决方案。不过,有时重复结果并非大问题,比如统计网页点击量时,不一定要精确数字。
当消息在特定时间后处理变得无关紧要时,应将该信息包含在消息本身(最好在头部)。多数消息系统都有头部(或属性)的概念,可将元数据附加到消息负载上,消费者就能丢弃旧消息。
有状态服务器会跟踪已处理的消息,这些消息应通过元数据而非负载本身来识别,这对区分重复消息和具有相同负载的消息很重要。创建消息时,可附加一个标识符属性以明确标识重复项。
若存在一个时间窗口,过了该窗口就无需处理消息,可创建一个生存时间头部,以便遗忘旧消息,减少状态维护和检查消息是否已处理的工作量。如果状态存储在临时结构中,有状态服务器和无状态服务器适用相同规则。若状态丢失或不完整,服务可能无法察觉收到的是重复消息。当一个有多个实例的服务并行处理消息时,可能需要借助数据库在它们之间共享状态,状态持久化堆栈的选择取决于可靠性/性能轴。
软件开发者的核心使命
软件开发者的核心使命并非仅仅是交付应用和服务。应用和服务只是一种媒介,开发者真正的业务是为用户提供不间断的“神奇时刻”。
就像玩《超级马里奥兄弟》时获得火焰花道具的那一刻,玩家从普通操作转变为充满乐趣地发射火球,这种体验就是“神奇时刻”。开发者应从解决像素动画或销售问题的思维,转变为通过软件传递无限可能的感觉。
开发者要设计这些“神奇时刻”,搭建连接它们的桥梁,并消除干扰其流畅性的因素。虽然在软件开发过程中会涉及代码重构、微服务架构设计等工作,但这些
超级会员免费看
订阅专栏 解锁全文
2823

被折叠的 条评论
为什么被折叠?



