写点什么

架构师训练营 - 第四周课后练习

用户头像
joshuamai
关注
发布于: 2020 年 11 月 14 日

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



参考答案: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



用户头像

joshuamai

关注

还未添加个人签名 2019.05.21 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 第四周课后练习