写点什么

架构师训练营第四周 - 总结

用户头像
桔子
关注
发布于: 2020 年 07 月 01 日
互联网系统面临的挑战:
  • 高并发、大流量、高可用(7*24 小时)

  • 管理存储海量数据

  • 用户分布广泛,网络情况复杂

  • 安全环境恶劣

  • 需求快速变更,发布频繁

  • 渐进式发展,好的产品是运营出来的,不是一开始就规划好的

应对高并发挑战的两个方向:
  • 垂直扩展

  • 通过升级硬件和网络吞吐能力实现提升性能,这种方式简单直接有效;

  • 单个硬件总有物理上限,操作系统或者应用程序也可能制约了这个上限;

  • 硬件成本和性能有临界点,过了临界点继续提升硬件极不划算;

  • 水平扩展

  • 通过增加服务器数量提升性能,克服了垂直扩展带来的硬件成本飙升的问题;

  • 可以扩展更多的服务器,避免单台服务硬件能力极限问题;

  • 对于系统设计有了更高的要求。

架构演化过程:
  1. 简单架构:单服务器包含应用程序、数据库、文件系统;

  2. 应用数据分离:应用程序、数据库、文件系统分开部署到不同服务器

  3. 性能提升第一法宝:使用缓存改善系统性能

  4. 应用服务器采用集群模式改善系统并发处理能力

  5. 数据库读写分离

  6. 使用反向代理和 CDN 加速

  7. 使用分布式文件系统和分布式数据库

  8. 使用 Nosql 和搜索引擎

  9. 业务拆分

  10. 微服务和中台化

互联网架构模式:
  • 分层:横向维度切分,每个维度负责相对单一的职责,通过上下层依赖和调用组成系统

  • 分隔:纵向切分系统,按功能和服务分隔,将其包装为高内聚低耦合的模块,有利于开发和维护;不同模块的分布式部署,提高系统的并发能力和功能扩展能力。

  • 分布式:将不同模块部署在不同的服务器上,通过远程协调工作。分布式意味着可以可以使用更多计算机,提高系统并发能力。

  • 集群:对于访问集中的模块,还需要部署多个相同应用构成集群,通过负载均衡对外提供服务。

  • 缓存:加快访问速度,软件性能改善第一手段。如 CDN、反向代理、本地缓存、远程缓存。

  • 异步:分解大任务,加快网站响应速度,消除访问高峰

  • 冗余:部分服务器宕机的时候依然提供服务,数据不丢失

  • 自动化运维

  • 安全

互联网架构技术一览:
  • 前端架构

  • App 及 Web 开发技术

  • 浏览器及 http 优化技术

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DNS

  • 网关及应用层架构

  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分

  • 服务层架构

  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性(锁)服务

  • 存储层架构

  • 分布式文件

  • 分布式关系数据库

  • Nosql 数据库

  • 后台架构

  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库

  • 安全架构

  • 攻击与防护

  • 数据加密与解密

  • 数据采集与监控

  • 数据采集与展示

  • 数据监控与报警

  • 数据中心机房架构

总结

  1. 互联网业务的特点是查询多修改少,缓存是优化性能的第一利器,合理使用 CDN、反向代理、本地缓存、远程缓存。

  2. 应用服务应设计为无状态服务,便于水平扩展

  3. 垂直扩展展要注意临界点,时间与金钱需要平衡,过了临界点再考虑水平扩

  4. 能用简单的实现就不要用复杂的实现,不要盲目追求新技术,不要过度设计

  5. 分布式存储尽量利用软件的自动分片功能以保持良好的扩展性,设计上尽量避免分片,避免盲目分片,可以把历史数据存储到其他地方,减少当前库的数据量。

  6. 一开始开发代码就要有模块意识,高内聚低耦合,为分隔、分层、微服务架构埋伏笔。

  7. 数据定时备份

  8. 异常信息采集,服务性能收集分析,监控报警

  9. 不苛求技术,尽量避免 0 停机这种要求,升级硬件能解决的问题就别用分布式。


用户头像

桔子

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第四周 - 总结