架构师训练营第 04 周—— 练习
作业一:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
解决性能问题的相关技术方案和手段
浏览器:减少HTTP请求、浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等
CDN:将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。
反向代理服务器:缓存热点文件,加快请求响应速度,减轻应用防护武器负载压力
本地缓存和分布式缓存:加快请求处理过程,减轻数据库负载压力
异步操作:将用户请求发送至消息队列等待后续任务处理,当前请求直接返回响应给用户
服务器集群:提升整体并发处理能力,改善性能
代码:多线程、改善内存管理
数据库:索引、缓存、SQL优化
NoSQL:提供优化数据模型、存储结构、伸缩特性等手段
解决可用性问题的相关技术方案和手段
冗余
软件开发过程的质量保证
解决伸缩性问题的相关技术方案和手段
对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入服务器。
对于缓存服务器集群,加入新的服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。需要改进缓存路由算法保证缓存数据的可访问性。
对于关系数据库,很难做到大规模集群的可伸缩性,因此必须在数据库之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群。
对于NoSQL数据库,其对伸缩性的支持通常都非常好,可以做到在较少运维参与的情况下实现集群规模的线性伸缩。
解决扩展性问题的相关技术方案和手段
事件驱动架构:消息队列
分布式服务
解决安全性问题的相关技术方案和手段
客户端脚本安全:浏览器安全、防跨站脚本攻击、防跨站点请求伪造、防点击劫持、防网页钓鱼
服务器端应用安全:认证与会话管理、访问控制、加密算法安全、防SQL注入攻击、防文件上传漏洞、防Web框架漏洞、防拒绝服务攻击、防开发语言安全、防Web Server配置安全
业务逻辑安全
评论