训练营第四周 作业 1

用户头像
Yangjing
关注
发布于: 2020 年 10 月 11 日
训练营第四周 作业1

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述



  1. 前端

  • CDN,将图片、js、css和改动少的静态文件部署到 CDN 服务器。

CDN通常部署在运营商的服务器,离用户更近,减少请求到应用服务器,加速图片和静态资源的访问。

  • DNS 负载均衡,通过域名解析到离用户最近的服务器。提高用户请求的速度。

  • 反向代理,用来减少应用服务器的压力。squid 和 Nginx

可以作为反向代理。反向代理服务器可以缓存静态内容或短时间的动态内容,避免请求全部请求到应用服务器。

正向代理服务器,是客户端知道代理服务器的存在,比如 IP、端口;反向代理服务器,客户端不知道代理服务器的存在,以为访问的是提供真正服务的服务器



  1. 网关及应用层

  • 负载均衡服务器,提供服务集群,支持更多的请求、访问,也避免了单机问题时服务不可用。 常见有 LVS,主要用来做四层负载均衡;HAProxy、Nginx,主要用来做七层负载均衡

  • 业务拆分,对于压力大的应用服务也可以拆出来独立部署,增大单个应用的处理数量,降低不同服务之间的耦合。



  1. 服务层

  • 微服务,将应用拆解为不同的服务单独部署,服务之间通过RPC、消息队列通信。不同服务独立部署,都可以进行水平扩展,增大了整个应用的可伸缩性。RPC 可以使用 dubbo、thrift、spring cloud 中的 OpenFeign;消息队列有RabbitMQ、RocketMQ。

  • 本地缓存,常用的有缓存到本地文件系统,缓存到本地内存(Java guava)

  • 分布式缓存,常用的有 Redis 和 Memchached。减少对数据库的访问,减少数据库压力。

  • 数据库读写分离,主从架构,读写分离,增大主库的事务处理能力。如 Mysql 使用主从部署,查询走从库、写操作走主库

  • 分布式数据库,如 shardingsphere 做 Mysql 的分表。增加数据库处理能力和容量。



  1. 存储层

  • 分布式文件系统,如 HDFS。

  • NoSQL 数据库,更容易的做水平扩展,如 MongoDB、HBase。

  • 搜索引擎,如 Elasticsearch,应对模糊搜索、各种聚合和复杂查询。



  1. 运维

  • 数据采集与展示。如 Zabbix、Pinpoint、Prometheus



发布于: 2020 年 10 月 11 日 阅读数: 17
用户头像

Yangjing

关注

还未添加个人签名 2017.11.09 加入

还未添加个人简介

评论

发布
暂无评论
训练营第四周 作业1