大型互联网架构常见问题

1.哪些组件和方法可以来提升网站性能,可用性以及并发量?

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

   使用缓存(本地缓存:本地可以使用jdk自带的Map , Guava Cache。分布式缓存:Redis,Memcache。本地缓存不适用于提高系统并发量,一般是用在程序中。比如Spring实现单例的时候,Spring把已经初始化的变量放在一个Map中,下次再次使用这个变量时,先判断Map中有没有,这就是系统中常见的单例模式实现。)

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

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

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

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

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

   浏览器缓存

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

   适当使用多线程进行开发

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

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

限流:防止恶意请求流量,恶意攻击,或者防止流量超出系统峰值。

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

超时和重试机制:避免请求堆积造成雪崩。

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

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

高并发,大流量。

高可用,系统7*24小时不间断服务。

海量数据:需要缓存,管理海量数据,需要使用大量服务器。

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

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

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

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

你可能感兴趣的:(互联网架构)