高并发,大流量

  • Google 日均 PV 数 35 亿,日均 IP 访问数 3 亿
  • 微信在线用户数 10 亿
  • 天猫双十一活动一天交易额 3000 亿

高可用

系统 7*24 小时不间断服务。大型互联网站的宕机事件通常会成为新闻焦点。

海量数据

需要存储、管理海量数据。

  • Facebook 每周上传的照片数目接近 10 亿
  • 百度收录的网页数目有数百亿
  • Google 有近百万台服务器为全球用户提供服务

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

中美光缆的数次故障,也让一些对国外用户依赖较大的网站不得不考虑在海外建立数据中心。

安全环境恶劣

黑客攻击。

需求快速变更,发布频繁

快速适应市场,满足用户需求。

Office 一年为单位发布,大型网站以周为单位。

渐进式发展

应对高并发挑战的两个技术方向

垂直伸缩

升级硬件和网络吞吐能力。

  • RAID 增加 IO 吞吐
  • SSD 改善 IO 访问速度
  • 内存减少 IO 操作
  • 升级网络接口或者增加网络接口提升网络吞吐
  • 更新服务器使用更多处理器或者更多超线程

缺点:

  • 达到某个程度后,增加计算能力需要更多的花费;
  • 垂直伸缩有物理极限;
  • 操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点

水平伸缩

通过增加服务器提升计算能力的一类架构方法。

伸缩性的圣杯,可以克服垂直伸缩带来的但未计算成本随计算能力增加而迅速飙升的问题。

互联网架构演化

  1. 最简单的互联网应用架构:应用程序,文件,数据库
  2. 应用数据分离:应用服务器,文件服务器,数据库服务器
  3. 使用缓存改善系统性能:增加本地缓存/分布式缓存
  4. 使用应用服务器集群改善系统的并发处理能力
  5. 数据库读写分离
  6. 使用反向代理和 CDN 加速网站响应
  7. 使用分布式文件系统和分布式数据库系统
  8. 使用 NoSQL 和搜索引擎
  9. 业务拆分
  10. 微服务及中台化
  11. 大数据与智能化(今日头条)

互联网架构模式

架构模式

模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。

  • 分层

    • 系统在横向维度切分,上层对下层依赖和调用
  • 分隔
    • 纵向对软件进行切分,不同的功能和服务分隔,包装成高内聚低耦合的模块单元。

      • 有助于软件的开发和维护;
      • 便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
  • 分布式
    • 分层和分隔是为了切分后的模块便于分布式部署,即不同模块部署在不同的服务器上。

      • 分布式应用和服务
      • 分布式静态资源
      • 分布式数据和存储
      • 分布式计算
  • 集群
    • 对于用户访问集中的模块,比如网站首页,要将独立部署的服务器集群化,即多台服务器部署相同应用构成集群,通过负载均衡设备共同对外提供服务。
  • 缓存
    • 缓存是将数据存放在距离计算最近的位置以加快处理速度。

      • CDN
      • 反向代理
      • 本地缓存
      • 远程缓存
  • 异步
    • 系统解耦合的重要手段:异步。业务操作的多个阶段,阶段之间通过共享数据而不是直接调用的方法进行协作。
    • 好处
      • 提高系统可用性
      • 加快网站响应速度
      • 消除并发访问高峰
  • 冗余
    • 提升网站可用性:服务可用,数据不会丢
    • 服务器冗余运行,数据冗余备份
  • 自动化
    • 无人值守情况下网站可以正常运行。
    • 该设计集中在运维方面。
  • 安全
    • 互联网的开放特性带来的安全挑战
    • 模式
      • 通过密码和手机校验码进行身份认证;
      • 登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;
      • 为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;
      • 对于常见的用于攻击网站的 XSS 攻击,SQL 注入,进行编码转换等相应处理;
      • 对垃圾信息、敏感信息进行过滤‘
      • 对转账交易等重要操作根据交易模式和交易信息进行风险控制。

互联网系统架构核心要素

【如何衡量一个系统的架构设计】

高性能

性能是互联网的一个重要指标,除非没有选择,否则用户无法忍受一个响应缓慢的应用。

一个打开缓慢的应用会导致严重的用户流失,很多时候系统性能问题是系统架构升级优化的触发器。可以说性能是互联网系统架构设计的一个重要方面,任何架构设计方案都必须考虑可能会带来的性能问题。

也正是因为性能问题几乎无处不在,所以优化网站性能的手段也非常多,从用户端到数据库,从代码到机房部署,影响用户请求的所有环节都可以进行性能优化。

高可用

因为互联网分布式系统使用的服务器硬件通常是普通的商用服务器,这些服务器的设计目标本身并不保证高可用,也就是说,很有可能会出现服务器硬件故障,也就是俗称的服务器宕机。大型互联网系统通常都会有上万台服务器,每天都必定会有一些服务器宕机,因此系统高可用架构设计的前提是必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务或者应用依然可用。

系统高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。

可伸缩

大型互联网应用通过集群的方式将多台服务器组成一个整体共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

可扩展

不同于其他架构要素主要关注非功能性需求扩展性架构直接关注系统的功能需求。互联网应用快速发展,功能不断扩展,如何设计系统的架构使其能够快速响应需求变化,是系统可扩展架构主要的目的。

衡量系统架构扩展性好坏的主要标准就是在系统增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。**不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要受牵连进行改动。
**
可扩展架构的主要手段是事件驱动架构和分布式服务。**

安全

互联网是开放的,任何人在任何地方都可以访问系统。系统的安全架构就是保护系统不受恶意访问和攻击,保护网站的重要数据不被窃取。

衡量系统安全架构的标准就是针对现存的潜在的各种攻击与窃密手段,是否有可靠的应对策略。

