架构师训练营 - 第四周课后练习
问:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
参考答案:https://xie.infoq.cn/article/2a79b5c737a72cc2f1e65f5aa
典型的大型互联网应用对互联网架构模式的应用,以及应用过程中使用的相关技术简析:
1、分层
1)面临的问题:业务复杂,一个业务逻辑的处理中包含了太多代码,导致代码之间耦合严重
2)解决方案:按照功能层次对系统进行横向维度的拆分,使各部分职责单一化
3)涉及的技术:MVC模式、DDD设计、分层设计、六边形架构
2、分割
1)面临的问题:业务过于复杂和庞大,导致一个应用中包含了太多的业务代码,使得业务的升级迭代变得困难
2)解决方案:将系统在纵向维度上进行切分,将一个大系统拆分成一个一个的小系统
3)涉及的技术:应用层面有 微服务、中台、服务间通信如RPC调用、服务发现、服务治理 等
3、分布式
1)面临的问题:单机服务器性能受限,系统不能通过垂直伸缩解决问题或垂直伸缩成本高,故转而通过水平伸缩解决性能瓶颈
2)解决方案:将系统拆分为多个模块,并将多个模块部署在不同服务器上
3)涉及的技术:
a. 应用层面:类似分割中使用的技术
b. 数据层面:数据库分库分表、数据库读写分离、分布式数据库、分布式文件系统、分布式缓存 等
4、集群
1)面临的问题:同一个模块部署在多台服务器上后,需要作为一个整体对外提供服务
2)解决方案:将多台服务器上的应用构成一个集群,并对一个集群中的服务器按主从进行区分,根据区分的主从角色对外提供服务
3)涉及的技术:反向代理、负载均衡、DNS轮询、主从选举机制
5、缓存
1)面临的问题:针对频繁请求的资源,每次需要花费较多的时间进行计算
2)解决方案:对请求频繁且耗时的资源进行缓存,避免重复计算
3)涉及的技术:CDN、反向代理、本地缓存、分布式缓存
6、异步
1)面临的问题:频繁的向系统写入数据,达到性能瓶颈;服务之间直接调用关系复杂,依赖严重
2)解决方案:将业务操作分成多个阶段,各阶段之间通过共享数据而不是直接调用的方法进行协作
3)涉及的技术:消息队列、反应式编程框架
7、冗余
1)面临的问题 :需要在服务器无法做到7x24小时不宕机的情况下,保持系统可以持续服务
2)解决方案:对系统和数据进行备份处理
3)涉及的技术:数据库复制、分布式数据库、应用集群管理
8、自动化
1)面临的问题 :服务较多且变更较频繁的情况下,通过人工管理服务过于复杂
2)解决方案:系统&服务的自动化运维和监控
3)涉及的技术:服务发现&治理、devops、serverless
评论