一个滚动重启的状态保存问题
Created|Updated
|Word Count:157|Reading Time:1mins|Post Views:
很多时候滚动重启,都会导致状态丢失。比较好的设计方法是把服务本身设计成无状态的,然后在上游的服务上做好 failover,然后增加 standby server,让 sticky 数据 transmit 到 standby 机器上,让 request 失败以后可以自己由上游重传到 standby server。然后就可以滚动重启了。
这大部分场景下还要考虑幂等的问题。
这就看得出热配置热替换的重要性了。在大多数情况下,除了发布新的 feature 升级以外,都应该尽量用热配置来避免重启。
Author: magicliang
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2022-01-19
Gergely Orosz 文章翻译-软件架构被高估,简明设计被低估
原文链接:《Software Architecture is Overrated, Clear and Simple Design is Underrated》

2022-03-18
如何写业务代码
业务研发面对的问题 稳定的业务模式 不稳定的需求 业务对交付的渴望 假设 命名规范(《clean code》) 面向对象设计(SOLID原则、贫血/充血模型、设计模式) 系统要拆分 流程控制系统与领域系统.drawio 每一个用例(解决的一个问题)都由访问逻辑和执行逻辑组成。访问逻辑负责用例执行的顺序与分支,并调用执行逻辑完成完整业务逻辑。 访问逻辑由单独的交易系统负责。执行逻辑由个子系统负责。 工程要拆分 三层架构 + 洋葱架构 代码要拆分 业务代码:描述核心业务逻辑的代码,核心是保持业务的流程及业务状态的一致性 领域对象与领域服务,不得对外部有任何依赖(工具类除外) 最核心的几个抽象: 校验:参数有效性校验、参数的业务属性校验。在进入正常业务逻辑代码前,完成所有的校验工作。 异常:业务异常:所有不符合业务逻辑而产生的异常。 系统异常:因为程序本身or依赖产生的异常。 所有的异常第一位runningtime异常。 数据: 业务数据:保存领域对象状态的数据。 非业务数据:过程数据。业务的核心流程中,只对业务数据的持久化负责。 参数:任何时候,任何方法的参数都需要...
2019-09-05
《应用架构之道》笔记
架构师的职责 化繁为简。架构师是职责就是把复杂的问题简单化,使得其他人能够更好地在架构里工作。 架构师要努力训练自己的思维,用它去理解复杂的系统,通过合理的分解和抽象,做出合理的设计。 软件架构 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件的链接则明确和相对细致地描述组件之间的通信。 软件架构为软件系统提供了结构、行为和属性的高级抽象。,由构件的描述、构件的相互作用、指导构件集成的模式以及这些模式的约束组成。软件架构不仅显示了软件需求和软件结构之间的对应关系,而且指定了整个软件系统的组织和拓扑结构,提供了一些设计决策的基本原理。 软件架构的核心价值应该只围绕一个核心命题:控制复杂性。 软件架构分类 业务架构:由业务架构师负责,也可以称为业务领域专家、行业专家。业务架构属于顶层设计,其对业务的定义和划分会影响组织结构和技术架构。 应用架构:由应用架构师负责,他需要根据业务场景的需要,设计应用的层次结构,制定应用规范、定义接口和数据交互协议等。并尽量将应用的复杂度控制在一个可以接受的水平,从而在快速的支撑业务发展的同时,在保证系统的可用性和可维...

2022-01-07
如何写复杂业务系统
引言 本文只是一家之言。 本文是一系列文章的缩略版本(完整版只写了个开头),尽量只讲具体的东西,如果有东西太干了,没有具体的“体感”,是作者的责任。 不喜欢看纯理论分析的可以跳到单一系统层次和模块设计(大多数人可能更加关注这一节,其实前面的部分更重要)。 几个很干的原则 解决复杂问题要用高级思维,不要用低级思维。 蚂蚁/ebay 等若干家企业架构师四大原则 - 听过的可以往下跳: 分治(其他所有原则都是从分治里衍生的) 分层 抽象 演化 solid 5 原则很重要很重要 -很多人读过,很多人可能没有读过,温故知新很重要。 注重过程质量,拿到结果质量。 业务系统为什么难写? 纯粹的业务驱动:技术的输入和决策完全来源于业务同事,甚至只受业务摆布的团队,架构容易混乱 业务又不懂架构、业务又不懂功能点罗列的合理性,业务只会往技术团队身上扔需求。 怎么把需求和实现分门别类是技术自己的事情。 但技术人员如果一直都很忙,没有自己的空闲时间或者对设计洁癖的坚持,慢慢地就会养成“把需求翻译成代码,然后往老的系统里面扔”(混乱根源 1)的坏习惯- 问题:翻译只是普通的低级思维,不能解决很复杂...
2022-01-17
如何成为一名优秀的架构师
成为一个架构师:为了这一刻,你准备了多久? 架构师的关注点:顶层设计、长期视角。 寿命:数据 > 代码(特指业务逻辑)> 技术(特指业务逻辑的载体) 不是传道受业,而是观点分享。 架构师的几种 profile:有架构能力、以架构为生也是一种架构师。 长期战略:对于任何一家公司,架构设计一定是必要的,而且需要自行解决。架构师的职责是保证组织拥有正确的设计,控制复杂度。 架构师的关键特质: 目标正确:限制条件和目标价值产生理解偏差。是架构师最常见的问题。 能力满足:为组织带来更好的外部适应性。 持续减熵:好架构等于发现、规划和演化。 思考深度和实战经验最重要:这是任何的书本都不能带给我们的。包容、求真、良知、勇气。 有没有德?考虑组织长期利益(基于良知做判断)。 有没有勇气?承担责任,决定命运。 有没有眼光?是否擅于思考? 独立、理性、有深度的思考。长期感召力,来自于良知、成功、经验和勇气。 从复盘中学习。 郭东白.pdf

2022-01-12
《架构师修炼之道》
刻戒于碑,铸法于鼎 软件特性、质量属性。 将两个元素以某种方式连接在一起,就形成了结构。 module component-connector 就是我们经常讲的系统交叉点 allocation 就涉及到我们的部署设计 每一本书都会讲到利益相关者,也就是 stakeholder。 主动撰写设计决策,承担设计职责。 软件之所以叫软件,是因为它灵活而易于变动。架构是软件里硬的部分,为变动提供了章法,也制造了约束-否则我们不用经常“对架构产生冲击”,而需要打破架构。 设计原则: 以人为本(能落地能产生价值的架构才是真的好架构) 推迟决策 善于借鉴 化虚为实 推迟决策不是推迟大的设计决策,要推迟的是细枝末节的决策。不要陷入舍本逐末的优化中,导致项目无法受控。 忽视前人的设计,是最低效的设计方法之一。所以寻找架构风格是很重要的。 设计思维模式: 理解:换位思考 探索:尝试各种结构组合,找到最能提升目标质量属性的那种组合。-大多数情况下,是我们手头最简单最现成的解决方案。 展示:用图、表、模型、原型来展示,探讨。原型应该尽量具有交互性,可以直接和客户评审。 评估:评估到底我们要做什么东西...


