跳到主要内容

如何成为一名架构师

· 阅读需 6 分钟
ahKevinXy

一个好的架构必须满足两方面挑战:业务复杂性和技术复杂性。

  1. 业务架构
  2. 应用架构
  3. 技术架构

业务架构就是讲清楚核心业务的处理过程,定义各个业务模块的相互关系,它从概念层面帮助我们理解系统面临哪些问题以及如何处理;而应用架构就是讲清楚系统内部是怎么组织的,有哪些应用,相互间是怎么调用的,它从逻辑层面帮助我们理解系统内部是如何分工与协作的。

技术架构就是讲清楚系统由哪些硬件、操作系统和中间件组成,它们是如何和我们开发的应用一起配合,应对各种异常情况,保持系统的稳定可用。所以,技术架构从物理层面帮助我们理解系统是如何构造的,以及如何解决稳定性的问题。

什么是架构师

  1. 沟通家里
  2. 抽象思维
  3. 多领域知识
  4. 技术前沿性
  5. 平衡取舍

产品经理的职责就是:告诉用户,系统长什么样子;告诉开发,他要实现什么功能。

业务架构师的职责

架构的目标

  1. 业务的可扩展性
  2. 业务的可复用性

如何实现业务的可扩展性

系统的构成: 模块 + 关系

  • 模块

从业务的角度看,每个模块都代表了某个业务概念,或者说业务领域

模块内部由数据和业务逻辑组成,其中数据是核心,业务逻辑围绕着数据,对数据做进一步加工,方便外部使用。

  • 依赖关系 依赖关系实质上体现的是模块的组织结构。

  • MVC 架构

    • 表示层 对应的前端模块
    • 应用层 对应和前端表示层直接关联的服务端
    • 聚合服务层
    • 基础服务层

架构的转变

  1. 单体架构
  2. 分布式架构
  3. SOA架构 面向服务的架构
  4. 微服务架构

系统故障

  1. 资源不可以
  2. 资源不足
  3. 节点功能异常

如何避免故障

  1. 冗余无单点
  2. 水平扩展
  3. 柔性事务
  4. 系统可降级性 (限流,降级,熔断,功能禁用)
  5. 系统可监控

日活百万系统如何架构设计

前端改造

  • web 端cdn优化
  • nginx 负载均衡
  • 通信线路备份 (前置代理机)

应用和服务的水平扩展

  • 订单水平分库
  • 异步化处理
  • 主动通知 避免轮询
  • 缓存的使用
  • 一体化监控

如何做好系统监控

  • 用户体验 指的是从前端用户的访问速度出发,来监测系统的可用性,包括页面能否打开、关键接口的响应时间等等,用户体验监控一般结合前端的埋点来实现。
  • 业务监控 从业务结果的角度来看,比如说订单数、交易金额等等,业务监控也是最直观的,我们知道,如果业务数据没问题,系统整体也就没有问题
  • 应用监控 指的是对自己开发的代码进行监控,比如接口在一段时间内的调用次数、响应时间、出错次数等等
  • 中间件监控 的是对标准中间件进行监控,它是第三方开发的代码,比如数据库、缓存、Tomcat 等等,这些组件对应的是系统的 PaaS 层
  • 基础平台监控 (操作系统/服务器/网络) 的是对系统底层资源进行监控,如操作系统、硬件设备等等,这个层次的监控对应的是系统的 IaaS 层

如何打造一体化的监控系统

  • 节点信息采集
  • 接入监控系统

常用系统参数

pt

如何分库分表

  • 垂直分库 垂直分库就是数据库里的表太多,我们把它们分散到多个数据库
  • 水平分库 单个数据库存储不下,或者数据库的读写性能有压力。通过水平分库,我们把一张表拆成多张表,每张表存放部分记录,分别保存在不同的数据库里,水平分库需要对应用做比较大的改造。

分库策略