写点什么

架构师训练营第四周总结 + 作业

用户头像
林毋梦
关注
发布于: 2020 年 07 月 02 日

这周的课程从互联网应用所面临的挑战开始,回顾了互联网应用架构的各个历史阶段的典型形态,总结了架构目标,模式和评价标准。宏观的梳理了架构互联网应用的核心知识点。


课程中一个观点令人影响深刻,亡羊补牢也不全是负面的,要辩证的看待。在现实中,不能原教旨主义似的一味纸上谈兵,按书本上的理想情况行事而不考虑实际。以前我的一个老大说,项目中其实很少碰到技术是唯一选择,而且因为技术导致项目失败的,所有问题都是人的问题。亡羊补牢其实就是解决人的问题的一种方法。实际中,多数失败都是因为无法解决人的问题而导致的,亡羊补牢是有效应对有基本职场素养的团队的一个方法,类似于兵法上的知耻而后勇。当然,这办法对职场老白兔,老油条和装睡的人就收效甚微了,正所谓死猪不怕开水烫,原本就无所谓亡羊补牢了。


互联网应用的挑战


不同于企业应用,互联网应用在开放网络上,获得访问量本就是应用价值的一种体现,因此,互联网应用天然就要在不安全的互联网上处理大访问量。


高并发


高并发是互联网应用的天然属性,不是要设计一个高并发系统,是要设计一个能处理高并发的系统。一个成功的互联网应用当然有大量的访问和流量,然而同时成本要求尽可能利用资源,用相对少量的机器支撑起应用,所以互联网应用通常是个高并发的系统——需要应对高并发的系统。


高可用


可用性一般用几个 9 来衡量,意思是(计划内)可用(正常提供服务)时间对运行时间的占比,比如 3 个 9,代表 99.9%。


描述 N 个 9 可用性级别年度宕机时间基本可用性 2 个 999%87.6 小时较高可用性 3 个 999.9%8.8 小时故障自动恢复的可用性 4 个 999.99%53 分钟极高可用性 5 个 999.999%5 分钟


海量数据


大量访问自然导致海量数据,海量数据催生数据仓库,数据挖掘,大数据生态圈。


网络 QoS


互联网应用提供的服务可以遍及全球,而全球发展的不均衡也体现在互联网服务质量的不同。要提供(近似)一致的服务体验,导致需要建立多点数据中心,靠近用户提供服务。


安全


互联网是开放环境,数据传输容易被窃听和攻击,在公网上暴露服务的互联网企业容易受到恶意攻击,安全环境恶劣。


需求变化快,发布频繁


和传统个人/企业软件不同,互联网产品需要快速适应市场,满足用户需求,其产品迭代快,发布频繁。因此对架构在应对变更隔离,持续集成和持续发布等非功能方面有更高要求。


渐进式发展


成功的互联网应用大多是由小而大渐进发展的结果。小应用可以快速变更,更好的适应市场,而一开始就投资巨大的应用,往往会因脱离市场而失败。


伸缩性


按技术方向,为应对高并发可分为垂直伸缩(scale-up)和水平伸缩(scale-out)。


  • 垂直伸缩是指不修改应用的前提下,通过更强大的硬件平台获得更好的性能和并发性。其优点是不必改造原有应用,可在短时间内换用更强大的硬件实现。缺点是,存在物理极限,并且在拐点后单位成本将激增。

  • 水平伸缩是指将应用改造成可通过增加机器的数量而提高并发性的应用。其优点是理论上可以实现无限扩展,但缺点是需要改造应用,而且改造难度大,在拐点前收益小。


互联网应用架构的演化


按出现的先后顺序可以分为:


  1. 单体应用


  1. 数据分离(文件系统,数据库服务器)

  2. 分布式缓存

  3. 集群

  4. 数据库读写分离

  5. 反向代理和 CDN

  6. 分布式文件系统和分布式数据库

  7. NoSQL 和搜索引擎

  8. 业务拆分

  9. 微服务和(服务,数据)中台

  10. 大数据和智能化


架构模式


互联网应用的架构模式有:


  1. 水平分层:最常见的 N(3/4)层架构,CRUD 程序员的一生所爱

  2. 垂直分割:对应用进行模块划分形成高内聚,低耦合的应用。由于分割的复杂性,所以从单体出发,随业务的发展而演变划分是更容易成功的途径。

  3. 分布式:将应用的模块拆解并分别部署。通过分离计算和 IO 密集的组件,使得每部分都能最大化使用率,进而提高整个应用的性能和并发性。

  4. 集群:通过部署多副本和前置负载均衡提供更高的聚合性能和并发。

  5. 缓存和异步:几乎是高并发应用的银弹!多数情况都可以使用这两种模式来改善应用的瓶颈。


架构目标


架构的目标是实现:


  • 高并发:对大量访问和短时间超高流量能平滑应对

  • 高性能:提供可接受的性能。缓慢的首页访问将导致大量客户流失

  • 高可用:宕机时间少,自恢复,减少布署中的人工环节,有冗余应对故障(从内存,磁盘,到机房)

  • 可伸缩:是指可以增加资源来增强系统。使用更强的硬件(scale-up)或是更多的硬件(scale-out)。

  • 可扩展:指能快速实现变更,不断扩展功能。其主要手段是事件驱动和分布式服务。

  • 安全:在开放的网络上实现安全访问,即防窃听,防篡改,防伪造和防抵赖


架构技术


前端架构


  • APP 及 Web 开放技术

  • HTTP 优化技术

  • CDN

  • DNS

  • 动静分离

  • 反向代理


网关和应用架构


  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分


服务架构


  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性服务


存储架构


  • 分布式文件系统

  • 分布式数据库

  • NoSQL 数据库

  • NewSQL 数据库


后台架构


  • 大数据平台(Hadoop,Spark,Flink)

  • 搜索引擎

  • 推荐引擎

  • 数据仓库


运维与安全架构


  • 数据采集与展示

  • 数据监控与报警

  • 攻击与防护

  • 数据加密与解密


发布于: 2020 年 07 月 02 日阅读数: 77
用户头像

林毋梦

关注

还未添加个人签名 2018.08.25 加入

还未添加个人简介

评论

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