写点什么

「架构师训练营 4 期」 第四周 - 001

用户头像
凯迪
关注
发布于: 2021 年 01 月 24 日

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


在线服务服务架构梳理


架构层


  1. 高可用:避免单点问题,单容器,单机柜,单交换机,单集群,单机房

  2. 高 QPS:增加缓存/请求分散/读写分离等

  3. 微服务:微服务化,服务拆分尽量减少人为事故

  4. 产品化:产品代替平台,平台代替人工


入口层

  • 客户端链路埋点:全链路监控和埋点分析,获取客户端行为以进行客户端行为分析/监控

  • ‍DNS 解析及负载均衡:DNS 进行就近解析和异常节点驱逐等调度

  • 缓存及分发 CDN:接口纬度增加缓存减少后端压力

  • 基于 CDN 进行调度控制:能够多机房+混合云纬度实现跨机房调度


网关层

  • ‍IP/PORT 负载均衡:实现负载均衡能力,水平扩容

  • HTTP 重定向负载均衡:基于 apigateway 能够实现 http 或者 grpc 流量的负载和重定向,基于 id 属性 label 标签实现多活

  • OPENRESTY 或者 consul:实现动态发布路由



服务层

  • 前后端分离

  • 采用微服务架构

  • 建立服务中台


中间件

分布式数据库:mysql/tidb 等,分库分表的方式水平扩容提高性能,依赖主从复制和 global id 的双向同步方式保障各个中心数据一致性提高多活能力,实现 proxy 提高分库分表和多活场景的接入成本,加快故障恢复能力。

NOSQL 数据库:memcache/redis(cluster)/MongoDB/hbase 等,这里包括各类缓存,mc 这里多用于针对大 key 场景,redis cluster 目前主要使用的缓存,mongodb 做文档和图片类存储比较优秀

分布式消息:针对于削峰/接耦/异步,主要有 Kafka、RocketMQ、RabbitMQ

分布式事物:解决事物提交的分布式锁和消息一致性问题,二阶段提交/三阶段提交

分布式定时任务:针对于定时任务的场景,例如 Quartz 和 xxl-job 等

注册中心:consul etcd zk 等基于 kv 实现动态路由,建议自行二次开发

配置中心:通过 apollo 等可以实现自定义配置,基础的 kv 服务,建议自行二次开发


存储层

简单场景使用 NFS

共享宕复杂场景可以使用 oss 或者类似产品


数据平台

  • 搜索引擎

  • 搜索引擎倒排索引

  • 搜索引擎结果排序

  • 大数据计算 MapReduce

  • 大数据仓库 Hive

  • 快速大数据计算 Spark

  • 大数据流计算


视频平台

  • 解码/转码

  • 视频流分发


其他:

  • 监控系统:grafana 和 promethues,cat 可以实现自定义大盘能力,不过前断使用建议自行开发

  • 日志平台:elk 为主

  • 混沌工程:例如 chaosblade 和 blademonkeys 等实现混沌工程

  • 全链路:从客户端经过代理网关到服务端,以及各类中间件,基于此实现全链路监控/压测/染色等

  • 安全:系统安全宕防范,业务安全的渗透测试,日常的 waf 拦截等

  • CICD:基于 K8S 和 docker 实现


发布于: 2021 年 01 月 24 日阅读数: 40
用户头像

凯迪

关注

还未添加个人签名 2020.06.01 加入

还未添加个人简介

评论

发布
暂无评论
「架构师训练营 4 期」 第四周 - 001