架构思想
2021-04-22 20:30:45 0 举报
AI智能生成
架构设计参考
作者其他创作
大纲/内容
架构
开课吧
基础
概念
无状态服务
有状态服务
Sticky Session
分布式理论
CAP
BASE
Paxos
Raft
ZAB
一致性
幂等性
2PC
3PC
案例
电商秒杀系统
分布式Session存储
问题
service和dao建议拆分吗
service和dao通信方式?
不同业务的开发团队用一个网关还是公用一个网关
网关层是无状态的吗
网关调用业务逻辑层需要做认证吗?如何做认证
网关层的路由规则配置在yml里面,还是动态实现
网关层鉴权规则一般放在哪里?是在配置中心还是数据库?
网关层针对App的路由规则,应该在哪里配置?
业务层需要做熔断吗?
ES做异构存储有什么缺点?
MQ放在哪里比较合适
垂直拆分难还是水平拆分难?
为什么注册中心不能使用zk
写MQ为什么比写SQL快?
写MQ会写入磁盘吗
微服务
微服务架构演进
单体架构
功能拆分(水平拆分)
业务拆分(垂直拆分)
即垂直又水平拆分
实例
二手交易平台微服务架构
层次结构
网关层
1个(多个无状态实例)
业务逻辑层
多个
数据访问层
DB/Cache
配件
注册中心
zk不行
配置中心
携程开源的APOLL可以
微服务的进一步演进
Service Mesh
服务网格架构
定义
轻量级网络代理
服务网格是一个基础设施层,用于处理服务间通信,云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中实现请求的可靠传递。在实践中,服务网格通常实现为一组轻量级网络代理,他们与应用程序部署在一起,而对应用程序透明
Sidecar
和业务程序同机部署的包括了所有通信组件的网络代理
优点
Service Mesh独立进程,独立升级
业务团队专注于业务逻辑本身
一套基础设施支持多语言开发
业务团队和基础设施团队物理解耦
分层职责
展示层
详解
应对国际化业务,不同的国家展示规则不同
针对网页,IOS,安卓不同的适配
网关层与展示层协议
协议
http/https + JSON
传输协议是http,数据格式是JSON
JSON内容
定长的header
uid
用户ID
sessionID
用户的sessionID
cmd
请求的命令号
根据命令号将请求转发到不同的业务层
bodyLen
用户的body的长度
变长的body
body
body是个变长的,可以本身就是个JSON格式的数据
在nginx后面,在logic业务层前面
功能
请求鉴权
发布商品
登陆鉴权
数据完整性检查
检查uid,sessionID,cmd是否填写
body和bodyLen是否检查待确认
协议转换
路由转发
服务治理
实现
自研
网关层与服务层协议
protobuf
协议转换就是将https转换成protobuf的协议
网关无状态化
session数据保存到redis集群中
因为session并不需要严格保存,丢就让用户重新登陆即可
限流,降级,熔断
主要处理逻辑的地方
业务逻辑判断
微信黑名单检查
微信好友删除
微信发消息不重不漏
将业务层和数据层分开
CRUD
业务增删改查接口(批量)
ORM
MyBatis 3
Sharding(分库分表)
Sharding-JDBC
屏蔽底层存储差异性
MySQL/MongoDB
Redis
架构分类
同步架构
异步架构
高可用设计手段
手段
服务冗余
无状态化
负载均衡
幂等设计
超时机制
异步化设计
场景
不关心返回结果的服务
不太重要的服务,即不在核心流程中的服务
服务限流降级熔断
数据复制/缓存/Sharding
架构拆分,服务治理
服务实时监控
方案
flume + spark + redis
5秒一个点
服务分级
高并发设计手段
性能优化目标
缩短响应时间
提高并发数(增加吞吐量)
让系统处于合理状态
空间换时间
时间换空间
找到系统瓶颈
优化层次
架构设计层次
算法逻辑层次
代码优化层次
服务无状态设计与实践
服务无状态定义
服务无状态案例
负载均衡设计与实践
负载均衡系统
软件
LVS
4层
Nginx
7层
HAProxy
4层或7层
反向代理VS正向代理
负载均衡算法
Dubbo LoadBalance
Random
随机,按权重设置随机概率
RoundRobin
轮循,按照约定后的权重设置轮循比率
ConsistentHash
一致性Hash,相同参数的请求总是发到同一个提供者
完整的故障处理恢复机制
核心问题
请求
请求自动重试
服务
发现
故障自动发现
移除
故障服务自动摘除
服务熔断机制
恢复
服务恢复自动发现
业务逻辑层1故障
谁来发现
网关层的RPC框架单独统计成功率,成功率低的发消息给控制中心杀死对应服务进程
都无法处理业务逻辑的故障
zk
etcd
consul
Netflex OSS Hystrix
熔断后恢复机器
机器类型
物理机
容器化
服务无状态化设计
服务负载均衡设计
服务幂等设计
分布式锁设计
分布式事务设计
服务降级设计
服务限流/熔断设计
服务灰度发布设计
服务全链路压测设计
千亿级真实案例实战
0 条评论
下一页