架构师训练营 - 作业 - 第四周

发布于: 3 小时前

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

分层

  • 面临的问题:业务代码庞大复杂,代码之间耦合严重,修改扩展困难

  • 解决方案:将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。

  • 涉及的技术:设计模式,MVC 模式、DDD 设计、分层设计、六边形架构

分割

  • 面临的问题:单体应用代码庞大复杂,业务升级、开发效率、部署频率、故障隔离变得低效和困难

  • 解决方案:将系统在纵向维度上进行切分,将一个大系统拆分成一个一个的小系统

  • 涉及的技术:应用层面有微服务、中台、服务间通信如 RPC 调用、服务发现、服务治理等

分布式

  • 面临的问题:单机服务器性能受限,垂直伸缩有瓶颈(超过一定范围后,成本急剧上升)

  • 解决方案:水平伸缩解决性能瓶颈,将系统拆分为多个模块和服务,并将模块和服务部署到不同的服务器上提供服务。

  • 涉及的技术:

  • 分布式应用和服务

  • 分布式文件系统

  • 分布式静态资源

  • 分布式缓存

  • 分布式数据和存储

  • 分布式计算

集群

  • 面临的问题:单个应用服务器性能受限,无法满足高可用用户场景

  • 解决方案:将应用部署到集群,作为一个整体对外提供服务,提升系统并发能力及可靠性

  • 涉及的技术:反向代理、负载均衡、DNS轮询、主从选举机制

缓存

  • 面临的问题:频繁请求的资源,每次需要花费较多的时间读取

  • 解决方案:对请求频繁且耗时的资源进行缓存

  • 涉及的技术:CDN、反向代理、本地缓存、远程缓存

  • Radis

  • Memcache

异步

  • 面临的问题:系统响应慢,用户体验差;系统耦合严重,彼此依赖

  • 解决方案:将业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作

  • 涉及的技术:消息队列、反应式编程框架

  • RabbitMQ

  • RocketMQ

  • Kafka

冗余

  • 面临的问题:需要在服务器无法做到7x24小时不宕机的情况下,保持系统可以持续服务

  • 解决方案:对系统和数据进行备份处理

  • 涉及的技术:服务器冗余运行,数据冗余备份,

自动化

  • 面临的问题:服务繁多,版本管理、发布复杂

  • 解决方案:DevOps自动化运维

  • 涉及的技术:

  • DevOps 持续集成/部署/发布/监控

  • Jenkins/K8s/Docker/Artifactory

  • 灰度发布/金丝雀发布/蓝绿部署

安全

  • 面临的问题:恶意访问和攻击,网站重要数据窃取

  • 解决方案:对数据进行加密、校验码、过滤敏感和垃圾信息

  • 涉及的技术:XSS 攻击、SQL 注入、渗透测试、防火墙

参考连接

https://xie.infoq.cn/article/2a79b5c737a72cc2f1e65f5aa

https://xie.infoq.cn/article/1b5a043bfc55ef2fb073b131f

用户头像

心在飞

关注

还未添加个人签名 2017.10.15 加入

2个女儿的爸爸 | 程序员 | CS 反恐精英

评论

发布
暂无评论
架构师训练营 - 作业 - 第四周