互联网架构技术一览

  • 前端架构

    • APP 及 Web 开发技术
    • 浏览器及 HTTP 优化技术
    • CDN
    • 动静分离
    • 图片服务
    • 反向代理
    • DNS
  • 网关及应用层架构
    • 网关架构
    • 负载均衡
    • 动态页面静态化
    • 业务拆分
  • 服务层架构
    • 微服务框架
    • 分布式消息队列
    • 分布式缓存
    • 分布式一致性(锁)服务
  • 存储层架构
    • 分布式文件
    • 分布式关系数据库
    • NoSql 数据库
  • 后台架构
    • 大数据平台
    • 搜索引擎
    • 推荐引擎
    • 数据仓库
  • 运维与安全
    • 数据采集与展示
    • 数据监控与报警
    • 攻击与防护
    • 数据加密与解密

【架构师之路】四、系统架构相关推荐

  1. 架构师之路 — 软件架构 — 系统架构设计模式

    目录 文章目录 目录 系统架构设计模式(System Architecture Patterns) 单体架构 分布式架构 微服务架构 Serverless 架构 系统架构设计模式(System Arc ...

  2. 架构师之路(三)谈谈架构师的职责

    很早就想写一些架构师系列的文章了,因为自己做架构设计也有几年了,有得有失,想以此文来谈谈自己对架构师职责的认识.架构师这个话题很大,从技术选型到架构选型,从业务建模到系统建模,无一不是在做着决策. 一 ...

  3. 引领架构创新之路第八届系统架构师大会撼世来袭

    作为国内最受欢迎的架构师盛会,2016年第八届中国系统架构师大会(SACC2016)即将于10月27-29日在北京盛大召开.本届大会以"架构创新之路"为主题,安排两大主场和24个专 ...

  4. 阿里架构师,如何降低系统架构复杂度?

    来源:聂晓龙(率鸽) 读 A Philosophy of Software Design 有感,软件设计与架构复杂度,你是战术龙卷风吗? 01 前言 Aliware 有一天,一个医生和一个土木工程师在 ...

  5. 【成为架构师课程系列】系统架构设计:非功能性目标的设计

    前言 为了提高综合客户满意度及不同质量属性的满意度,必须考虑计划和设计产品时的不同质量属性. -- Stephen H.Kan,<软件质量工程> 质量属性很难定义,但它们经常可以区分产品是 ...

  6. 【架构师之路 四】需要掌握的技能点---架构性能优化

    涉及到性能优化的东西,我总结以下主要其实是三个方面: 1,充分利用好缓存 2,数据和处理可以提前预测 3,以空间换取时间 4,延迟使用,只有真正使用的时候才进行计算 代码级别 关联代码优化 如果代码段 ...

  7. 架构师之路 — 软件架构 — 应用架构设计模式

    目录 文章目录 目录 应用架构设计模式(Application Architecture Patterns) 分层模式(Layered Pattern) 事件驱动模式(Event-based Patt ...

  8. 架构师之路---面向过程和面向对象 王泽宾

    1.引言    机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...

  9. 架构师之路-写的不错

    架构师之路 转:http://www.uml.org.cn/zjjs/200903273.asp 1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用 ...

  10. .NET 高级架构师0003 架构师之路(2)---架构师的职责

    2 架构师的职责     近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎.我怀着无比崇敬的态度,拜读了一下牛人们的发言.里面有个哥们发起一个话题:"CTO, 你多久没有写程序了?&q ...

最新文章

  1. 为什么尽量避免使用 CSS 表达式
  2. 1499抢飞天茅台?可惜了,才26万的并发app就崩了!
  3. 壊小子的学习【程序开发学习篇】(一)培训时期的学习
  4. 转:linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析
  5. mysql用户如何迁移_迁移MySQL用户及权限
  6. 暴风影音“猝死” ,官网、APP全挂了!网友:我的青春说没就没了
  7. git只提交一张图片_几张图让你彻底弄懂git工作流(三) ——git深入
  8. 五万pv的小程序需要什么服务器,一个公式,告诉你PV千万的刷屏小程序都是怎么玩的...
  9. 数据结构与与算法之希尔排序
  10. python setup.py install 和python setup.py develop的区别
  11. MicroSIP软电话安装配置说明
  12. 手势解锁java后端设计_自己定义九宫格手势解锁
  13. java将xlsx类型excel导出加水印(真实水印非表面加图片)
  14. QT练习samp2_2_test——用按钮编辑文本框特性
  15. Outlook-没有自动回复-使用规则创建外出邮件
  16. Ivor Horton's Beginning Visual C++ 2010
  17. 动力锂离子电池电池检测标准和方法
  18. 你工作经验欠缺,如何能胜任这项工作?
  19. cad卸载不干净_流氓软件卸不干净?这7款超强软件卸载神器专治各种流氓软件!...
  20. 超级机器人大战阿尔法php,超级机器人大战α流程攻略 机战Alpha外传分支多线路攻略(9)...

热门文章

  1. Docker的volumes踩坑
  2. rfcn 共享_rfcn卷积网络
  3. 文明游戏5的计算机配置,文明6配置要求高吗 文明6最低电脑配置与推荐电脑配置...
  4. 查询出生日期到现在的天数
  5. vue从数据库获取图片地址,为什么图片地址为变量时找不到图片?
  6. 基于滴滴云服务器搭建 Consul 集群
  7. 【蓝桥杯刷题冲刺辅导】掌握递归·DFS解题套路,这一文足以?
  8. 网易im 服务器消息格式,机器人消息体模板说明-IM即时通讯-网易云信开发文档...
  9. [0CTF 2016]piapiapia php反序列化字符串逃逸
  10. 直流有刷电机编码器测速基于STM32F302R8+X-NUCLEO-IHM07M1