谨记

  1. 没有最好的架构,只有最适合的架构
  2. 好的架构不是设计出来的,是演进变化而来的

每一位架构师,在做架构设计时,都或多或少地会有一些自己架构设计原则。这里和你分享一些过去一直指导我的一些架构设计原则,希望对你有用。

我的十二个架构设计原则

1、N+1设计
系统中的每个组件都应做到没有单点故障

2、回滚设计
确保系统可以向前兼容,在系统升级时应能有办法回滚版本

3、禁用设计
应该提供控制具体功能是否可用的配置,在系统出现故障时能够快速下线功能

4、监控设计
在设计阶段就要考虑监控的手段

5、多活数据中心设计
若系统需要极高的高可用,应考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用

6、采用成熟的技术
刚开发的或开源的技术往往存在很多隐藏的bug,出了问题没有商业支持可能会是一个灾难

7、资源隔离设计
应避免单一业务占用全部资源

8、架构应能水平扩展
系统只有做到能水平扩展,才能有效避免瓶颈问题

9、非核心则购买
非核心功能若需要占用大量的研发资源才能解决,则考虑购买成熟的产品

10、使用商用硬件
商用硬件能有效降低硬件故障的机率

11、快速迭代
系统应该快速开发小功能模块,尽快上线进行验证,早日发现问题大大降低系统交付的风险

12、无状态设计
服务接口应该做成无状态的,当前接口的访问不依赖于接口上次访问的状态

SOLID原则(类的六大设计原则)

在设计模式中,有六大原则,简称SOLID原则:

  1. Single Responsibility Principle:单一职责原则
  2. Open Closed Principle:开闭原则
  3. Liskov Substitution Principle:里氏替换原则
  4. Law of Demeter:迪米特法则
  5. Interface Segregation Principle:接口隔离原则
  6. Dependence Inversion Principle:依赖倒置原则

“用抽象构建架构,用实现扩展细节。”

因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保证架构的稳定,而在软件中易变的细节,我们用从抽象派生的实现类来进行扩展。当软件需要发生变化时,我们只需要根据需求,重新派生一个实现类来扩展就可以了。当然,前提是抽象要合理,要对需求的变更有前瞻性和预见性。

  • 单一职责原则:指导我们实现类要职责单一;
  • 开闭原则:指导我们要对扩展开发,对修改关闭;
  • 里氏替换原则:指导我们不要破坏继承关系;
  • 迪米特法则:指导我们要降低耦合;
  • 接口隔离原则:指导我们在设计接口的时候要精简单一;
  • 依赖倒置原则:指导我们要面向接口编程;

把这六个原则的首字母连起来(L算做一个),就是SOLID原则(solid,稳定的)

其目的:利用好这六个原则,去建立稳定、灵活、健壮的设计

针对设计模式,这里推荐一本书:《设计模式之禅》,来自秦小波。刚一出版我就入手了,后面也翻了几次,当年对我的影响很大。各用法都非常详细,技术人员身边必备书之一,推荐读一下

其他

【架构】高可用高并发系统设计原则

【总结】服务端-高并发高可用设计原则/分布式架构演进过程

附加

  • 微服务架构实战 - 我的经验分享总结2019(系统架构师)架构演进过程-从信息流架构到电商中台架构
  • 电商中台架构图
  • 【思考】你真的知道中台吗?

我的专栏

  • 程序化广告实战专栏
  • 高可用高并发实战专栏
  • DevOps实战专栏
  • SpringBoot系列专栏
  • 微服务架构实战

-------------------------------

-------------------------------

我的CSDN主页

关于我(个人域名,更多我的信息)

我的开源项目集Github

期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢

欢迎交流问题,可加个人QQ 469580884,

或者,加我的群号 751925591,一起探讨交流问题

不讲虚的,只做实干家

Talk is cheap,show me the code

