面试精选:关于大型网站系统架构你不得不懂的10个问题!

1. 你使用过哪些组件或者方法来提升网站性能,可用性以及并发量(1)提高硬件能力、增加系统服务器。(当服务器增加到某个程度的时候系统所能提供的并发访问量几乎不变,所以不能根本解决问题)(2)使用缓存(本地缓存:本地可以使用JDK自带的 Map、Guava Cache.分布式缓存Redis、Memcache.本地缓存不适用于提高系统并发量,一般是用处用在程序中。比如Spring是如何实现单例...
摘要由CSDN通过智能技术生成

1. 你使用过哪些组件或者方法来提升网站性能,可用性以及并发量

(1)提高硬件能力、增加系统服务器。(当服务器增加到某个程度的时候系统所能提供的并发访问量几乎不变,所以不能根本解决问题)

(2)使用缓存(本地缓存:本地可以使用JDK自带的 Map、Guava Cache.分布式缓存Redis、Memcache.本地缓存不适用于提高系统并发量,一般是用处用在程序中。比如Spring是如何实现单例的呢?大家如果看过源码的话,应该知道,Spiring把已经初始过的变量放在一个Map中,下次再要使用这个变量的时候,先判断Map中有没有,这也就是系统中常见的单例模式的实现。)

(3)消息队列 (解耦+削峰+异步)

(4)采用分布式开发 (不同的服务部署在不同的机器节点上,并且一个服务也可以部署在多台机器上,然后利用 Nginx 负载均衡访问。这样就解决了单点部署(All In)的缺点,大大提高的系统并发量)

(5)数据库分库(读写分离)、分表(水平分表、垂直分表)

(6)采用集群 (多台机器提供相同的服务)

(7)CDN 加速 (将一些静态资源比如图片、视频等等缓存到离用户最近的网络节点)

(8)浏览器缓存

(9)使用合适的连接池(数据库连接池、线程池等等)

(10)适当使用多线程进行开发。

2. 设计高可用系统的常用手段

(1)降级: 服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式:可以拒接服务,可以延迟服务,也有时候可以随机服务。根据服务范围:可以砍掉某个功能,也可以砍掉某些模块。总之服务降级需要根据不同的业务需求采用不同的降级策略。主要的目的就是服务虽然有损但是总比没有好;

(2)限流: 防止恶意请求流量、恶意攻击,或者防止流量超出系统峰值;

(3)缓存: 避免大量请求直接落到数据库,将数据库击垮;

(4)超时和重试机制: 避免请求堆积造成雪崩;

(5)回滚机制: 快速修复错误版本。

3. 现代互联网应用系统通常具有哪些特点?

(1)高并发,大流量

(2)高可用:系统7×24小时不间断服务;

(3)海量数据:需要存储、管理海量数据,需要使用大量服务器;

(4)用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别;

(5)安全环境恶劣:由于互联网的开放性,使得互联网更容易受到攻击,大型网站几乎每天都会被黑客攻击;

(6)需求快速变更,发布频繁:和传统软件的版本发布频率不同,互联网产品为快速适应市场,满足用户需求,其产品发布频率是极高的;

(7)渐进式发展:与传统软件产品或企业应用系统一开始就规划好全部的功能和非功能需求不同,几乎所有的大型互联网网站都是从一个小网站开始,渐进地发展起来。

4. 谈谈你对微服务领域的了解和认识

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值