【架构师训练营】第四期作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
前端:
防盗链
通过判断HTTP请求Refer头部来判断访问来源,从而防止第三方非允许情况下引用站内资源,减少流量浪费
浏览器缓存
通过Expires和Cache-Control等头部来控制是否要重新请求服务器字段,节省站内带宽
CDN加速
用户访问离自己最近的CDN站点,如果用户请求的资源在该CDN站点内有缓存,那么就直接访问,不需要继续访问内部服务器。有效减少了读资源的请求,节省站内带宽,缓解服务器压力。
图片服务器
因为图片读写比较耗费IO,所以部署在单独的服务器上,分担服务器的IO负载
网关:
负载均衡
负载均衡服务器不处理用户请求,只对用户请求做派发,均摊服务器压力,同时也能更好地做横向扩展
动态页面静态化
对于用户访问集中的动态页面,那么可以在网关处做一个缓存,因为动态页面需要做运算查数据,访问量越大,压力越大,CPU负载也就越高,数据库的访问压力也会变大。
服务层:
消息队列
对于用户流程无影响的操作,可以做异步处理,将操作封装成一个队列任务,推送到任务队列中。让用户请求可以提前返回,使得资源可以提前释放,降低请求的生命周期,缓解服务器压力。
分布式缓存
对于用户高频访问的信息,可以将数据拷贝一份放在缓存中,减少了对数据库的直接访问,降低数据库的压力
服务集群
为了保证服务的高可用,在一台机器宕机时不影响业务正常运行,那么就需要对同一个服务做冗余。
存储层:
分布式文件系统
分摊大量文件访问请求的压力
分布式关系数据库、读写分离
读写操作分离,分摊数据库压力。数据库主从复制,以保证在一台数据库宕机时,服务仍然可以正常运行
NoSQL数据库
后台架构:
大数据平台
搜索引擎
推荐引擎
数据仓库
评论