关于微服务:分享架构设计模板

1次阅读

共计 1677 个字符,预计需要花费 5 分钟才能阅读完成。

原文首发于我的博客:https://kaolengmian7.com/post…
PC 端拜访我的博客能够取得最优质的浏览体验同时也能够翻阅我的其余博文。


最近一年的工夫内,我参加了很多后端根底组件的设计、重构、重写、微服务化等工作,写了很多设计文档、与共事开了很屡次技术研讨会,始终以来没有总结一套工作模板,以至于在散会时总有脱漏。明天我的敌人分享给了我一套架构设计模板,我针对文档做了一些总结,分享给大家:

他的知乎主页:蜗牛 Snail,文章写的挺好,值得大家去逛逛。

总体来说,一个欠缺的设计须要考虑一下 11 个方面:

1. 需要介绍
2. 架构总览
3. 外围流程
4. 具体设计
5. 高可用设计
6. 高性能设计
7. 可扩大设计
8. 平安设计
9. 其余设计
10. 部署计划
11. 架构演进布局

这 11 条既能够作为咱们写设计文档时的 CheckList,也能够间接用来做题纲,上面咱们具体说说具体要做什么。

需要介绍

需要介绍次要形容需要的背景、以及新零碎想要达成的指标。
比方我在设计公司 用户动静与 Websocet业务时提到:旧动静零碎提早过高、过程池过程数量无限,有时会呈现工作卡死的状况,须要手动重启零碎能力临时复原(不能根治),导致用户动静推送业务极不稳固。新零碎的指标是为了改善这一状况,保障动静业务稳定性。
再比方我在设计公司自动化部署在线文档时提到:旧文档由各个开发人员在本地生成,上传到 Git 时可能有抵触、且不不便人员查看,所以筹备部署一个在线文档,开发人员编写好文档后主动生成在线文档,不便查阅。
总结就是三个关键点:哪里有问题、想怎么解决问题、能达到什么成果。

架构总览

架构总览的 核心内容是架构图,以及针对架构图的形容,包含模块或者子系统的职责形容、外围流程。

架构图的画法没有严格要求,惟一的要求就是易懂。集体倡议 Figma 和 ProcessOn 二者联合应用。

能够给大家瞧瞧我当初做 WordPress 站点 CDN 优化的架构图:
再给大伙看看我利用 Github Action、DroneCI/CD、Docker、K8s 做的自动化在线文档:

有了架构图的撑持,会大大降低技术研讨会解说的难度,十分实用。

外围流程

外围流程的次要工作是针对下面的架构图解说各个要害组件是如何工作的、数据的流向与解决形式等等,简单的业务最好给出 时序图。
集体认为架构图和时序图是最重要的两个图,让整个系统结构和解决逻辑高深莫测,配合口头解说十分易懂。

具体设计

对于一些比较复杂的小组件 or 小设计,须要额定写一些具体设计文档,升高共事了解代码的老本。
比方我在设计分布式惟一 Id 生成器时具体介绍了 双 Buffer 优化 这个小设计:

1. id 容器采纳双 buffer 实现,目标是避免某一个申请进来凑巧桶内没数据须要申请 mysql 从而造成高提早的状况。(buffer 容量可配置)
2. 双 buffer 的切换逻辑为:以后承当发号工作的 buffer 余额 < 20%,劳动状态的 buffer 曾经填充结束(isReady)。

高可用设计

解说零碎设计是怎么思考高可用这个指标的。比方数据库宕机怎么办?数据一致性如何解决?数据失落怎么办?缓存的计划?出 Bug 如何补救?如何 Debug、如何排查线上问题?性能指标、业务指标监控该怎么做?
这块内容的要诀有两个:一是要联合具体情况,二是要多积攒教训。

高性能设计

解说零碎设计是怎么思考高性能这个指标的。此外还能够提一提压力测试计划、指标 QPS 等等。

可扩展性设计

解说零碎设计是怎么思考扩展性这个指标的。

平安设计

比方权限管制。如果没有能够填“无”,然而不能不写,这表明咱们是有思考安全性的,在研讨会时说不定有共事会补充。

其余设计

能够写一写应用的语言、框架、库等等。也能够是公司团队外部的一些标准。

部署计划

当初基本上都是 K8s 部署,能够讲讲是用 Stateful 部署还是用 Deployment 部署。正本数量设计,生产环境多少个正本、灰度环境多少个、测试环境多少个。

架构演进打算

如果是小我的项目不必写,如果是大型项目那大概率不能一下子全部实现。这时候就要分步骤、分期实现。能够写写第一期要实现 xxx、第二期要 xxx 相似这样的指标。

正文完
 0