【总结】我的十二个架构设计原则
谨记
- 没有最好的架构,只有最适合的架构
- 好的架构不是设计出来的,是演进变化而来的
每一位架构师,在做架构设计时,都或多或少地会有一些自己架构设计原则。这里和你分享一些过去一直指导我的一些架构设计原则,希望对你有用。
我的十二个架构设计原则
1、N+1设计
系统中的每个组件都应做到没有单点故障
2、回滚设计
确保系统可以向前兼容,在系统升级时应能有办法回滚版本
3、禁用设计
应该提供控制具体功能是否可用的配置,在系统出现故障时能够快速下线功能
4、监控设计
在设计阶段就要考虑监控的手段
5、多活数据中心设计
若系统需要极高的高可用,应考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用
6、采用成熟的技术
刚开发的或开源的技术往往存在很多隐藏的bug,出了问题没有商业支持可能会是一个灾难
7、资源隔离设计
应避免单一业务占用全部资源
8、架构应能水平扩展
系统只有做到能水平扩展,才能有效避免瓶颈问题
9、非核心则购买
非核心功能若需要占用大量的研发资源才能解决,则考虑购买成熟的产品
10、使用商用硬件
商用硬件能有效降低硬件故障的机率
11、快速迭代
系统应该快速开发小功能模块,尽快上线进行验证,早日发现问题大大降低系统交付的风险
12、无状态设计
服务接口应该做成无状态的,当前接口的访问不依赖于接口上次访问的状态
SOLID原则(类的六大设计原则)
在设计模式中,有六大原则,简称SOLID原则:
- Single Responsibility Principle:单一职责原则
- Open Closed Principle:开闭原则
- Liskov Substitution Principle:里氏替换原则
- Law of Demeter:迪米特法则
- Interface Segregation Principle:接口隔离原则
- Dependence Inversion Principle:依赖倒置原则
“用抽象构建架构,用实现扩展细节。”
因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保证架构的稳定,而在软件中易变的细节,我们用从抽象派生的实现类来进行扩展。当软件需要发生变化时,我们只需要根据需求,重新派生一个实现类来扩展就可以了。当然,前提是抽象要合理,要对需求的变更有前瞻性和预见性。
- 单一职责原则:指导我们实现类要职责单一;
- 开闭原则:指导我们要对扩展开发,对修改关闭;
- 里氏替换原则:指导我们不要破坏继承关系;
- 迪米特法则:指导我们要降低耦合;
- 接口隔离原则:指导我们在设计接口的时候要精简单一;
- 依赖倒置原则:指导我们要面向接口编程;
把这六个原则的首字母连起来(L算做一个),就是SOLID原则(solid,稳定的)
其目的:利用好这六个原则,去建立稳定、灵活、健壮的设计
针对设计模式,这里推荐一本书:《设计模式之禅》,来自秦小波。刚一出版我就入手了,后面也翻了几次,当年对我的影响很大。各用法都非常详细,技术人员身边必备书之一,推荐读一下
其他
【架构】高可用高并发系统设计原则
【总结】服务端-高并发高可用设计原则/分布式架构演进过程
附加
- 微服务架构实战 - 我的经验分享总结2019(系统架构师)架构演进过程-从信息流架构到电商中台架构
- 电商中台架构图
- 【思考】你真的知道中台吗?
我的专栏
- 程序化广告实战专栏
- 高可用高并发实战专栏
- DevOps实战专栏
- SpringBoot系列专栏
- 微服务架构实战
-------------------------------
-------------------------------
我的CSDN主页
关于我(个人域名,更多我的信息)
我的开源项目集Github
期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢
欢迎交流问题,可加个人QQ 469580884,
或者,加我的群号 751925591,一起探讨交流问题
不讲虚的,只做实干家
Talk is cheap,show me the code
【总结】我的十二个架构设计原则相关推荐
- 架构师必须知道的架构设计原则
目录 一.前言 二.软件设计原则 GRASP通用职责分配软件模式 1. 信息专家(Information Expert) 2. 创建者(Creator) 3. 低耦合(Low Coupling) 4. ...
- 流行20年的架构设计原则SOLID可能已经不适合微服务了
点击上方"服务端思维",选择"设为星标" 回复"669"获取独家整理的精选资料集 回复"加群"加入全国服务端高端社群「后 ...
- 5.8架构设计原则案例分析
date comments categories tags permalink title 2020/3/15 true 软件架构 架构 原则 5.8 架构设计原则案例分析 前面介绍了架构设计的三条核 ...
- 20个MySQL高性能架构设计原则(收藏版)
墨墨导读:MySQL如何实现高性能?以下内容是结合其他技术同仁的总结和自我实践整理的20个开源数据库设计原则,分享至此,希望对大家有帮助. 开源数据库架构设计原则 01 技术选型 选择成熟的平台和技术 ...
- 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开
我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...
- 架构师必须掌握的架构设计原则
如果一个架构或设计原则已经存在 15 年,例如单一职责和依赖倒置原则,我可以预期它还有 15 年甚至更久的生命期.原则是比具体技术更抽象,更接近事物本质,也更经得起时间考验的东西.这些原则沉淀在架构师 ...
- 华为云业务架构设计原则
架构设计原则: 一.云服务高可用 开启ECS三大护盾:云备份CBR,云监控CES,企业主机安全HSS 反亲和性+HA:通过云服务器组配置ECS集群反亲和,并开启ECS自动恢复,即物理机故障自动冷迁出故 ...
- 详细设计 存储分配_万字长文:云架构设计原则(一)
译者序 AWS用户广泛,产品线复杂,AWS发布的白皮书<Architecting for the Cloud-AWS Best Practices>介绍了常见场景下云架构的最佳实践,不仅对 ...
- 基于AWS的云架构设计最佳实践——万字长文:云架构设计原则|附PDF下载
译者序 AWS用户广泛,产品线复杂,AWS发布的白皮书<Architecting for the Cloud-AWS Best Practices>介绍了常见场景下云架构的最佳实践,不仅对 ...
最新文章
- Spring基础专题——第五章(Aop代理)
- linux 和windows 下golang安装
- 在ASP.Net中使用FCKeditor
- linux rsync 带密码,Linux配置ssh无密码验证,rsync
- pythonimport是拷贝_02Python学习笔记之二.一【import、==和is、深浅拷贝】2019-08-17
- iOS平台快速发布HT for Web拓扑图应用
- c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...
- zblog音频MP3播放器插件
- 计算机程序制作的小作品,义乌市中小学生电脑作品制作比赛201203
- 苹果Mac 3D 建模渲染软件:Vectorworks
- 数据库架构 - 数据库设计是否要使用外键(转)
- android 朋友圈上传图片,微信朋友圈终于可以发图片评论了!
- IIS发布网站及网页显示设置
- 装黑苹果卡在苹果图标_虚拟机装MAC系统一直卡在苹果标志
- 【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理
- ASR项目实战-决策点
- win10 OCX控件的注册
- Android 设置铃声——给app设置自定义铃声功能
- matlab开关电源仿真软件,做开关电源,一般用什么仿真软件?
- 规划求解 python_使用Python/PuLp解决线性规划问题
热门文章
- 群雄逐鹿视频3.0时代,陌陌如何分杯羹?
- 「机箱」酷冷至尊 海王星II(RC-631)
- linux hadoop 关系,最全hadoop架构总结
- w ndows8系统没有声音怎么,Windows8没有声音怎么回事 Windows8没有声音解决方法
- Ubuntu下求生之路2Linux服务器搭建(官方战役,三方药抗)
- 计算机毕业设计SSM儿童闲置物品交易网站【附源码数据库】
- 小红书探店文案应该怎么写?探店文案好写吗
- 如何将Ubuntu安装 到移动硬盘--操作系统随身携带
- 妈,我又加班熬夜了,这次我真想你了
- Codeforces 940 F - Machine Learning(带修改莫队, 及注意事项)