探讨典型互联网系统使用的技术方案
思考:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?
为了回答以上问题,首先解释一个典型的大型互联网应用系统需要面临什么挑战,随后,基于面临的调整,提出了相应的技术解决方案。
一个典型的大型互联网应用系统,通常而言会面临以下挑战:
第一,高并发
随着互联网的发展,大量的用户访问系统,导致系统同时处理用户量极具增加;
第二,高可用
互联网环境下,用户无法忍受系统奔溃的问题,如果出现这样的问题,极容易导致用户流失;
第三,海量数据
大量的用户访问系统以及存储文件,导致系统需要应对海量数据信息;
第四,安全
系统处于互联网环境下,就会受到各种攻击,如何提高系统安全,保证系统不被攻击以及数据不被窃取;
第五,用户分布广泛
互联网环境下,服务的用户分布及其广泛,尤其国际大型网站,其用户来自于全球各个地区,如何为这些用户提供服务,避免因位置不同导致请求异常问题;
第六,渐进式发展
互联网架构系统无法像传统系统那样,能够一下子设计完整,而是需要根据业务的发展而不断变更,系统不断更新迭代。
基于以上挑战,尤其是高并发带来的挑战,应对的解决方案,通常是分为垂直伸缩和水平伸缩。
垂直伸缩
主要针对单一服务器进行硬件升级,进而提高单一服务器的计算性能,进而解决高并发用户访问。缺陷在于,硬件升级到达饱和点之后,要想更进一步提高性能,就需要付出极高的成本,通常不采用着用解决方案
水平伸缩,通过增加服务器的数量,构建分布式系统,进而提高系统性能,应对高并发访问,这是当今互联网企业普遍采用的解决方案,主要在于增加服务器可以无限扩展系统性能,不受到限制
基于水平伸缩方案,互联网系统成为了分布式系统,面临的问题以及解决方案如下:
单一服务器的情况下,应用程序与数据库和文件系统部署在同一台机器下,随着并发量增加,应用之间互相抢占计算资源,降低处理性能,因此,便将数据与应用分离,不同功能的应用分别部署在不同的机器上。
当用户大量访问系统,大量不频繁修改的数据进行读取,为了加快读取速度,使用分布式缓存系统加快读取速度。
随着用户并发量继续增长,应用系统进行扩展,形成分布式应用系统,用于应对高并发的用户访问量。也正是这种情况下,数据库出现了访问压力,导致许多请求出现延时,为了应对这一问题,可以采用读写分离,使用主从模式,构建数据库应用。如果数据处理和存储能力需要进一步提高,便可以采用分布式数据库解决。
为了加快用户响应,可以增加分布式 CDN 和分布式反向代理,CDN 部署在运营商,当用户请求系统时,针对静态资源,例如 html、js、css 等等,一旦 CDN 具有,则直接响应返回给用户,不用再请求系统。当没有时,则进一步请求系统,数据中心的反向代理服务器便查看是否缓存用户访问的数据,如果有,则直接返回,没有再进一步访问应用系统。
对于,文件系统,也可以采用分布式文件系统,提高文件存储能力和处理能力。
随着业务发展,越来越复杂,此时,可以采用微服务架构,针对重复调用的公共服务和模块进行微服务化,实现高内聚低耦合。同时,可以采用消息队列,实现业务解耦,服务之间只需要通过共同数据进行交互,无需直接进行访问。
分布式数据库无法提供更好的模糊搜索功能,可以采用搜索引擎和 NoSql,提供强大的查询和存储功能。
随着业务发展,依据海量数据,针对不同用户提供不同服务,实现定制化功能,采用大数据技术和智能化方案解决。
基于软件架构,提出了架构模式,也就是针对重复出现的相同问题而提出的解决方案。常用架构模式如下:
1、分层
针对系统,从横向进行各个独立的部分进行拆分,形成上层到下层的依赖访问。
最上一层为视图层,中间一层为应用逻辑层,再下一层为公共服务层,再往下一层是基础服务层,最后是存储层。
2、分割
分层是对系统进行横向切割,分割则是对系统进行纵向切割,切割为不同的功能和模块。分层与分割对系统进行切分,进而可以得出不同的功能和模块,便于进行分布式的部署,功能模块之间互不影响。
3、分布式
基于分层和分割切分出来的功能和模块,进行分布式部署,将应用部署在不同的机器上,互不影响,通过远程调用相互访问。
4、集群
将具有相同功能的模块进行集中化管理,统一提供相同的服务,分布式在于可以功能不同,集群则是功能相同。
5、异步
为了满足系统“高内聚低耦合”的目标,通过异步模式,功能之间通过公共数据进行交互,一个系统提供数据,另一个系统从公共数据区获取数据,进行业务处理
6、安全
安全架构提高系统抵抗攻击的能力,防止系统数据被窃取修改。
7、缓存
通过缓存,提高系统访问数据的速度,通常有本地缓存、远程缓存、CDN 和反向代理
8、冗余
为了增加系统可用性,防止机器奔溃导致系统不可用,为用户提供高可用服务。同时,针对数据,进行数据备份,防止数据丢失。
9、自动化
随着服务器越来越多,进行系统自动化管理,系统实现可伸缩性。依据情况不同,自动监控、自动部署、自动剔除。
以上便是典型互联网系统的常用技术方案。
评论