架构师训练营:第四周第一节,互联网架构系统架构的演化
互联网应用面临的几大问题
大流量:日均PV,IP访问高
高并发:秒杀业务需求
高可用:7x24小时不间断服务
海量数据:用户多产生的数据量大
用户分布广泛,网络情况复杂:针对全球互联网用户,各地互联网状况一样
安全环境恶劣:互联网开放性使得网站更容易受到攻击
需求快速变更,发布频繁:为了快速适应市场,满足用户需求
渐进式发展:互联网应用都是由一个小的网站发展起来的。
应对高并发挑战的两个方向
垂直伸缩:
通过升级硬件和网路吞吐能力,不需要改变应用架构。
几大垂直伸缩方面:
通过RAID(独立冗余磁盘阵列)增加I/O的吞吐能力
通过切换到SSD(固态硬盘) 改善I/O的访问速度
通过增加内存减少I/O操作
通过升级或增加网路接口提高网络吞吐能力
更新服务器使用更多处理器或者更多超线程
有点:简单不用改变应用架构
缺点:硬件昂贵,有硬件物理极限,系统或应用程序有驱动硬件的极限
水平伸缩:
通过增加服务器提升计算能力的一类架构方法。
优点:不需要特别昂贵的硬件,单位计算成本不随计算能力增加而飙升。
缺点:初始建设阶段成本高
互联网架构演化的阶段
阶段零:最简单的互联网应用架构
单台服务器上部署应用程序,数据库,以及文件系统。
阶段一:应用数据分离
应用程序,数据库,文件系统分别部署到各自的服务器上
阶段二:使用缓存改善系统性能
为了减少数据库的访问压力,增加应用本地缓存,和远程分布式缓存
阶段三:使用应用服务器集群改善系统并发处理能力
使用集群后应用集群之前要使用负载均衡调度服务器分发请求
阶段四:数据库读写分离
数据库分主从复制同步数据,主库负责写操作,从库只允许读操作
阶段五:使用反向代理和CDN加速网站响应
使用反向代理缓存web请求,CDN缓存静态资源到用户附近地区网络
阶段六:使用分布式文件系统和分布式数据库系统
提升数据库和文件系统的,存储能力,和访问峰值上限,及容灾能力。
阶段七:使用NoSQL 和搜索引擎
使用NoSQL对非关系型数据或不需要事务数据存储,将一些查询检索数据同步到搜索引擎中,缓解关系型数据库的压力。
阶段八:业务拆分
将应用系统拆分多个子应用分别部署为集群
阶段久:微服务及中台化
更细粒度的拆分为更小的服务,对共用jar包的抽出为服务下沉为中台服务
阶段十:大数据与智能化
运用大数据分析,智能化为用户提供服务
互联网架构模式
分层:应用横向维度切分(前端、网关服务、应用服务、公共服务、基础设置服务等)
分割:应用纵向按照业务切分(登录、订单、购物车等)
分布式:切分后分布式部署,不同的模块部署到不同的服务器上
集群:将独立部署的服务集群化,添加负载均衡
缓存:本地,远程缓存,反向代理,CDN
异步:使用消息中间件降低软件耦合,提升系统可用性,加速响应,消除并发高峰
冗余:保证7X24高可用性,数据库主从备份,保持数据冗余,集群负载机制,保证服务器冗余运行
自动化:大规模集群情况下,需要自动化运维,仅需很少的维护人员或者无人值守自动运维
安全:登录验证,数据加密,垃圾、敏感信息过滤,转账交易风控,防止XSS攻击,SQl注入等,
总结:
互联网应用的主要特点是,用户量大带来的高并发,大流量,海量数据处理问题
应对高并发瓶颈时,如果没有成熟的水平伸缩方案,可以先用垂直伸缩方案解决
新的互联网应用开发时,不一定完全架构演进阶段来,要综合考虑、人员数量,财力状况,时间等方面。
从架构演进使用的技术可以看出,各种技术处理了不同方向的问题,使应用系统逐渐完善。
评论