"


When you have confidence, you can have a lot of fun. And when you have fun, you can do amazing things.

——  Joe Namath

"


面试造航母,实际拧螺丝。这是大部分互联网人面对的实际情境,如何跳出舒适的圈子,撤离局部,俯览大局?​更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

限制自己的不是外界,而是内心。你之所以没听过这句话,是因为它出自小闫同学(鹅鹅鹅~笑出了鹅叫声)为了避免三年螺丝工,还是提升一下自己,为造航母做准备吧。一些架构知识,既可以培养全局观,又可以助你深层次认识『螺丝』。

一、架构演变

一般来说,任何一个项目至少有三层内容来组成:​web访问层、数据库层、存储层​更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.1 初级阶段

在初级阶段又会人为细分为如下几个阶段:

1.1.1 单体阶段

常见场景:​项目初期

部署特点:​所有应用服务都在一台主机

应用特点:​开发简单

还在拧螺丝?是时候学习造航母了!_数据库

1.1.2 应用/数据分离阶段

常见场景:​项目初期,用户访问数据库有压力

部署特点:​应用和数据库单独部署

应用特点:​开发简单更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

还在拧螺丝?是时候学习造航母了!_数据库_02

1.1.3 页面动静分离阶段

常见场景:​项目初期,用户访问页面有压力

部署特点:​剥离用户读请求和写请求操作

应用特点:​开发简单

还在拧螺丝?是时候学习造航母了!_公众号_03

1.1.4 页面/数据缓存阶段

常见场景:​项目初期,用户访问有压力

部署特点:​代理和数据库前面增加缓存组件

应用特点:​开发简单

还在拧螺丝?是时候学习造航母了!_数据库_04

1.2 中期阶段

1.2.1 应用服务集群阶段

常见场景:​项目初期,用户访问有压力

部署特点:​应用服务所在主机做集群负载均衡

应用特点:​业务中等

还在拧螺丝?是时候学习造航母了!_数据库_05

1.2.2 数据库读写分离化

常见场景:​项目初期,用户访问数据有压力

部署特点:​对数据库集群做读写分离,静态文件做共享存储

应用特点:​业务中等更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

还在拧螺丝?是时候学习造航母了!_数据库_06

1.2.3 存储分布式

常见场景:​项目中期,数据存储有压力

部署特点:​对数据库分库/分表扩展,数据文件使用分布式存储

应用特点:​业务中等

还在拧螺丝?是时候学习造航母了!_python_07

1.2.4 业务应用拆分

常见场景:​项目中期,业务访问/团队管理有压力

部署特点:​项目应用进行拆分

应用特点:​业务复杂

还在拧螺丝?是时候学习造航母了!_数据库_08

1.3 中后期阶段

1.3.1 业务拆分

常见场景:​项目中后期,业务处理有压力

部署特点:​所有功能以服务形式单独部署,引入配置管理管理中心、消息中间件,搜索引擎等功能

应用特点:​业务复杂更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

还在拧螺丝?是时候学习造航母了!_数据库_09

1.4 后期阶段


1.4.1 微服务阶段

常见场景:​项目后期,精益求精

部署特点:​所有业务都可以自由部署

应用特点:​业务复杂更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

还在拧螺丝?是时候学习造航母了!_python_10

二、架构部署

2.1通用架构

一级定位:​核心组成部分 (web 、数据库、存储层 )

二级定位:​功能增强部分 (web缓存、代理、数据库缓存)

还在拧螺丝?是时候学习造航母了!_数据库_11

2.2部署项目

部署项目的时候,要遵循主次原则:

1.对于架构层中的一级角色,我们的​部署原则​是:站在用户访问资源角度,从后向前依次部署。

2.对于架构层中的二级角色,我们的​部署原则​是:站在用户访问资源压力角度,需要部署哪里,就部署哪里,注意前后的信息交流。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

豆瓣评分9.2分的视频,让我们向科比致敬




还在拧螺丝?是时候学习造航母了!_数据库_12