【第四周】命题作业——大型互联网系统的技术解决方案和手段
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
答:
大型互联网一般面临大并发,高可用,高性能等挑战。
1、高性能问题
计算密集型:优化计算过程或算法提升速度
IO密集型:缓存,异步,批量
缓存
缓存是解决性能问题的重要手段。主要通过在更高速或更近位置的存储上存放数据,用于多次重复使用数据,且读次数明显多于写次数的场景。缓存可以应用在系统的各个层级。
技术手段
1、静态数据缓存:浏览器缓存 》CDN 》反向代理
2、动态数据缓存:本地缓存:比如guava cache 》远程缓存:比如redis
静态缓存在位置上离用户更近,且消耗更少的资源,所以一般网站也会进行动静分离和动态页面静态化等方式进行优化。
CDN服务:内容分发服务,解决访问的性能问题,主要针对静态资源,从地域和电信服务商角度,进行定向的缓存资源,以提供快速访问服务。以前公司运营的直播点播服务就会使用CDN服务。
2、高并发问题
消息队列:削峰填谷,快速响应,提高可用性,隔离,解耦。比如RocketMQ、Kafka、RabbitMQ
负载均衡:路由,协调负载,比如F5、LVS、Nginx
集群:大并发处理能力
读写分离(主从复制,主主复制):解决数据库读写压力。
分库分表(垂直切分):通过新增硬件资源提升并发处理能力。MyCat,Apache ShardingSphere
分布式图片服务:提升并发访问能力
多线程:提升并发处理能力
分布式计算:提升并发处理能力
池化技术:连接池、线程池
3、高可用问题
冗余
主备(有状态),故障转移
心跳+集群(无状态)
灰度发布
限流、降级、熔断
4、海量数据问题
搜索引擎:通过倒排索引,提供快速的搜索服务
分库分表(水平切分):解决单表数据量过大的问题
5、可伸缩性
集群:水平伸缩能力,无状态水平扩容,有状态做分片路由。
6、可扩展性
微服务:分布式部署能力,扩展能力
中台:提供通用服务、基础服务
7、安全问题
防火墙
网关
web攻击
漏洞攻击
DDos攻击
评论