系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
目录
千万流量:大致就是每秒钟几百个请求
服务化
服务化的好处
- 提升复用性,消除代码拷贝
- 保证专注性,屏蔽底层(数据库集群)复杂性,防止复杂性扩散
- 保证SQL的高质量
- 能够保证数据库的扩展性,消除数据库耦合
- 提升研发效率,调用方就像调用本地函数一样使用服务
微服务的粒度
四种微服务粒度
- 统一一个服务层
- 一个子业务一个服务(时间最多)
- 一个库一个服务
- 一个接口一个服务
服务化下系统的高可用
总的方法论:集群冗余 + 故障的自动转移
细节:
- “端” 到 “反向代理” (反向代理冗余,keepalived + vip)
- “反向代理” 到 “站点应用” (站点层冗余,nginx和web-server之间的存活性探测与故障自动转移)
- “站点应用” 到 “微服务“(服务层冗余,server连接池来实现故障自动转移)
- ”微服务“ 到 ”缓存“(客户端对缓存双读双写,或缓存集群主从同步,sentinel保活与故障自动转移)
- ”微服务“ 到 ”读库“(微服务到读库的连接池来实现)
- ”微服务“ 到 “写库”(写库的冗余,写库keepalived + vip)
微服务下的高并发
方法论:垂直扩展,水平扩展(理论无限性能)
细节:
- 反向代理层(DNS轮询)
- 站点应用层(nginx配置)
- 微服务层(服务连接池)
- 数据层(数据切分)
微服务下的负载均衡
- 反向代理层,站点应用层,微服务层,数据层分别通过DNS轮询,nginx,服务连接池,数据与请求的均衡来实现负载均衡
- 连接池,高可用/高并发/负载均衡,都与连接池有关
- 过载保护不掉底,静态权重,动态权重法
数据库
数据库基础设计,设计什么
任何脱离业务的架构都是耍流氓
- 依据“业务模式”设计库表结构
- 依据“访问模式”