「架构师训练营」第 4 周 学习总结

用户头像
guoguo 👻
关注
发布于: 2020 年 06 月 29 日

互联网系统面临的挑战

  • 互联网系统需要面对高并发的用户访问。

  • 提供7x24小时不间断的高可用服务。

  • 需要存储、管理海量的数据

  • 用户分布复杂,网络情况复杂

  • 由于互联网的开放性,更容易受到攻击,安全环境恶劣

  • 需求变更快,发布频繁

  • 大型互联网站都是从小的网站,渐进式发展的。

应对高并发挑战

垂直伸缩

随着用户并发访问量的增加,通过提供性能更强大的硬件应对。

互联网是不能长期依赖于垂直伸缩的方案,其原因:

  1. 成本较高,计算能力越高增加的成本会更多。

  2. 垂直伸缩有物理极限。

  3. 操作系统或应用程序自身制约着垂直伸缩的上限。



水平伸缩



通过增加服务器的数量,提升计算能力。成本不会随计算能力增高得越高而成本增加更多。也不会遇到单台服务器的极限。

互联网架构的演进

单体架构

应用程序、文件存储、数据库都在一台服务器上。



应用数据分离



使用缓存改善性能



应用服务器集群改善系统并发处理能力



数据库读写分离



使用反向代理和CDN加速



分布式文件系统与分布式数据库系统



使用NoSQL和搜索引擎



业务拆分



微服务及中台化



大数据与智能化



互联网架构模式

分层

将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。

分割

纵向切分。将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。有助于软件的开发和维护,也便于分布式部署,提高网站的并发处理能力和功能扩展能力。

分布式

将不同模块部署在不同的服务器上,通过远程调用协同工作。

集群

多台服务器部署相同应用构成一个集群,通过负载均衡共同对外提供服务。

异步

将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。从而加快响应速度,削峰,提供系统可用性。

冗余

保证服务器在出现故障的时候可以继续服务,数据不会丢失,就需要一定程度的服务器冗余、数据冗余备份。

自动化

无人值守的情况下网站可以正常运行。目前主要集中在运维方面。(例如自动监控,自动启动)

安全

通过密码手机验证码进行身份认证;网络通讯加密、敏感信息加密,使用验证码验证非机器操作,对于XSS、SQL注入进行编码转换,对于垃圾信息、敏感信息过滤,交易信息的风控等。



互联网架构核心要素

高可用

当出现服务器宕机,服务或应用仍然可用。

应用冗余,部署在多台服务器上构建集群。

数据冗余,存储在多台服务器上互相备份。

任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。



可伸缩

不断向集群中加入服务器缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

可容易地向集群中添加新的服务器,并提供与原来的服务器无差别的服务。可容纳总的服务器数量无限制。



可扩展

系统增加新的业务产品时,对现有产品透明无影响,不需要任何改动或很少改动既有业务功能就可以上线新产品。少耦合。

可通过事件驱动架构和分布式服务解决。



安全

针对现存和潜在的各种攻击与窃密手段 ,有可靠的应对策略。



互联网架构技术一览

前端架构

App及Web开发技术、浏览器及HTTP优化技术、CDN、动静分离、图片服务、反向代理、DNS。



网关及应用层架构

网关架构、负载均衡、动态页面静态化、业务拆分。



服务层架构

微服务框架、分布式消息队列、分布式缓存、分布式一致性(锁)服务。



存储层架构

分布式文件、分布式关系型数据库、NoSQL数据库。



后台架构

大数据平台、搜索引擎、推荐引擎、数据仓库。



运维与安全

数据采集与展示、数据监控与报警、攻击与防护、数据加密与解密。



案例

维基百科



淘宝技术发展



宅米网



新浪微博



用户头像

guoguo 👻

关注

还未添加个人签名 2017.11.30 加入

还未添加个人简介

评论

发布
暂无评论
「架构师训练营」第 4 周 学习总结