写点什么

架构师训练营 No.4 周总结

用户头像
连增申
关注
发布于: 2020 年 06 月 30 日

互联网系统面临怎样的挑战?

大型互联网系统一般有如下特点:

  • 用户多,分布广:全球用户服务;用户分布范围广,网络情况复杂

  • 高并发,大流量

  • 高可用:系统7x24小时不间断服务

  • 海量数据:存储、管理海量数据

  • 安全环境恶劣,易受网络攻击

  • 需求变更快,频繁发布,每周甚至每天数次发布

  • 从小到大,渐进式发展



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

  • 垂直伸缩

通过升级硬件和网络吞吐能力可以实现垂直伸缩,无需改变应用架构。

  • 通过使用RAID(独立冗余磁盘阵列)增加I/O吞吐能力

  • 通过切换到SSD(固态硬盘)改善I/O访问速度

  • 通过增加内存减少I/O操作

  • 通过升级网络接口或者增加网络接口提高网络吞吐能力

  • 升级服务器使用更多处理器或者更多超线程

缺点:特定程度成本剧增,系统制约,物理极限



  • 水平伸缩

通过增加服务器提升计算能力

互联网架构演化

No.0阶段:最简单的互联网应用架构

No.1阶段:应用数据分离

No.2阶段:使用缓存改善系统性能

No.3阶段:使用应用服务器集群改善系统的并发处理能力

No.4阶段:数据库读写分离

No.5阶段:使用反向代理和CDN加速网站响应

No.6阶段:使用分布式文件系统和分布式数据库系统

No.7阶段:使用NoSQL和搜索引擎

No.8阶段:业务拆分

No.9阶段:微服务及中台化



No.10阶段:大数据及智能化



互联网架构模式

互联网系统架构核心要素

高性能

高性能的架构是以用户为中心,提供快速的网页访问体验,主要参数有较短的响应时间、较大的并发处理能力、较高的吞吐量与稳定的性能参数。

可分为前端优化、浏览器优化、应用层优化、代码层优化与存储层优化:

  • 前端优化:网站业务逻辑之前的部分。

  • 浏览器优化:减少 HTTP 请求数,使用浏览器缓存,启用压缩,CSS JS 位置,JS 异步,减少 Cookie 传输;CDN 加速,反向代理。

  • 应用层优化:处理网站业务的服务器。使用缓存,异步,集群。

  • 代码优化:合理的架构,多线程,资源复用(对象池,线程池等),良好的数据结构,JVM调优,单例,Cache 等。

  • 存储优化:缓存、固态硬盘、光纤传输、优化读写、磁盘冗余、分布式存储(HDFS)、NoSQL 等。



高可用

大型网站应该在任何时候都可以正常访问,正常提供对外服务。因为大型网站的复杂性,分布式,廉价服务器,开源数据库,操作系统等特点,要保证高可用是很困难的,也就是说网站的故障是不可避免的。

如何提高可用性,就是需要迫切解决的问题。首先,需要从架构级别考虑,在规划的时候,就考虑可用性。

业内一般用几个 9 表示可用性指标,比如四个 9(99.99),一年内允许的不可用时间是 53 分钟。

不同层级使用的策略不同,一般采用冗余备份和失效转移解决高可用问题:

  • 应用层:一般设计为无状态的,对于每次请求,使用哪一台服务器处理是没有影响的。一般使用负载均衡技术(需要解决 Session 同步问题)实现高可用。

  • 服务层:负载均衡,分级管理,快速失败(超时设置),异步调用,服务降级,幂等设计等。

  • 数据层:冗余备份(冷,热备[同步,异步],温备),失效转移(确认,转移,恢复)。数据高可用方面著名的理论基础是 CAP 理论。(持久性,可用性,数据一致性[强一致,用户一致,最终一致])  



可伸缩

在不改变原有架构设计的基础上,通过添加/减少硬件(服务器)的方式,提高/降低系统的处理能力:

  • 应用层:对应用进行垂直或水平切分。然后针对单一功能进行负载均衡(DNS、HTTP[反向代理]、IP、链路层)。

  • 服务层:与应用层类似。

  • 数据层:分库、分表、NoSQL 等;常用算法 Hash,一致性 Hash。



可扩展

方便进行功能模块的新增/移除,提供代码/模块级别良好的可扩展性:

  • 模块化,组件化:高内聚,低耦合,提高复用性,扩展性。

  • 稳定接口:定义稳定的接口,在接口不变的情况下,内部结构可以“随意”变化。

  • 设计模式:应用面向对象思想,原则,使用设计模式,进行代码层面的设计。

  • 消息队列:模块化的系统,通过消息队列进行交互,使模块之间的依赖解耦。

  • 分布式服务:公用模块服务化,提供其他系统使用,提高可重用性,扩展性。



安全性

对于安全问题,首先要提高安全意识,建立一个安全的有效机制,从政策层面,组织层面进行保障。

 比如服务器密码不能泄露,密码每月更新,并且三次内不能重复;每周安全扫描等。

 以制度化的方式,加强安全体系的建设。同时,需要注意与安全有关的各个环节。

 安全问题不容忽视,包括基础设施安全,应用系统安全,数据保密安全等:

  • 基础设施安全:硬件采购,操作系统,网络环境方面的安全。一般采用正规渠道购买高质量的产品,选择安全的操作系统,及时修补漏洞,安装杀毒软件防火墙。

  • 应用系统安全:在程序开发时,对已知常用问题,使用正确的方式,在代码层面解决掉。

  • 数据保密安全:存储安全(存储在可靠的设备,实时,定时备份),保存安全(重要的信息加密保存,选择合适的人员复杂保存和检测等),传输安全(防止数据窃取和数据篡改)。

互联网架构技术一览



互联网系统架构是根据业务需求不断完善的,不同的业务特征做特定架构设计。



用户头像

连增申

关注

还未添加个人签名 2020.04.02 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 No.4 周总结