导航
导航
文章目录
  1. 前提
  2. 业务架构
    1. 可扩展架构
    2. 可复用架构
  3. 技术架构
    1. 高可用架构
    2. 高性能可伸缩架构
  4. 总结

架构实战案例解析读书笔记

前提

架构的本质:

通过合理的内部编排,保证系统高度有序,能够不断扩展,满足业务和技术的变化

一个好的架构设计既要满足业务的可扩展、可复用;也要满足系统的高可用、高性能
和可伸缩,并尽量采用低成本的方式落地。所以,对架构设计来说,技术和业务两手都要
抓,两手都要硬。

什么是好的架构师?

  • 必定是一个出色的程序员,写的一手好代码
  • 技术广度和深度
  • 思维高度,具备抽象思维能力
  • 思维深度,透过问题看本质
  • 良好沟通能力
  • 平衡取舍能力

业务架构

业务架构目标:

可扩展和可复用

可扩展架构

何为系统?即 模块 + 关系

如何打造可扩展架构

通过构建合理的模块体系,有效的控制系统复杂度,最小化业务变化引起的系统跳转

具体方法有通过拆分,实现模块划分;通过整合,优化模块依赖关系

案例一电商平台的架构演化

单体架构->分布式->soa->微服务->中台

可复用架构

分为技术复用、业务复用

技术复用:

代码复用有自己打包的类库,第三方提供的 SDK,还有各种算法封装等

复用有我们自己封装的,更多的是大量开源的中间件比如MQ、redis

业务复用:

业务实体复用、业务流程复用和产品复用

具体方法有先划分基础服务边界,三个原则

完整性原则、一致性原则、正交原则

案例一如何设计一个基础服务

案例二如何对现有系统做微服务改造

案例三中台如何练成

技术架构

系统的物理模型图5大类

  • 接入系统:主要包括DNS域名解析、负载均衡、web服务器
  • 应用系统:java服务框架比如spring
  • 基础平台:jvm、操作系统、网络等
  • 核心组件:数据库、缓存、rpc等
  • 支撑系统:运维系统比如监控、日志等

技术架构的目标:

解决系统非功能性问题,系统的高可用高性能和低成本等;

高可用架构

系统的故障的解决思路

避免发生:我们可以通过不间断电源来避免服务器断电,可以通过事先增加机器来解决硬件资源不足的问题。

故障转移:冗余部署代替问题节点。

降低影响:流量太大,我们可以通过限流,或者通过业务降级的手段,关闭一些次要功能,保证核心功能仍旧可用。

快速恢复:处理线上事故的首要原则是先尽快恢复业务,而不是先定位系统的问题。

高可用架构原则:

冗余无单点

水平扩展

柔性事务:在很多业务场景中,系统的可用性比数据的实时一致性更重要

系统可降级:限流 降级 功能禁用 熔断

系统可监控

高可用手段:

客户端 -> 接入层

首先要解决网络的可用性问题,可以选择 Nginx、HAProxy、LVS 等负载均衡软件,它们都能很好地支持双节点 +Keepalived 部署(通过冗余和自动切换避免了单点的故障

接入层 ->Web 应用

部署多个实例,很方便地通过水平扩展的方式,提升系统的处理能力,接入层的负载均衡设备,还可以在接入层做限流(水平扩展、自动故障转移以及系统的可降级

Web 应用 -> 内部服务

部署多个实例进行水平扩展,请求分发,熔断框架

访问基础资源

关系数据库读写分离,分库分表,使用缓存等

案例一o2o平台24小时在线

案例二如何第一时间知道系统哪里有问题

案例三打造一体化监控

高性能可伸缩架构

高性能策略

优化单个请求处理速度,请求处理异步化。

可伸缩策略

总结

架构原则

  • 可回滚/可禁用
  • 使用成熟的技术
  • 使用同质化硬件