架构师训练营:第四周第一节,互联网架构系统架构的演化

用户头像
zcj
关注
发布于: 2020 年 06 月 27 日

互联网应用面临的几大问题

  • 大流量:日均PV,IP访问高

  • 高并发:秒杀业务需求

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

  • 海量数据:用户多产生的数据量大

  • 用户分布广泛,网络情况复杂:针对全球互联网用户,各地互联网状况一样

  • 安全环境恶劣:互联网开放性使得网站更容易受到攻击

  • 需求快速变更,发布频繁:为了快速适应市场,满足用户需求

  • 渐进式发展:互联网应用都是由一个小的网站发展起来的。

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

垂直伸缩:

通过升级硬件和网路吞吐能力,不需要改变应用架构。

几大垂直伸缩方面:

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

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

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

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

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



有点:简单不用改变应用架构

缺点:硬件昂贵,有硬件物理极限,系统或应用程序有驱动硬件的极限



水平伸缩:

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

优点:不需要特别昂贵的硬件,单位计算成本不随计算能力增加而飙升。

缺点:初始建设阶段成本高

互联网架构演化的阶段

阶段零:最简单的互联网应用架构

单台服务器上部署应用程序,数据库,以及文件系统。



阶段一:应用数据分离

应用程序,数据库,文件系统分别部署到各自的服务器上



阶段二:使用缓存改善系统性能

为了减少数据库的访问压力,增加应用本地缓存,和远程分布式缓存



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

使用集群后应用集群之前要使用负载均衡调度服务器分发请求



阶段四:数据库读写分离

数据库分主从复制同步数据,主库负责写操作,从库只允许读操作



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

使用反向代理缓存web请求,CDN缓存静态资源到用户附近地区网络



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

提升数据库和文件系统的,存储能力,和访问峰值上限,及容灾能力。



阶段七:使用NoSQL 和搜索引擎

使用NoSQL对非关系型数据或不需要事务数据存储,将一些查询检索数据同步到搜索引擎中,缓解关系型数据库的压力。



阶段八:业务拆分

将应用系统拆分多个子应用分别部署为集群



阶段久:微服务及中台化

更细粒度的拆分为更小的服务,对共用jar包的抽出为服务下沉为中台服务



阶段十:大数据与智能化

运用大数据分析,智能化为用户提供服务

互联网架构模式

  • 分层:应用横向维度切分(前端、网关服务、应用服务、公共服务、基础设置服务等)

  • 分割:应用纵向按照业务切分(登录、订单、购物车等)

  • 分布式:切分后分布式部署,不同的模块部署到不同的服务器上

  • 集群:将独立部署的服务集群化,添加负载均衡

  • 缓存:本地,远程缓存,反向代理,CDN

  • 异步:使用消息中间件降低软件耦合,提升系统可用性,加速响应,消除并发高峰

  • 冗余:保证7X24高可用性,数据库主从备份,保持数据冗余,集群负载机制,保证服务器冗余运行

  • 自动化:大规模集群情况下,需要自动化运维,仅需很少的维护人员或者无人值守自动运维

  • 安全:登录验证,数据加密,垃圾、敏感信息过滤,转账交易风控,防止XSS攻击,SQl注入等,



总结:

  • 互联网应用的主要特点是,用户量大带来的高并发,大流量,海量数据处理问题

  • 应对高并发瓶颈时,如果没有成熟的水平伸缩方案,可以先用垂直伸缩方案解决

  • 新的互联网应用开发时,不一定完全架构演进阶段来,要综合考虑、人员数量,财力状况,时间等方面。

  • 从架构演进使用的技术可以看出,各种技术处理了不同方向的问题,使应用系统逐渐完善。



用户头像

zcj

关注

还未添加个人签名 2019.10.12 加入

精神小伙

评论

发布
暂无评论
架构师训练营:第四周第一节,互联网架构系统架构的演化