【总结】我的十二个架构设计原则相关推荐

  1. 架构师必须知道的架构设计原则

    目录 一.前言 二.软件设计原则 GRASP通用职责分配软件模式 1. 信息专家(Information Expert) 2. 创建者(Creator) 3. 低耦合(Low Coupling) 4. ...

  2. 流行20年的架构设计原则SOLID可能已经不适合微服务了

    点击上方"服务端思维",选择"设为星标" 回复"669"获取独家整理的精选资料集 回复"加群"加入全国服务端高端社群「后 ...

  3. 5.8架构设计原则案例分析

    date comments categories tags permalink title 2020/3/15 true 软件架构 架构 原则 5.8 架构设计原则案例分析 前面介绍了架构设计的三条核 ...

  4. 20个MySQL高性能架构设计原则(收藏版)

    墨墨导读:MySQL如何实现高性能?以下内容是结合其他技术同仁的总结和自我实践整理的20个开源数据库设计原则,分享至此,希望对大家有帮助. 开源数据库架构设计原则 01 技术选型 选择成熟的平台和技术 ...

  5. 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

    我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...

  6. 架构师必须掌握的架构设计原则

    如果一个架构或设计原则已经存在 15 年,例如单一职责和依赖倒置原则,我可以预期它还有 15 年甚至更久的生命期.原则是比具体技术更抽象,更接近事物本质,也更经得起时间考验的东西.这些原则沉淀在架构师 ...

  7. 华为云业务架构设计原则

    架构设计原则: 一.云服务高可用 开启ECS三大护盾:云备份CBR,云监控CES,企业主机安全HSS 反亲和性+HA:通过云服务器组配置ECS集群反亲和,并开启ECS自动恢复,即物理机故障自动冷迁出故 ...

  8. 详细设计 存储分配_万字长文:云架构设计原则(一)

    译者序 AWS用户广泛,产品线复杂,AWS发布的白皮书<Architecting for the Cloud-AWS Best Practices>介绍了常见场景下云架构的最佳实践,不仅对 ...

  9. 基于AWS的云架构设计最佳实践——万字长文:云架构设计原则|附PDF下载

    译者序 AWS用户广泛,产品线复杂,AWS发布的白皮书<Architecting for the Cloud-AWS Best Practices>介绍了常见场景下云架构的最佳实践,不仅对 ...

最新文章

  1. Spring基础专题——第五章(Aop代理)
  2. linux 和windows 下golang安装
  3. 在ASP.Net中使用FCKeditor
  4. linux rsync 带密码,Linux配置ssh无密码验证,rsync
  5. pythonimport是拷贝_02Python学习笔记之二.一【import、==和is、深浅拷贝】2019-08-17
  6. iOS平台快速发布HT for Web拓扑图应用
  7. c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...
  8. zblog音频MP3播放器插件
  9. 计算机程序制作的小作品,义乌市中小学生电脑作品制作比赛201203
  10. 苹果Mac 3D 建模渲染软件:Vectorworks
  11. 数据库架构 - 数据库设计是否要使用外键(转)
  12. android 朋友圈上传图片,微信朋友圈终于可以发图片评论了!
  13. IIS发布网站及网页显示设置
  14. 装黑苹果卡在苹果图标_虚拟机装MAC系统一直卡在苹果标志
  15. 【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理
  16. ASR项目实战-决策点
  17. win10 OCX控件的注册
  18. Android 设置铃声——给app设置自定义铃声功能
  19. matlab开关电源仿真软件,做开关电源,一般用什么仿真软件?
  20. 规划求解 python_使用Python/PuLp解决线性规划问题

热门文章

  1. 群雄逐鹿视频3.0时代,陌陌如何分杯羹?
  2. 「机箱」酷冷至尊 海王星II(RC-631)
  3. linux hadoop 关系,最全hadoop架构总结
  4. w ndows8系统没有声音怎么,Windows8没有声音怎么回事 Windows8没有声音解决方法
  5. Ubuntu下求生之路2Linux服务器搭建(官方战役,三方药抗)
  6. 计算机毕业设计SSM儿童闲置物品交易网站【附源码数据库】
  7. 小红书探店文案应该怎么写?探店文案好写吗
  8. 如何将Ubuntu安装 到移动硬盘--操作系统随身携带
  9. 妈,我又加班熬夜了,这次我真想你了
  10. Codeforces 940 F - Machine Learning(带修改莫队, 及注意事项)