5 大型网站核心架构要素(1)

最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些分享,希望能更好的帮助到大家。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

在浏览器端,可以通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传 输等手段改善性能。

还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通 过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快 请求响应速度,减轻应用服务器负载压力。

在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热 点数据处理用户请求,加快请求处理过程,减轻数据库负载压力。

也可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直 接返回响应给用户。

在网站有很多用户高并发请求的情况下,可以将多台应用服务器组成一个集群共同 对外服务,提高整体处理能力,改善性能。

在代码层面,也可以通过使用多线程、改善内存管理等手段优化性能。

在数据库服务器端,索引、缓存、SQL优化等性能优化手段都已经比较成熟。而方 兴未艾的NoSQL数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优 势也日趋明显。

衡量网站性能有一系列指标,重要的有响应时间、TPS、系统性能计数器等,通过测试这些指标以确定系统设计是否达到目标。这些指标也是网站监控的重要参数,通过监 控这些指标可以分析系统瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性。

对于网站而言,性能符合预期仅仅是必要条件,因为无法预知网站可能会面临的访 问压力,所以必须要考察系统在高并发访问情况下,超岀负载设计能力的情况下可能会 出现的性能问题。网站需要长时间持续运行,还必须保证系统在持续运行且访问压力不 均匀的情况下保持稳定的性能特性。


2 可用性

对于大型网站而言,特别是知名网站,网站宕掉、服务不可用是一个重大的事故, 轻则影响网站声誉,重则可能会摊上官司。对于电子商务类网站,网站不可用还意味着 损失金钱和用户。因此几乎所有网站都承诺7x24可用,但事实上任何网站都不可能达到 完全的7x24可用,总会有一些故障时间,扣除这些故障时间,就是网站的总可用时间, 这个时间可以换算成网站的可用性指标,以此衡量网站的可用性,一些知名大型网站可 以做到4个9以上的可用性,也就是可用性超过99.99%。

.

因为网站使用的服务器硬件通常是普通的商用服务器,这些服务器的设计目标本身 并不保证高可用,也就是说,很有可能会出现服务器硬件故障,也就是俗称的服务器宕 机。大型网站通常都会有上万台服务器,每天都必定会有一些服务器宕机,因此网站高 可用架构设计的前提是必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机 的时候,服务或者应用依然可用。

网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储 在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导 致数据丢失。

对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提 供服务,任何一台服务器宕机,只需把请求切换到其他服务器就可实现应用的高可用, 但是一个前提条件是应用服务器上不能保存请求的会话信息。否则服务器宕机,会话丢 失,即使将用户请求转发到其他服务器上也无法完成业务处理。

对于存储服务器,由于其上存储着数据,需要对数据进行实时备份,当服务器宕机 时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据依然可用。

除了运行环境,网站的高可用还需要软件开发过程的质量保证。通过预发布验证、 自动化测试、自动化发布、灰度发布等手段,减少将故障引入线上环境的可能,避免故 障范围扩大。

衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台

服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。


3 伸缩性

大型网站需要面对大量用户的高并发访问和存储海量数据,不可能只用一台服务器 就处理全部用户请求,存储全部数据。网站通过集群的方式将多台服务器组成一个整体 共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的 用户并发访问压力和不断增长的数据存储需求。

衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群

中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集 群中可容纳的总的服务器数量是否有限制。

对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使 用合适的负载均衡设备就可以向集群中不断加入服务器。

对于缓存服务器集群.加入新的服务器可能会导致缓存路由失效,进而导致集群中 大部分缓存数据都无法访问。虽然缓存的数据可以通过数据库重新加载,但是如果应用 已经严重依赖缓存,可能会导致整个网站崩溃。需要改进缓存路由算法保证缓存数据的 可访问性。

关系数据库虽然支持数据复制,主从热备等机制,但是很难做到大规模集群的可伸 缩性,因此关系数据库的集群伸缩性方案必须在数据库之外实现,通过路由分区等手段 将部署有多个数据库的服务器组成一个集群。

至于大部分NoSQL数据库产品,由于其先天就是为海量数据而生,因此其对伸缩性 的支持通常都非常好,可以做到在较少运维参与的情况下实现集群规模的线性伸缩。


4 扩展性

不同于其他架构要素主要关注非功能性需求,网站的扩展性架构直接关注网站的功 能需求。网站快速发展,功能不断扩展,如何设计网站的架构使其能够快速响应需求变 化,是网站可扩展架构主要的目的。

衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实 现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产 品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不 需要受牵连进行改动。

网站可伸缩架构的主要手段是事件驱动架构和分布式服务。

事件驱动架构在网站通常利用消息队列实现,将用户请求和其他业务事件构造成消 息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理。通过这 种方式将消息产生和消息处理分离开来,可以透明地增加新的消息生产者任务或者新的 消息消费者任务。

分布式服务则是将业务和可复用服务分离开来,通过分布式服务框架调用。新增产 品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响。可复 用服务升级变更的时候,也可以通过提供多版本服务对应用实现透明升级,不需要强制 应用同步变更。

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】

程序员代码面试指南 IT名企算法与数据结构题目最优解

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

image.png

《TCP-IP协议组(第4版)》

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

image.png

Java开发手册(嵩山版)

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

image.png

MySQL 8从入门到精通

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

image.png

Spring5高级编程(第5版)

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

image.png

JAVA核心知识点+1000道 互联网Java工程师面试题

image.png

image.png

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

链图片转存中…(img-iEJG2yoV-1715794476789)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值