架构师训练营 2 期 Week04 作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
前端
App 和 Web 的开发技术,用于和用户交互,并需要快速根据业务发展做出改变。
问题: 用户体验卡慢,高流量问题。
技术:
CDN、DNS、反向代理缓存和动静分离等技术。
浏览器及 HTTP 优化。
图片服务:根据负载均衡来一定要有指定的文件服务。并且还需要图片下载不能太频繁,防止流量过大造成压力。
服务端
微服务框架
分层、分割等设计方式:
在业务日趋发展的情况下,业务过于庞大和复杂,一个业务包含大量代码。维护性差。需要个功能分层.
采用 领域驱动设计,分层设计。
在一个应用程序不足已跟上业务发展,业务繁杂,升级迭代困难。这时需要分割一些业务功能提供服务。
使用 微服务、服务间通信,中台、消息队列等技术。
分布式及集群
单机服务器性能受限, 不能提高单机服务器的性能根据时间的推移成本越来越高不能垂直伸缩解决问题,只能采用水平伸缩添加服务器解决问题。
微服务化将不同的应用拆分成不同的业务部署在不同的服务器上,与分割一样。
分布式缓存:减轻数据库的访问压力,提高数据的读取速度。
消息队列: 服务间解耦与异步通讯的手段。缓解因瞬间的请求暴涨带来的性能压力。
以分布式服务要对外的是作为一个整体的存在,有应用集群、服务集群、分布式文件系统、redis 缓存集群等,要用到负载均衡、反向代理、DNS 等技术。
存储服务
在这庞大的系统里,存储系统也跟着复杂化:缓解文件与数据读写操作压力,分布式多服务器运行,数据也需要一致性用到以下的工具和技术,提高数据库服务器在高并发场景下数据处理能力。
分布式文件
分布式关系数据库
NoSQL 数据库
分布式消息队列
分布式缓存
分布式一致性(锁)服务
冗余
因为大型的互联网系统不跟传统的系统一样,有休息时间。互联网系统需要 24 小时不宕机。
要做到这点就要冗余一些资源出来。
涉及的技术就有:数据库主从复制、分布式数据库、应用集群管理等。
运维方面
人工管理服务已经过于复杂了。
需要一些自动化的工具维护服务。
各种服务异常和性能都要监控。
服务治理、服务发现、dev, 容器虚拟化(doker),k8s 等技术。
版权声明: 本文为 InfoQ 作者【Calvin】的原创文章。
原文链接:【http://xie.infoq.cn/article/5fa3bad4529d65a9eb8e869f9】。文章转载请联系作者。
评论