大型互联网系统应用了哪些技术
随着互联网的高速发展,我国网民的规模2020年超过达9亿达到全球第一。大型互联网系统应也会伴随如此之大的网民规模承受着巨大的挑战。特别是在618和双11购物节,各大电商网站在技术上也面临着巨大的挑战。很多不在互联网工作的同学可能也很好奇大型互联网系统使用什么样的技术来应对如此大的高并发用户,大流量的访问。接下来我从面临的挑战来用怎么样的技术方案来聊一聊大型互联网系统应用了哪些技术。
大型互联网系统面临的挑战主要是高并发,业务高度复杂等问题,要解决这些问题主要的思路如下:
服务拆分,主要使用微服务架构,把复杂的业务拆分成职责单一的服务方便架构演进
分布式,将相同的服务可以部署在多台服务器,服务器越多CPU,内存,存储的资源也就越多。常见的分布式方案有分布式应用服务、分布式静态资源、分布式数据和存储、分布式计算。
缓存,缓存是将数据放在离计算最近的位置以达到加快处理速度的目的,主要的几个缓存方案有:CDN、反向代理、本地缓存、分布式缓存
异步,单一服务器可以使用多线程处理,复杂的多服务器之间的调用可以消息队列来解耦并异步处理,提高响应速度,同时消息队列也可以做高并发场景例如秒杀场景的消峰处理
有了这些思路我们再从软件分层架构的各个层面来看可以使用哪些方案和技术,软件架构我们3个层,前端层、服务层、存储层来分析各个层使用哪些技术
前端层,主要是App端、web端到静态服务资源这一层主要的技术如下:
App端、web端的优化,前端性能上的优化:
减少http请求:合并CSS、合并javaScript、合并图片
使用浏览器缓存
启用压缩,前端的CSS和js文件压缩,服务器往浏览器传输文件的时候也可以进行Gzip压缩传输,压缩对服务器端也会产生消耗,需要对服务器资源和网络宽带资源做评估的情况下做权衡。
CSS放在页面最上面,javascript放在下面
CDN
CDN(Content Distribution NetWork 内容分网络)CDN部署在网络运营商的机房,因此用户请求路由的最先到达的是CDN服务器,如果把静态资源缓存在CDN上,直接返回给浏览器,最短路径返回响应,加快用户访问速度,同时也减少应用服务器的负载的压力。
反向代理
反向代理服务器具有保护网站安全的作用 ,除了安全功能,代理服务器也可以通过配置缓存功能加速Web请求,当用户第一次访问静态资源内容的时候,静态内容就被缓存在反向代理服务器上,当其他用户访问的时候就可以直接从代理服务器上返回,减轻服务器负载压力。另外反向代理服务还有负载均衡的功能,典型的反向代理服务器有Nginx 。
服务层
服务拆分微服务化
将复杂而又庞大的业务拆分开来,行成规模较小的服务,独立开发、部署、维护,处理降低系统耦合,也便于数据库业务分库。主要微服务技术有Springcloud的一套服务注册与发现:Eureka、Consul、Zookeeper、Alibaba Nacos,负载均衡器:Ribbon ,断路器:Hystrix、Resilience4j、Alibaba Sentinel,声明式HTTP客户端:Feign,API网关:Zuul、Spring Cloud getway,配置管理:Spring Cloud Config、Consul、Zookeeper、Alibaba Nacos
分布式缓存
使用缓存是优化的首选,主要减少对数据库服务器的访问,提高用户访问速度的作用。缓存的基本原理是将数据存储在较高访问速度的存储介质中。缓存的本质是一个内存Hash表,数据存疑以一个Key、Value的形式在存储在内存的Hash表中。Hash表数据读写的时间复杂度为O(1)。分布式缓存主要有Redis、MemCache等
分布式消息队列
利用消息队列机制实现业务和业务、业务和服务之间的异步消息发送及低耦合的业务关系,主流的消息队列有RabbitMQ、RocketMQ、Kafa
存储层
读写分离,分库分表
随着数据库压力越来越大,为了分散数据库压力,目前大部分主流数据库都提供主从热备功能,通过配置2台书库主从关系,可以将议一台数据库服务器的数据更新同步到另一台服务器,利用这种功能就可 以实现1主1从或则1主多从的方式实现读写分离,从而改善数据库负载压力。
做了读写分离后,随着业务量越来越大,写操作也出现了瓶颈,就可以使用分库分表的方式改善数据库压力,分库分表的中间件有cobar、TDDL、atlas、sharding-jdbc、mycat
noSql数据库、搜索引擎
随着业务越来越复杂,对数据存储和检索的需求也越来越复杂,需要采用一些关系数据库技术如NoSql和非数据库查询技术入搜索引擎。主流noSql数据库:
全文搜索引擎:Elasticsearch
3.分布式文件系统
系统中静态资源如JS,Css,图片等资源独立分布式部署,动静分离。静态资源分布式部署可以减轻应用服务器的负载压力
总结,如上只描述了部分场景是使用的技术,还有运维监控、安全、大数据分析、特殊业务场景需要的技术框架等。要支撑一个大型互联网的高效运行,运用的技术也会随着业务和场景的变化在演进,相信中国互联网的技术会慢慢赶超国际水平。
评论