写点什么

🌏【架构师指南】教你如何设计和规划系统架构(13 条)

发布于: 2021 年 06 月 12 日
🌏【架构师指南】教你如何设计和规划系统架构(13条)

架构设计原则和理论的 AKF 架构原则

前提概要


人在身处逆境时,适应环境的能力实在惊人。人可以忍受不幸,也可以战胜不幸,因为人有着惊人的潜力,只要立志发挥它,就一定能渡过难关。

N+1 设计 (N>=2)

对分布式技术体系而言,部署的服务节点永远不要少于两个,通常为三个。比方说无状态的 Web/API 一般部署至少>=2 个。最佳典型的案例就是:Zookeeper 的部署、Redis 的部署(Master-Slave 架构)、(Sentinel 架构)、(Cluster 架构)等。

回滚设计

确保系统可以回滚到以前发布过的任何版本。可以通过发布系统保留历史版本,或者代码中引入动态开关切换机制 (Feature Switch)。防止出现问题,只好可以留有后路,返回到上一个版本,不会影响系统服务使用。

禁用设计

能够关闭任何发布的功能。新功能隐藏在动态开关机制 (Feature Switch) 后面,可以按需一键打开,如发现问题随时关闭禁用。

监控设计

在设计阶段就必须考虑监控,而不是在实施完毕之后补充。例如在需求阶段就要考虑关键指标监控项,这就是度量驱动开发 (Metrics Driven Development) 的理念。

异地多活 IDC

不要被一个数据中心的解决方案把自己限制住。当然也要考虑成本和公司规模发展阶段。

技术体系

只用确实好用的技术。商业组织毕竟不是研究机构,技术要落地实用,成熟的技术一般坑都被踩平了,新技术在完全成熟前一般需要踩坑躺坑。

异步设计

能异步尽量用异步,只有当绝对必要或者无法异步时,才使用同步调用。以及尽可能减少阻塞和等待。

无状态化

尽可能无状态,当业务确实需要,才使用状态。无状态系统易于扩展,有状态系统不易扩展且状态复杂时更易出错。

水平扩展(而非垂直升级)

永远不要依赖更大、更快的系统。一般公司成长到一定阶段普遍经历过买更大、更快系统的阶段,即使淘宝当年也买小型机扛流量,后来扛不住才体会这样做不 scalable,所以才有后来的去 IOE 行动。

前瞻性

在扩展性问题发生前考虑好下一步的行动计划。架构师的价值就体现在这里,架构设计对于流量的增长要有提前量。

小构建、小发布和快试错

全部研发要小构建,不断迭代,让系统不断成长。这个和微服务理念一致。

隔离故障

实现故障隔离设计,通过断路保护避免故障传播和交叉影响。通过舱壁泳道等机制隔离失败单元 (Failure Unit),一个单元的失败不至影响其它单元的正常工作。

自动化

设计和构建自动化的过程。如果机器可以做,就不要依赖于人。自动化是 DevOps 的基础


发布于: 2021 年 06 月 12 日阅读数: 78
用户头像

我们始于迷惘,终于更高水平的迷惘。 2020.03.25 加入

🏆 【酷爱计算机技术、醉心开发编程、喜爱健身运动、热衷悬疑推理的”极客狂人“】 🏅 【Java技术领域,MySQL技术领域,APM全链路追踪技术及微服务、分布式方向的技术体系等】 🤝未来我们希望可以共同进步🤝

评论

发布
暂无评论
🌏【架构师指南】教你如何设计和规划系统架构(13条)