「架构师训练营 4 期」 第四周 - 001
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
在线服务服务架构梳理
架构层
高可用:避免单点问题,单容器,单机柜,单交换机,单集群,单机房
高 QPS:增加缓存/请求分散/读写分离等
微服务:微服务化,服务拆分尽量减少人为事故
产品化:产品代替平台,平台代替人工
入口层
客户端链路埋点:全链路监控和埋点分析,获取客户端行为以进行客户端行为分析/监控
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 实现
版权声明: 本文为 InfoQ 作者【凯迪】的原创文章。
原文链接:【http://xie.infoq.cn/article/0bef826980ccbf958661ddc11】。文章转载请联系作者。
评论