系统架构学习总结(训练营第四课)

发布于: 2020 年 07 月 01 日

本节课主要关注在系统架构设计,包含了传统系统的架构以及典型的互联网应用的系统架构。

传统系统的架构

传统的系统主要是通过垂直伸缩提高机器的配置来提升系统的性能。这个方法简单方便,稳定性好,维护成本也相对要低,在需求快速解决问题的时候,可以作为第一解决方案。

垂直伸缩主要有 2 个问题,一个是一次性投入成本比较高,且配置提高到一定程度后成本会极速升高;另一个问题是物理机器性能提升有瓶颈,达到一定极限后很难扩展。

而互联网系统的需求,通常是远远超过单机系统能够承受的极限,所以需要考虑水平伸缩。

分布式系统架构

一个典型的大型互联网应用系统,通常需要应对大流量、高并发的网络请求,并需要满足高可用、高性能、低延迟、可伸缩、易扩展、等特性,同时还需要应对海量数据存储、用户分布广泛、网络情况复杂、安全环境恶劣等挑战和问题。

为了达到目标,分布式、分层、分割等技术方案应运而生,并结合缓存、异步、冗余等手段来针对性的解决实际问题。

水平伸缩

通过联合多个机器、采用分布式系统一起来对外提供服务,并在必要时可以配置成集群来达到满足大流量、高并发、高性能等要求。

分层、分割、分布式系统

相对传统的单体系统,分布式系统整体更加复杂,给开发、部署、监控等都带来了挑战。结合软件架构,对整个系统也通常采用了横向模块分层、垂直业务分割等来分层多个子系统子模块,以降低系统的复杂度、提高系统的可维护性,使得系统可以更加方便的水平伸缩。

大型网站核心架构要素

主要有 5 个:性能、可用性、伸缩性、扩展性、安全性

大型互联网应用系统的技术方案和手段

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?

详见作业:https://xie.infoq.cn/article/7e9b9a2a2b4e806064dc929c4

主要有下面一些:

  • 纵向分层:应用层,服务层,数据层

  • 横向分割:按功能和服务分割成 高内聚低耦合的模块单元

  • 分布式

  • 分布式应用和服务

  • 分布式静态资源

  • 分布式数据和存储

  • 分布式计算

  • 集群

  • 缓存:CDN,反向代理,本地缓存,分布式缓存

  • 异步:多线程共享内存队列,分布式消息队列

  • 冗余

  • 自动化

  • 安全

演化和迭代

一个复杂的系统从来不是一蹴而就的,而是随着业务的发展和功能需求的变迁,一步步演化并经过多次迭代开发而成的。

下面的一个互联网系统的典型架构图:

因需而异

虽然不同的互联网系统看起来大同小异,然后根据彼此功能上的不同,在技术方案的侧重点上也是不同的。

有的侧重于数据存储和访问、有的侧重于大量运算、有的侧重于数据分析、挖掘。

即使在一个大的业务系统中,各个不同子系统的需求也不会完全一致,所以系统设计也是要因时而异、因需而异。

没有最好的系统架构,只有最适合的系统架构。

用户头像

看山是山

关注

还未添加个人签名 2018.11.16 加入

还未添加个人简介

评论

发布
暂无评论
系统架构学习总结(训练营第四课)