架构模式
模式:重复发生的问题---->重复使用解决方案。
关键:模式的可重复性---->问题与场景的可重复性====>解决方案的可重复性。
互联网架构模式:为解决互联网系统高性能,高可用,易伸缩,易扩展,安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是软件系统的重要组成部分。
分层: 横向维度划分层次,每层负责比较单一的职责,上层调用下层,组成整个系统-----依赖倒置原则
分割:纵向维度划分为高内聚的模块单元
1.便于软件的开发和维护
2.便于不同模块的分布式部署==>提高网站的并发处理能力和扩展能力。
分布:分层和分割的另一个目的:分布式部署。
将不同模块部署在不同的服务器上,通过远程调用协同工作。
分布:解决同样的问题,可以使用更多的计算机,计算机越多,CPU,内存,存储资源就越多,能够处理的并发访问和数据量就越大。
1.分布式服务和应用
2.分布式静态资源
3.分布式数据和存储
4.分布式计算
缓存:将数据存放在离计算最近的位置,以加快处理速度。缓存是改善性能的第一手段
现代CPU设计使用L1,L2,L3的三级缓存。大型网站架构设计在很多方面使用了缓存设计。
1.CDN--------------距离用户最近,部署在网络运营商机房的缓存。
2.反向代理----------代理整个数据中心网站的请求,缓存用户的请求,尽快返回给用户。不是继续下发给应用服务器,到后面的集群处理。
3.本地缓存----------用户服务同一进程内的本地缓存,反应速度更快,但是本地缓存容量比较小,可以使用的内存空间是有限的。
4.远程缓存----------为解决本地缓存内存空间小的问题----远程分布式缓存集群来提供更多的内存,对应用提供服务。
异步:计算机软件发展的一个重要目标和驱动力就是降低软件耦合性----------------事务之间越少的直接联系,那么久越少被彼此影响,越可以独立发展。
大型网站架构中,系统解除耦合的手段:分层,分割,分布等,还有一个重要的手段----异步。
含义:就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据进行协作,而不是通过直接调用进行协作-----生产者消费者模式。
1.提高系统的可用性
2.加快网站响应速度
3.消除并发访问高峰
冗余:互联网应用需要7X24小时连续运行,但是服务器总有可能出现故障,特别是服务器规模比较大的时候,服务器宕机是必然事件。
要想在服务器宕机的情况下,网站依然可以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份。
目的:高可用
自动化:无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面。
安全:现代网站的安全架构模式:
1.密码和手机校验码进行身份认证;
2.登录,交易需要对网络通讯进行加密,网站服务器上存储的用户信息也进行加密处理;
3.为了防止机器人程序滥用网络资源攻击网站,网站使用验证码进行识别;
4.常见网站攻击方式:XSS攻击,SQL攻击,进行编码转换等相应处理;
5.对于垃圾信息,敏感信息进行过滤
6.对转账交易等重要操作根据交易模式和交易信息进行风险控制。
互联网系统架构核心要素----如何衡量一个系统的架构设计:
高性能:性能是互联网的一个重要指标(TPS)。性能优化:从用户端到数据库,从代码到机房部署,影响用户的所有环节都可以性能优化。
高可用:普通商用服务器不保证高可用,很有可能出现服务器硬件故障,即宕机。大型互联网系统通常有上万台服务器,每天都必定会有服务器宕机,
因此系统高可用架构设计的前提必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务器或者应用依然可用。
系统高可用的主要手段就是冗余,应用部署在多台服务器上同时提供访问,数据存储在多态服务器上互相备份,
任务一台服务器宕机,都不影响整体可用,也不导致数据丢失。
互联网架构中的硬指标。
可伸缩:大型互联网应用通过集群的方式将多台服务器组成一个整体共同提供服务。
伸缩性:不断向集群中添加服务器,来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量架构伸缩性的主要标准:是否可以用多台服务器构建集群,
是否容易向集群中添加新的服务器。
加入新的服务器后是否可以提供和原来的服务器无差别的服务。
集群中可容纳的总得服务器数量是否有限制。
可扩展:关注系统功能性需求。互联网应用快速发展,功能不断扩展,如何设计系统架构使其能够快速响应需求变化,是系统可扩展架构主要的目的。
衡量系统扩展性好坏的主要标准:在系统增加新的业务产品时,是否可以实现对现有产品透明无影响,
不需要任何改动或者很少改动既有业务功能就可以上线新产品。
不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要收牵连进行改动。
可扩展架构的主要手段:事件驱动架构和分布式服务。
安全: 互联网是开放的,任何人在任何地方都可以访问系统。系统的安全架构就是保护系统不受恶意访问和攻击,保护网站的重要数据不被窃取。
衡量安全架构的标准:对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。
互联网系统架构总览:
前端架构:
1. App及Web开发技术;
2.浏览器及HTTP优化技术;
3.CDN;
4.动静分离;
5.图片服务;
6.反向代理;
7.DNS
网关及应用层架构:
1.网关架构---用户请求的安全认证,身份识别,负载均衡
2.负载均衡
3.动态页面静态化
4.业务拆分
服务层架构:
1.微服务架构
2.分布式消息队列
3.分布式缓存
4.分布式一致性(锁)服务
存储层架构:
1.分布式文件
2.分布式关系数据库
3.NoSQL数据库
后台架构:
1. 大数据平台
2.搜索引擎
3.推荐引擎
4.数据仓库
运维与安全:
1.数据采集与展示
2.数据监控与报警
3.攻击与防护
4.数据加密与解密
评论