架构师训练营第四周 - 总结
互联网系统面临的挑战:
高并发、大流量、高可用(7*24 小时)
管理存储海量数据
用户分布广泛,网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
渐进式发展,好的产品是运营出来的,不是一开始就规划好的
应对高并发挑战的两个方向:
垂直扩展
通过升级硬件和网络吞吐能力实现提升性能,这种方式简单直接有效;
单个硬件总有物理上限,操作系统或者应用程序也可能制约了这个上限;
硬件成本和性能有临界点,过了临界点继续提升硬件极不划算;
水平扩展
通过增加服务器数量提升性能,克服了垂直扩展带来的硬件成本飙升的问题;
可以扩展更多的服务器,避免单台服务硬件能力极限问题;
对于系统设计有了更高的要求。
架构演化过程:
简单架构:单服务器包含应用程序、数据库、文件系统;
应用数据分离:应用程序、数据库、文件系统分开部署到不同服务器
性能提升第一法宝:使用缓存改善系统性能
应用服务器采用集群模式改善系统并发处理能力
数据库读写分离
使用反向代理和 CDN 加速
使用分布式文件系统和分布式数据库
使用 Nosql 和搜索引擎
业务拆分
微服务和中台化
互联网架构模式:
分层:横向维度切分,每个维度负责相对单一的职责,通过上下层依赖和调用组成系统
分隔:纵向切分系统,按功能和服务分隔,将其包装为高内聚低耦合的模块,有利于开发和维护;不同模块的分布式部署,提高系统的并发能力和功能扩展能力。
分布式:将不同模块部署在不同的服务器上,通过远程协调工作。分布式意味着可以可以使用更多计算机,提高系统并发能力。
集群:对于访问集中的模块,还需要部署多个相同应用构成集群,通过负载均衡对外提供服务。
缓存:加快访问速度,软件性能改善第一手段。如 CDN、反向代理、本地缓存、远程缓存。
异步:分解大任务,加快网站响应速度,消除访问高峰
冗余:部分服务器宕机的时候依然提供服务,数据不丢失
自动化运维
安全
互联网架构技术一览:
前端架构
App 及 Web 开发技术
浏览器及 http 优化技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
Nosql 数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
安全架构
攻击与防护
数据加密与解密
数据采集与监控
数据采集与展示
数据监控与报警
数据中心机房架构
总结
互联网业务的特点是查询多修改少,缓存是优化性能的第一利器,合理使用 CDN、反向代理、本地缓存、远程缓存。
应用服务应设计为无状态服务,便于水平扩展
垂直扩展展要注意临界点,时间与金钱需要平衡,过了临界点再考虑水平扩
能用简单的实现就不要用复杂的实现,不要盲目追求新技术,不要过度设计
分布式存储尽量利用软件的自动分片功能以保持良好的扩展性,设计上尽量避免分片,避免盲目分片,可以把历史数据存储到其他地方,减少当前库的数据量。
一开始开发代码就要有模块意识,高内聚低耦合,为分隔、分层、微服务架构埋伏笔。
数据定时备份
异常信息采集,服务性能收集分析,监控报警
不苛求技术,尽量避免 0 停机这种要求,升级硬件能解决的问题就别用分布式。
评论