🗒️微服务架构
type
status
slug
summary
tags
category
icon
password
Date
微服务架构
拆分
数据库演化
- 主从模式(一主多从,多主动从)
- 主库写入,从库查询
- 问题:
- 主从延时问题
- 解决:
- 需要监控从库延时
- 优先把对时间不敏感的数据,改为读从库(比如:统计信息,排行榜),最新的信息读主库
- 分库分表
- 控制单张表数据在千万以内
- 水平拆分,垂直拆分
应用演化
- 多台服务器部署,使用nginx负载均衡
问题:本地文件依赖问题,即上传的文件保存在本地服务器,导致其他机器上访问时,有的文件能访问,有的访问不到
解决:每台服务器挂载同一个NFS,并配置同样的目录
- 微服务,k8s容器化
使用分布式缓存
大致:单机mysql 并发1000,单机redis 10万
发现
管理所有服务信息的注册中心(配置中心)
功能:
注册:
查询:
健康查询:

服务发现实现方案:
Apache Zookeeper:
Hadoop,Kafka,Hbase,Electsearch 都内置了Zookeeper
ETCD
使用raft实现分布式一致性算法,k8s组件
file
简单
治理
- 主动超时
- 限流
- 熔断:暂时停止对该服务的调用
- 降级
- 读旧,planB,默认值
- 放弃部分请求,降低质量,提高门槛,反向过滤,事后补偿
- 隔离
典型:秒杀场景,
- 扩容
垂直扩展:更强的机器
优点:系统简单
缺点:高端机器价格贵,扩展水平有上限
水平扩展:更多的机器
重点思考:无状态服务水平扩展简单,有状态服务水平扩展非常复杂
面试问题:
1 后端接口只能支撑最大QPS为1w。要怎么来保护它呢?
2 发短信的接口,不超过:100次/时,1000次/24小时。要怎么实 现呢?
3 某个接口的并发配额是10次/秒,用不完的部分,可以在并发超过10次/秒的突发流量时使用。你会使用怎么样的策略来处理呢?
k8s集群
组建
管理
访问
gRPC框架
网络传输
数据包序列化
protoc插件
源码
PB
开发
服务运营
监控
告警
日志
缓存一致性
使用Cache Aside 策略,即更新数据时,先删除缓存,在读取时,发现没有缓存,则更新缓存
Loading...
