Architecture(一)架构简介

引言

  • 架构的设计在软件设计中极为重要,一个好的架构设计能够成倍提升开发和运维效率、提升产品的交付能力;
  • 架构设计的思路和软件编程有很大不同,这不仅仅体现在所需知识的不同、而且思维模式和设计理念也各不相同;
  • 在工作之余,我认真学习了极客时间的从0开始学架构课程,受益匪浅;
  • 接下来我会用若干篇幅的博客展示一下学习笔记,欢迎大家指教;
  • 本文对架构设计的原则和目的加以总结;

架构设计的目的

  • 目的:解决软件系统复杂性带来的问题;
  • 核心:balance;
    • 平衡希望系统高性能、高扩展性和时间成本、开发成本之间的矛盾;
    • 对各种设计的优缺点做取舍;

架构设计原则

  • 合适优于业界领先:很适合别的系统的架构,不一定适合当前项目,不是每个系统都需要架构设计;
  • 简单优于复杂:架构设计不是为了片面追求系统的高可用性、高扩展性、高性能,而是最适合业务的实际情况;
  • 演化优于一步到位:架构是演化出来的,而不是设计出来的,谁都不可能在刚开始开发的时候、业务需求不明确的时候设计出完整的架构;

架构设计需要考虑

  • 高性能:
    • 单机:充分利用CPU、disk、memory、IO等资源;
    • 集群:如何扩展单机的处理能力,满足业务需求,比如春节发红包、双十一等;
  • 高可用:
    • 保证服务不间断正常运行;
    • 应对:硬件故障,软件故障、网络故障,外部故障(水灾地震);
    • 保证高可用的核心:冗余;
  • 可扩展性:
    • 正确预测变化、完美封装变化;
    • 所有的预测都存在出错的可能性;
    • 适度的预测而不是完美的预测;
  • 安全性;
您的支持是对我最大的鼓励!