训练营第四周 作业 1
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述
前端
CDN,将图片、js、css和改动少的静态文件部署到 CDN 服务器。
CDN通常部署在运营商的服务器,离用户更近,减少请求到应用服务器,加速图片和静态资源的访问。
DNS 负载均衡,通过域名解析到离用户最近的服务器。提高用户请求的速度。
反向代理,用来减少应用服务器的压力。squid 和 Nginx
可以作为反向代理。反向代理服务器可以缓存静态内容或短时间的动态内容,避免请求全部请求到应用服务器。
正向代理服务器,是客户端知道代理服务器的存在,比如 IP、端口;反向代理服务器,客户端不知道代理服务器的存在,以为访问的是提供真正服务的服务器
网关及应用层
负载均衡服务器,提供服务集群,支持更多的请求、访问,也避免了单机问题时服务不可用。 常见有 LVS,主要用来做四层负载均衡;HAProxy、Nginx,主要用来做七层负载均衡
业务拆分,对于压力大的应用服务也可以拆出来独立部署,增大单个应用的处理数量,降低不同服务之间的耦合。
服务层
微服务,将应用拆解为不同的服务单独部署,服务之间通过RPC、消息队列通信。不同服务独立部署,都可以进行水平扩展,增大了整个应用的可伸缩性。RPC 可以使用 dubbo、thrift、spring cloud 中的 OpenFeign;消息队列有RabbitMQ、RocketMQ。
本地缓存,常用的有缓存到本地文件系统,缓存到本地内存(Java guava)
分布式缓存,常用的有 Redis 和 Memchached。减少对数据库的访问,减少数据库压力。
数据库读写分离,主从架构,读写分离,增大主库的事务处理能力。如 Mysql 使用主从部署,查询走从库、写操作走主库
分布式数据库,如 shardingsphere 做 Mysql 的分表。增加数据库处理能力和容量。
存储层
分布式文件系统,如 HDFS。
NoSQL 数据库,更容易的做水平扩展,如 MongoDB、HBase。
搜索引擎,如 Elasticsearch,应对模糊搜索、各种聚合和复杂查询。
运维
数据采集与展示。如 Zabbix、Pinpoint、Prometheus
版权声明: 本文为 InfoQ 作者【Yangjing】的原创文章。
原文链接:【http://xie.infoq.cn/article/4b90cebb9c6e3aa702ce64f6e】。文章转载请联系作者。
评论