架构 4月前

七十二变变架构法:为什么需要架构?

作者头像 刘宇帅
938 0

什么是架构

架构是一系列高层次的设计决策,用来平衡系统在功能与非功能上的需求。

这句话包含几个关键点:

  1. 高层次决策:架构并不是细枝末节的代码实现,而是决定系统整体形态的核心选择。例如,选单体还是微服务?数据存储用关系型还是 NoSQL?
  2. 功能需求:满足业务逻辑,能“做对的事”。
  3. 非功能需求:性能、可扩展性、可维护性、安全性、可靠性等。往往这些是架构师最需要权衡的部分。
  4. 平衡:没有完美的架构,所有决策都伴随取舍(trade-off)。比如,高一致性往往牺牲性能,高性能有时会降低可维护性。

为什么需要架构

很多同学在开发的时候,会觉得“直接写就好了,为什么要架构?”——但当系统复杂度越来越高时,架构的意义就越来越重要了。 架构存在的意义是当系统越来越复杂的时候,让整个系统依然可控。

  1. 应对复杂度:一个单体项目,可能最初只有几千行代码,但快速膨胀到几十万行时,如果没有架构设计,任何一个小的改动都可能牵一发而动全身。
  2. 保障非功能性:业务逻辑可以用代码写出来,但性能、稳定性、扩展性则需要从一开始通过架构来设计。
  3. 团队协作:架构为团队提供了统一的“蓝图”,让不同的人能够在同一套框架下协作,而不至于各自为政。

师父是目标——必须保到西天;
我呢,能打妖怪——保证性能和安全;
你负责挑担子——搬数据、搬逻辑;
沙僧是运维,保证大家饿不死、渴不着。
这就是一个架构设计:分工明确、职责清晰、能扛事儿。

三个层次的架构

  1. 宏观架构(系统层)
    • 例子:单体架构、SOA、微服务、Serverless
    • 决策:系统如何划分模块,如何通信,整体运行方式是什么。
  2. 中观架构(子系统层)
    • 例子:服务如何分层(Controller-Service-DAO),缓存如何接入,数据库如何分库分表。
    • 决策:模块之间如何依赖,数据流与调用链如何组织。
  3. 微观架构(组件层)
    • 例子:如何处理日志,如何做鉴权,如何保证幂等性。
    • 决策:某个组件或模块的内部设计。

好的架构不是完美的架构,而是合适的架构——合适业务阶段、合适团队规模、合适未来演进方向。作为架构师或开发者,面对架构时需要具备以下思维:

  1. 需求导向:架构不是炫技,而是为了解决实际问题。
  2. 权衡取舍:在性能、成本、可维护性、安全性之间找到平衡。
  3. 演进思维:系统初期可能是单体,后期逐渐服务化,最后再分布式。不要一开始就追求“大而全”。

架构不是抽象的空谈,而是指导我们如何在复杂系统中做出清晰、高层次的决策。它既关乎技术选择,也关乎团队协作和业务发展。

喜欢本文的朋友们,欢迎大家关注我~

作者头像

刘宇帅

非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。

提示

功能待开通!


暂无评论~

相关文章

分布式架构之CAP理论/AP架构/CP架构

在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistency) (等同于所有节点返回的数据都是一致的) 可用性(Availability)(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据) 分区容错性(Partition tolerance)(大部分分布式系统都不能在时限内达成数据一致性,就意味分布式系统一定会发生了分区的情况。这就是再分布式系统中 P 是一定该发生的,那么 A 和 C 我们只能选择一个。) Zoopk

全链路压测调研

什么是全链路压测 使用真实生产业务场景、在真实的生产系统环境下根据历史用户访问记录构造海量用户请求对整个业务链进行压力测试并生成报告,根据报告持续调优的过程。 为什么要全链路压测 我们针对单机器单系统的压测虽然可以掌握单个机器或服务的服务能力但是并不能依此来推测整个系统的服务能力,因为任何一个具体的业务系统都可能在系统容量、业务代码性能、物理机器、网络、中间件和各个系统之间调用或具体的业务流程中等等任何一点上存在瓶颈进而导致真个业务系统的服务能力下降,而这些众多的点我们没办法去确定具体那个点会成为瓶颈,我们只能通过全链路压测来测试服务能力找到瓶颈,因为我们要服务于用户而全链路压测的流量正是 m

网站架构之负载均衡方案

什么负载均衡 当我们单台的服务器无法支持用户请求的时候就需要把机器扩充到几台、几十台甚至几百台,而当用户请求到的时候我们合理的把用户请求分发到各个服务器,这就是负载均衡。负载均衡要理解最重要的一点,我这里用了“合理的分发”而不是平均分发,因为负载均衡并不是简简单单的均分流量,我们需要考虑到不同的服务器硬件配置、网络情况来合理的分配分配流量以达到各个服务器均不超载、合理利用集群资源达到最佳的服务质量。当然当我们用多台服务器做负载均衡时一般会选用相同规格的机器,但是不排除网络延迟、机器突发故障灯引起的单台服务器负载飙升处理能力下降等情况。 网站架构中负载均衡的应用 从图中可以看到网站中对负载均衡

20190117 负载均衡分享

什么是负载均衡 负载均衡就是用多台服务器对外提供单一服务,通常用于提高网站、应用、数据库或其他服务的性能和可用性,负载均衡是高可用网络架构的关键组件。 没有负载均衡的架构 有负载均衡的架构 为什么要负载均衡 配置再强的服务器都有服务上限,当单台的服务器无法支持所有用户请求的时候就扩充机器到到几台、几十台甚至更多来提供服务,这个时候需要我们合理的把用户请求分发到各个服务器,这就是负载均衡。 负载均衡要理解最重要的一点,我这里用了“合理的分发”而不是平均分发,因为负载均衡并不是简简单单的均分流量,我们需要考虑到不同的服务器硬件配置、网络情况来合理的分配分配流量以达到各个服务器均不超载、合理利用

搜索引擎调研

定义 搜索引擎(search engine)是一种信息检索系统,旨在协助搜索存储在计算机系统中的信息。搜索结果一般被称为“hits“,通常以表单的形式列出。网络搜索引擎是常见、公开的一种搜索引擎,其功能为搜索互联网上储存的信息。 工作方式 搜索引擎为一组项目提供一个接口,使用户可以指定关于感兴趣的项目的标准,并让引擎找到匹配的项目。搜索查询通常表示为识别一个或多个文档kennel包含的期望概念的一组单词。有多种样式的搜索查询语法在严格性上有差异。它也可以在以前的站点中搜索搜索引擎中的名称。而一些文本搜索引擎要求用户输入由白色空格分割的两个或三个字,其他搜索引擎可以使用户能够指定整个文档,图片,