网关模式—Gateway
功能
- 请求路由:客户端直接调用gateway,gateway负责路由转发注册服务上。
- 服务注册:后段无服务将API注册,gateway负责路由
- 负载均衡:策略
- 轮训
- 随机
- 一致性哈希
- 随机均衡
- 权重负载
- session粘连
- 其他
- 安全特性:支持https,用户鉴权,其他。
- 灰度发布:针对服务版本或租户等特性做灰度发布。
- API聚合:将多个后端接口聚合,减少客户端调用次数。
-
设计要点
可用性:保证高可用
- 扩展性:灵活扩展
- 性能:通常使用异步IO模型框架,netty,go,channel等。
- 安全:加密通道,鉴权。
- 运维:应用监控,包括容量,性能,异常检测等。
-
边车模式
价值
分离控制与逻辑:分离业务与路由、流控、熔断、幂等、服务发现、鉴权等组件。
适用场景:老系统改造;多语言混合分布式扩展;应用由多方提供。
分布式锁
方案
redis:setnx key value px expiretime
- value,全剧唯一,如traceID
- expiretime,过期自动释放,保证过期内完成计算
- 悲观锁:先获取锁,再操作,吞吐量低。
- 乐观锁:版本号实现,适用于多读场景。
-
要点
排他性、有自动释放方式如超时、高可用持久化、非阻塞可重入、避免死锁,不存在异常无法释放情况、集群容错性,部分鼓掌,容然可用。
分布式缓存
模式
Cache Aside 常用模式,应用要维护缓存的失效,命中,更新等操作。
- Read/Write Through,缓存代理更新数据库操作,应用视角只有一份存储。
Write Behind Cache, IO加速方式之一,更新操作只在内侧完成,异步进行批量更新数据库。
异步处理
Push模式,中心调度,复杂度高
- Pull模式,无中心调度,复杂度低
-
数据库扩展
垂直分片
-
水平分片
哈希算法分,数据离散度高,降低热点可能性。
- 通过时间范围分片,保证数据连续性。
-
要点
分片要预留足够等空间,避免重新分片。
- 分片聚合要并行做。
- 尽可能不做跨分片等事务。