谨记
- 没有最好的架构,只有最适合的架构
- 好的架构不是设计出来的,是演进变化而来的
每一位架构师,在做架构设计时,都或多或少地会有一些自己架构设计原则。这里和你分享一些过去一直指导我的一些架构设计原则,希望对你有用。
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,稳定的)
其目的:利用好这六个原则,去建立稳定、灵活、健壮的设计
针对设计模式,这里推荐一本书:《设计模式之禅》,来自秦小波。刚一出版我就入手了,后面也翻了几次,当年对我的影响很大。各用法都非常详细,技术人员身边必备书之一,推荐读一下
其他
附加
关于我(个人域名,更多我的信息)
期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢
欢迎交流问题,可加个人QQ 469580884,
或者,加我的群号 751925591,一起探讨交流问题
不讲虚的,只做实干家
Talk is cheap,show me the code