【成为架构师2-2】伪分布式与垂直拆分:快速解决单机性能问题的实践方案

系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。

1 架构演进阶段的新需求

原始的All in one 的单机系统无法满足需求,将会主要暴露出以下两个问题

  1. 访问人多的时候,访问能够快一点 (性能问题)
  2. 部分出错的时候不要全部挂掉 (耦合问题)

2 单机资源瓶颈产生时的环境

  1. 此时最大的成本,是时间成本
  2. 能用“钱”解决的系统问题,往往不是问题
  3. 老板最不愿意见到的,是解决一个系统问题,花很长时间(市场和投资人等不起)

解决思路:增加硬件资源(时间短),避免大规模代码重构(时间长)

3 架构演进,伪分布式,提升性能

三大分离结构(图中仅两种)

在这里插入图片描述

  1. 读写分离(会引发主从延时的问题
  2. 动静分离,图中表现了文件服务器(第三方的OSS也是)与业务逻辑的服务器分离;现代前端,像vue就是动静分离的,对比古典的jsp,就无法实现动静分离
  3. 前后台分离,客户端访问与后台管理访问分离
设计思路

用最快的速度,增加硬件资源,提升系统性能,增加访问速度

什么问题没有解决
  1. 耦合问题:依旧是一个挂了全部就挂了
  2. 主从延时新问题
  3. 读写分离只能提升读性能,无法解决数据库量的问题

4 垂直拆分,解耦

五八同城早期的页面结构,就像是BBS一样
在这里插入图片描述
有四种主要结构:首页、贴子发布页、帖子(分类)列表、帖子详情

四种垂直拆分:
  1. 业务垂直拆分(拆分的基础和依据,还是沈剑的那句话“脱离业务的架构,都是耍流氓”)
  2. 代码垂直拆分(子系统解耦)
  3. 数据库垂直拆分(数据量降低,延时缓解)
  4. 研发团队垂直拆分(专业化,效率提升)

在这里插入图片描述

设计思路

用最快的速度,增加硬件资源,解耦


伪分布式之所以称之为“伪”是因为它在整体系统层面依旧是一个单体,垂直拆分只是子系统之间实现了部分解耦,子系统之间有了一定的隔离性,但它也依旧是一个整体。

下一篇将介绍反向代理,实现真正的多机集群,并讨论nginx的负载均衡问题。

上一篇回顾:【成为架构师2-1】容量设计:流量高低,对架构究竟有什么影响
下一篇更精彩:【成为架构师2-3】反向代理:接入层扩容,负载均衡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章