命题作业和总结—第四周

用户头像
于江水
关注
发布于: 2020 年 06 月 29 日

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

首先需要拆分大型互联网应用系统的不同层次:

  • 安全相关

  • 前端相关

  • 后端相关

  • 数据和存储相关

  • 网络、硬件和运维相关

  • 数据和运营相关



之后按照不同层次进行详细说明:

安全相关

  • VPN 公网内网分离,办公网、生产网、外网三网隔离,办公网统一出口,控制流量设置防火墙。生产网内网隔离,设置跳板机登陆和访问,添加日志和审计。外网访问内网需要通过 VPN 链接访问

  • 防火墙和安全软件

  • 常见的安全防护,代码层的一些过滤处理等

前端相关

  • CDN 和静态资源存储,文件管理系统,做系统的动静分离

  • 前端框架以及相关配套技术,比如 React、Vue、Angular 以及相关打包技术 webpack、rollup、vite、babel 等

  • 前端工程化相关技术和搭建,CICD、团队代码规范和校验等

  • 客户端跨端技术方案,小程序、React Native、Flutter 等

后端相关

  • 后端框架以及相关技术,Spring、Express.js、Ruby on Rails 等

  • 工程化相关技术,CICD、容器化应用、团队规范等

  • BFF 层,用于聚合后端模型,按需向各个端提供数据

  • 负载均衡,增加冗余,提高可用性

  • 分布式消息队列,削峰解耦大量请求,减少单点崩溃

  • 分布式缓存和机制的设计,提升系统性能,减轻数据库等压力

  • Job 系统,实现定时任务、背后任务,按照优先级和系统压力进行运行

  • Severless 架构和技术,拆解函数,无需运维,自动扩容

数据和存储相关

  • 关系型数据库:MySQL、PostgreSQL 等

  • 非关系型数据库:MongoDB、PostgreSQL 等

  • 高性能缓存:Redis

  • 文件管理:OSS、S3 等

网络和硬件相关

  • 网络:VPN、VPC 等构建

  • 硬件:直接用云服务好了,别自己折腾了

  • 运维:云服务平台、Docker、Dokku、Kubernetes、虚拟机、运维工具、数据统计和上报(LogDNA)、监控平台(DataDog)等

数据和运营相关

  • 数据收集平台:ELK、LogDNA、自建日志收集平台、前端埋点上报、后端日志上报

  • 大数据分析平台:HBase、MapReduce、Spark、流计算、消息队列、离线计算、数据查看和管理系统、图表等组件

  • 运营平台:前端相关技术、图表和表单等



总结

架构设计主要还是持续演进,通常遵循以下阶段:

  1. 简单单体应用

  2. 应用数据分离,拆分应用、数据库和存储等

  3. 引入缓存

  4. 负载均衡和分布式缓存

  5. 数据库读写分离

  6. 动静分离和 CDN、负载均衡等

  7. 分布式文件系统和数据库,分库分表

  8. NoSQL 和搜索引擎,冷热数据拆分

  9. 业务拆分

  10. 微服务和中台化

  11. 大数据和智能化

在这些模式和阶段中,可以进行跨越式升级,比如目前微服务已经比较成熟,可以直接基于微服务开发应用。数据库等也可以使用云数据库,直接读写分离。

在每年的业务目标制定的时候,需要对系统进行评估,压测性能,然后按照业务目标进行系统架构升级和相关工作,提前安排好,预留一些 buffer。

如何衡量一个系统的架构设计?

  • 高性能

  • 高可用

  • 可伸缩

  • 可扩展

  • 安全

架构演进最关键的是要适应业务和需求的发展和要求,灵活多变,以快速满足实际需求为目标。比如业务在飞速发展,掏钱买服务器比招人自研框架要快得多而且比较稳,后期自研数据库要比购买商业系统方便,就可以升级。



发布于: 2020 年 06 月 29 日 阅读数: 36
用户头像

于江水

关注

还未添加个人签名 2018.07.08 加入

还未添加个人简介

评论

发布
暂无评论
命题作业和总结—第四周