课程大纲

3 阅读44分钟

Go 技术专家训练营课程大纲

平台类服务:通知平台

项目整体介绍

项目目标

通过构建一个平台类服务的模板项目,解决实际工作中遇到的多业务方接入、需求多样化、高可用性保障以及高并发性能优化等核心问题。该项目将涵盖多业务方对接、高性能架构设计、多渠道支持、事务机制等关键功能模块,并结合缓存策略、事务回查、服务治理等技术手段,全面提升系统的灵活性、可用性和性能。通过本项目的学习,学员将掌握平台类服务的核心设计思路与最佳实践,并提升其在复杂业务场景下的方案落地能力,使其能够从容应对以下典型业务场景:

  1. 需求多样化与多业务方对接场景
  • 场景描述:在业务方数量众多且需求差异显著的情况下,如何设计一个灵活且通用的平台服务,满足各类业务方的不同需求。
  • 应对策略:
    • 设计通用标准接口:设计满足不同业务方共性需求的标准化接口,确保接口的一致性、易用性与可扩展性。
    • 设计高扩展性接口:采用模块化和可配置化的设计方法,支持业务方需求的快速迭代与功能扩展,确保平台能够适应不断变化的业务需求。
    • 设计业务方接入控制方案:建立完善的接入管理机制,包括身份验证、权限控制和流量管理,确保平台能够安全、高效地管理多业务方的接入流程。
  1. 高可用性要求场景:
  • 场景描述:在平台对稳定性和可用性有较高要求的情况下,如何设计和实施高可用架构方案,保障服务的持续运行。
  • 应对策略:
    • 设计复杂服务治理方案:掌握复杂服务治理方案设计思路及技巧,如负载均衡、自动故障转移、冗余部署和分布式架构设计,确保系统具备高可用性。
    • 设计复杂容错策略:掌握复杂容错策略的设计思路及技巧,包括服务降级、熔断机制、重试策略和数据备份,确保系统在遭遇内部或外部依赖故障时依然能够正常运行。
  1. 读写高并发场景:
  • 场景描述:在平台面临读写请求均为高并发的情况下,如何设计系统架构以保证性能与可用性,满足大规模用户访问需求。
  • 应对策略:
    • 设计高性能的数据处理方案:掌握高并发读写优化技术,如数据库分片、缓存策略、异步处理和消息队列的应用,提升系统的吞吐量和响应速度。
    • 识别并解决性能瓶颈:运用性能分析工具,识别系统中的性能瓶颈,针对性地优化代码、数据库查询和资源配置,确保系统在高并发场景下依然保持稳定运行。
    • 实施有效的负载管理:应用限流、熔断和降级等策略,合理分配和管理系统资源,防止过载导致的服务崩溃,确保系统在高负载下的稳定性和可用性。

第一周:通知平台需求分析与架构设计

教学目标
  • 掌握平台类系统需求分析的技巧,能够识别核心业务需求和非功能性需求
    • 设计多业务方对接的高扩展性通知平台架构
    • 理解多业务方对接的平台类系统的设计和实现要素,例如接口设计、权限控制、数据隔离等
    • 掌握使用 DeepSeek 协助进行场景分析、竞品分析和类似产品分析的技巧
  • 掌握系统分析和架构设计的技巧,能够设计出高扩展、高可用、高性能的系统架构
    • 掌握使用 DeepSeek 协助进行架构设计、评估设计方案的技巧
      • 通过对话式交互验证架构可行性
      • 自动生成架构图PlantUML代码
      • 提供事务状态机设计建议
  • 理解多渠道、多调度场景下的复杂业务需求,并转化为技术方案。
  • 完成通知平台的需求分析和总体设计,产出清晰的需求文档和架构设计文档
    • 在 DeepSeek 的协助下快速撰写文档的技巧
  • 掌握通知平台的核心功能设计和实现
详细内容
  1. 通知平台的业务场景分析
  • 使用 DeepSeek 协助进行业务场景、竞品分析和类似产品分析

  • 通知的唯一性保证

  • 多渠道支持:综合考虑短信、邮件、站内信、电话拨号等

    • 渠道类型:短信、邮件、站内信、电话拨号、App 推送、微信公众号等
    • 渠道特性分析:成本、到达率、时效性、可靠性
    • 渠道选择策略:智能路由、降级策略、成本优化、用户自定义选择策略支持方案
    • 渠道扩展机制:插件化设计、标准化接口
  • 业务方发送策略:立刻发送、固定时间点发送、截止时间发送

  • 事务机制:保证通知的可靠性,实现事务通知和回查机制

    • 事务通知与回查机制的设计
    • 超时未确认的自动取消。
    • 事务状态机:状态定义与转换、异常处理机制
  1. 多渠道接口设计与实现
  • 接口适配层:屏蔽底层渠道差异,实现通用接口到专属接口的转换

  • 渠道专属接口与通用接口的抽象设计与实现。

  • 抽象层设计:通用接口定义、扩展点设计、SPI 机制实现

  • 适配层实现:渠道适配器、错误码标准化、重试策略

  1. 业务方发送策略设计与实现
  • 固定时间发送
  • 截止时间发送
  1. 提供给业务方的多形态接口 :
  • 同步接口:gRPC 接口设计、超时控制、重试机制

  • 异步接口:gRPC 异步接口、MQ 解耦设计、消息幂等性、顺序保证

  • 批量接口

  1. 事务机制
  • 事务设计:预发送、确认发送、取消发送、超时未确认取消

  • 回查统一接口与业务方接入方式:回查 HTTP 接口、回查 gRPC 接口、重试策略

  • 异步通知机制:通过 MQ 通知事务消息发送结果、业务方提供 HTTP 或者 gRPC 等回调接口

  • 事务模型:预发送、确认发送、取消发送、超时处理

第二周:通知平台业务方接入方案、安全保障和资源控制

教学目标
  • 设计和实现灵活的业务方接入方案,满足不同业务方的需求
  • 掌握资源控制策略,例如容量规划、限流等
  • 掌握业务配置与动态生效的设计与实现能力
  • 掌握识别观测重点的技巧、设计监控方案、识别告警点并且定义合适的告警规则
  • 掌握借助 DeepSeek 进行容量估计、规划的方法
  • 掌握借助 AI 工具完成前端界面生成的方法,保持对类似工具的关注
详细内容
  1. 通知平台附属管理后台分析
  • 业务申请资源与审批流程
  • 附属管理功能:查看结果、重试等功能
  • 使用 AI 工具生成前端界面:前后端适配的关键点、界面微调
  1. 业务配置与动态修改
  • 实时生效解决方案
  1. 资源控制
  • 容量规划与限制设计:系统容量评估方法、各类资源使用上限设计
  • 利用 DeepSeek 估算容量:根据历史数据预测 QPS/TPS、生成资源估算公式
  • 接入计费功能
  1. 安全策略
  • API 调用的鉴权
  • 永久有效的 Token
  • 实时申请的 Token
  • 长短 Token 结合的设计
  1. 接口版本控制:设计向后兼容的接口,确保新版本发布不影响现有业务。
  • 向后兼容性设计
  • 新旧版本接口共存的演进策略
  • 版本兼容策略:向后兼容设计、版本号管理、平滑升级方案
  • 接口演进:字段扩展机制、接口废弃流程、版本切换机制
  1. 可观测性:接入 metrics 日志和 trace,重点监控和告警设置
  • 在系统中识别业务关键点的技巧
  • 在业务关键点中接入合适的可观测性数据

第三周:通知平台高可用性设计与实现

教学目标
  • 掌握复杂的通知平台的服务治理方案,例如服务发现、负载均衡、熔断限流等

  • 掌握高可用性保障措施,例如容错、容灾、自动扩缩容等

    • 掌握防止高并发环境下资源耗尽的方法
    • 掌握针对系统本身组件崩溃的容错方法
    • 掌握针对各种外部依赖的崩溃的容错方法
    • 掌握使用 DeepSeek 识别可用性瓶颈的方法
    • 掌握使用 DeepSeek 设计可用性保障措施的方法
  • 从通知平台可用性保障中抽象出一般的、通用的服务治理方案设计的方法论

详细内容
  1. 可用性保障的关键
  • 使用 DeepSeek 识别关键点,并提供改进建议
  • 服务治理方案
  • 针对内外组件的容错方案
  • 多活机制
  • 故障机制
  1. 复杂的服务治理方案
  • 掌握利用 DeepSeek 设计服务治理方案的方法,并且要求 DeepSeek 提供关键设计和实现
  • 服务注册与发现的容错:多注册中心
  • 负载均衡
  • 隔离
    • 进程内隔离机制:如线程池、连接池
    • 进程间隔离机制设计
  • 分组/路由
    • 基于业务特征的分组策略
    • 基于系统特征/负载的分组策略
  • 熔断/限流/降级
    • 智能限流策略
    • 基于业务重要性的降级策略
    • 跨服务的降级机制
  • 重试:重试策略设计重试次数与成功率
  • 超时控制:超时时间评估、超时与业务中断问题
  • 自动扩缩容的一般设计机制
  • 服务治理的统一理论
  1. 容错方案
  • 第三方崩溃/基础组件崩溃的容错方案
  • 异常隔离与降级服务设计
  1. 可用性测试与容灾演练

第四周:通知平台高并发设计与实现

教学目标
  • 深入理解高并发场景下的性能瓶颈及优化方法。
  • 掌握接口调用的性能优化技巧,如批量接口、pipeline 和 stream 接口等
  • 掌握设计复杂缓存方案的技巧,熟练运用多级缓存并解决一致性问题
  • 掌握内存使用优化方案和常见手段
  • 掌握设计分库分表方案的技巧
    • 掌握使用 DeepSeek 设计分库分表方案的技巧
    • 利用 DeepSeek 来生成完整的分库分表实施方案,并且进行修改调整
  • 掌握协程池的使用与优化方案
详细内容
  1. 性能优化
  • pipeline/stream 接口
  • 消息优先级队列:重要消息优先发送
  • MQ 单个转批量/合并发送
    • 智能批量策略:自适应批量大小
  • 缓存方案:
    • 多级缓存方案:数据一致性问题、可用性保障
    • 预热
  • 内存使用优化:引入对象池
  • 引入协程池与协程池优化
  1. 高性能通知发送策略
  • 基于时间的发送策略:分时段发送、业务低峰期发送
  • 基于优先级的发送策略:多级优先级设计、动态优先级调整、饥饿避免机制
  • 自适应发送策略
    • 基于系统负载的自适应发送策略
    • 基于渠道成本的智能发送策略
    • 基于到达率的自适应发送策略
  1. 通知存储的分库分表方案
  • 在 DeepSeek 的帮助下制定分库分表方案和实施方案
  • 分库分表后的复杂查询支持
  • 分库分表设计
    • 分片策略
    • 路由规则
    • 扩容方案
  • 查询优化
    • 索引设计
    • 查询重写
    • 缓存策略
  1. 性能测试与性能瓶颈分析

通用权限类服务:权限系统

项目整体介绍

项目目标

通过构建一个通用权限类服务的模板项目,解决实践中遇到的权限控制和鉴权问题,尤其是在高并发、数据一致性要求高的场景下,确保权限数据的一致性与及时生效,平衡缓存与实时性的需求。该模板项目将涵盖RBAC、ABAC 等核心模型,并结合缓存、CQRS 等技术手段,实现高性能和高可用。使学员能解决绝大多数实践中遇到的权限控制、鉴权等问题,从容应对以下典型业务场景:

1. 高并发高性能与数据一致性场景

  • 场景描述:在需要同时满足高并发、高性能和数据一致性的场景下,如何设计一个高效且可靠的权限系统。
  • 应对策略:
    • 设计高性能权限校验机制:采用分布式缓存存储权限数据,减少数据库的直接访问,提升权限校验的响应速度。
    • 保障数据一致性:通过分布式锁或事务机制,确保权限数据在并发更新时的一致性。
    • 实施读写分离与分库分表:针对高并发场景,设计读写分离架构,并结合分库分表策略,分散数据库压力,提升系统整体性能。

2. 读高并发场景

  • 场景描述:在权限系统的读请求远高于写请求的场景下,如何优化系统架构以应对高并发读取需求。
  • 应对策略:
    • 设计多级缓存方案:采用本地缓存与分布式缓存相结合的多级缓存方案,减少高并发读取对数据库的压力。
    • 预加载权限数据:在系统启动或权限变更时,提前将权限数据加载到缓存中,避免高并发场景下的缓存穿透问题。
    • 实施限流与降级策略:针对高并发读取场景,设计限流策略和降级机制,确保系统在极端情况下仍能稳定运行。

3. 高可用性与容错场景

  • 场景描述:在权限系统对可用性要求极高的场景下,如何设计高可用架构并实施容错措施。
  • 应对策略:
    • 设计容错与自动恢复机制:实现熔断机制和重试策略,在依赖服务故障时自动降级或恢复,保障系统的稳定性。

    • 搭建监控与告警体系:建立全面的监控体系,实时跟踪权限系统的健康状态,并配置自动告警机制,及时发现并处理潜在问题。

第五周:权限系统需求分析与架构设计1:基于角色的权限控制(RBAC)

教学目标
  • 掌握理解 RBAC 模型的核心概念和应用场景,掌握高扩展的 RBAC 模型的设计与实现方法
  • 在 RBAC 的基础上,掌握复杂权限控制方案,包括权限时效性、多级继承等
  • 在 DeepSeek 的帮助下,设计完备、高可扩展性的权限控制方案
  • 学会将 RBAC 与个人权限混合控制机制结合使用
详细内容
  1. RBAC 设计与实现
  • 用户、角色、权限、资源之间的关系建模
    • 利用 DeepSeek 识别业务中的角色、权限和资源,生成 RBAC 的 UML 类图
  • RBAC 数据表结构设计与实现
  • 角色定义与管理
  • 权限分配与撤销机制
  • 权限验证与鉴权流程
  1. 权限模型扩展性设计
  • 如何动态添加新的权限类型或规则
  • 预留扩展字段,方便未来添加新的权限属性
  • 支持自定义权限类型,满足不同业务场景的需求
  • 借助 DeepSeek 评估权限模型的扩展性,以及权限建模的局限性
  1. RBAC 进阶模型设计与实现
  • 临时授权体系:支持短期授权、自动失效机制
  • 权限继承关系:多级继承支持
  • 权限与资源版本控制:版本化权限管理,支持权限变更的回滚与追踪
  1. RBAC 与个人权限混合的控制机制
  • 用户专属权限与角色权限的优先级控制

  • 混合机制的实现与冲突处理

  • 结合 RBAC 与用户个性化权限,实现灵活的权限控制

第六周:权限系统需求分析与架构设计2:基于属性的权限控制(ABAC)

教学目标
  • 掌握理解 ABAC 模型的核心概念和应用场景,掌握高扩展的 ABAC 模型的设计与实现方案
  • 在 DeepSeek 帮助下识别关键树形、控制策略,并且完成 ABAC 的建模
  • 掌握 ABAC 中实现条件组合权限控制的设计与实现方案
  • 学习 RBAC 与 ABAC 的混合使用场景及实现方式,用统一模型描述 RBAC 和 ABAC
  • 设计统一的权限控制接口,支持灵活的权限查询与集成,掌握与中间件的集成方式
    • 在 DeepSeek 的帮助下完成接口设计
    • 在 DeepSeek 的帮助下集成各个中间件
详细内容
  1. ABAC 模型简介
  • 核心概念:主体(Subject)、客体(Object)、环境(Environment)、动作(Action)
  • 策略定义和规则引擎
    • 动态规则匹配:基于属性值与规则的动态权限校验
    • 条件组合权限:多条件复杂判断,支持 AND、OR、NOT 等逻辑组合
  • 属性列表定制:如何根据业务需要灵活定义属性
    • 复杂权限场景的解决方案
  • 地域限制、设备限制等特殊场景的权限校验
  1. ABAC 设计与实现
  • 在 DeepSeek 的协助下识别属性和权限控制策略
  • 属性定义和存储
    • 属性存储结构:可在关系型数据库、文档型数据库或分布式 KV 系统中灵活实现
  • 动态策略解析:基于属性与策略规则实时执行鉴权逻辑
  1. ABAC 和 RBAC 的混合解决方案
  • 混合模型的优先级与冲突处理。
  • 使用 RBAC 处理大范围适用的通用权限,用 ABAC 细化个别特殊场景
  1. 统一权限模型:用一个基本模型统一描述 ABAC 和 RBAC
  • 抽象出通用的权限模型,兼容 RBAC 和 ABAC
  • 构建兼容 RBAC 和 ABAC 的统一元数据结构,减少重复开发、提升系统一致性
  1. 统一的权限控制接口
  • 利用 DeepSeek 完成接口设计
  • 在 DeepSeek 的帮助下完成与中间件的集成:如和 ORM、Web 等框架的集成

6 权限控制在具体业务中的应用

  • 控制 HTTP/RPC 接口权限
  • 控制数据访问权限

7 可观测性:接入 metrics 日志 和 trace,重点监控和告警设置

第七周:权限系统安全性、高可用性设计与实现

教学目标
  • 学习高可用权限服务的设计与实现,包括容错、容灾与灰度发布
  • 在 DeepSeek 的协助下,制定可用的容错、容灾方案
  • 实现关键组件的容错机制,确保权限服务在关键组件故障时依旧稳定运行
  • 掌握权限服务的综合服务治理策略,提升系统的整体可用性
  • 设计完善的权限审计与追踪系统,提升系统的安全性与可维护性,构建全面的安全防护体系,防止越权和各种攻击
详细内容
  1. 综合全面的服务治理

  2. 关键组件崩溃的容错

  • 数据库崩溃的容错策略:例如使用数据库集群或主从复制
  • 缓存崩溃的容错策略:例如使用缓存集群或多级缓存
  1. 权限服务本身崩溃之后的鉴权问题

  2. 权限审计与追踪

  • 操作审计日志:记录用户的操作行为
  • 权限变更追踪:记录权限的变更历史
  • 审计数据分析:分析审计数据,发现潜在的安全风险
  1. 灾备方案
  • 让 DeepSeek 提供可用的灾备方案,并且进行详细分析
  • 多活部署方案:提高可用性和容灾能力。在多个数据中心部署权限服务,确保单点故障不影响整体服务
  • 故障转移机制:自动切换到备用节点。实现自动故障转移,确保在主节点故障时,备节点能够快速接管服务
  • 多数据中心同步:跨 Region、跨可用区的数据一致性保障
  1. 设计多活方案的一般性理论:
  • 多处部署
  • 数据同步与一致性问题
  • 流量切换
  • 利用 DeepSeek 设计多活方案的方法
    • 生成多活架构部署拓扑
    • 设计跨机房数据同步方案
    • 输出故障切换演练checklist
  1. 数据备份与恢复:
  • 设计完善的数据备份策略,确保权限数据的安全存储
  • 实现高效的数据恢复机制,确保在数据丢失或损坏时能够快速恢复服务
  • 热备、冷备方案结合,缩短恢复时间(RTO)和数据丢失(RPO)范围
  1. 可用性测试和故障演练

第八周:权限系统高性能、高并发鉴权方案设计与实现

教学目标
  • 学习权限服务在高并发场景下的性能优化策略
  • 实现权限缓存、批量校验、CQRS 模式等高性能方案
  • 设计并实现高效的数据同步和访问方案,确保系统的高可用性和一致性
  • 在 DeepSeek 的协助下设计并实现 SDK 形态的权限操作接口,并在 SDK 中实施反范式的性能优化策略,知晓 SDK 设计与版本管理的核心方法
  • 学习权限存储的分库分表设计与实现
详细内容
  1. 权限的缓存方案
  • 常用权限缓存方案
  • 缓存与权限变更生效问题:轮询权限变更、实时监听权限变更、反向通知业务方/前端
  • 多渠道通知方式:
    • 消息队列:基于 MQ 的权限变更通知
    • 回调接口:主动推送权限变更
  1. CQRS 与部署方案
  • 读写分离的权限服务架构
  • CQRS 模式的实现与部署
  1. 批量权限检查:支持批量权限校验,提升高并发场景下的性能
  • 权限信息前置
    • 写入到 JWT token
    • 写入到 Session
  1. 反范式设计:提供 SDK
  • 在 DeepSeek 的协助下设计并实现 SDK
  • 版本管理机制
    • 打包编译的时候通过 CI/CD 来进行版本管理
    • plugin 机制统一管理版本
  • 集成分布式的本地缓存
  • 直接访问 Redis
  1. ABAC 的性能优化
  • 属性与规则的存储与查询优化。

  • 动态规则匹配的优化方法(如预编译规则)

网关类服务:WebSocket 网关

项目整体介绍

项目目标

通过构建一个网关类服务的模板项目,帮助学员掌握WebSocket网关的核心设计思路与应对策略,并提升其在复杂业务场景下的方案落地能力。本项目旨在解决与网关相关的重点难点问题,包括长连接管理、高并发支持以及网关的高效设计与实现,使学员能够应对以下典型业务场景:

1. 海量长连接场景

  • 场景描述:在需要维持大量客户端长连接的场景下,如何设计高效、稳定的长连接管理机制。
  • 应对策略:
    • 设计连接心跳机制:实现心跳检测机制,定期检查客户端连接状态,及时清理无效连接,避免资源浪费。
    • 优化连接管理:采用连接池技术,高效管理客户端连接,支持快速查找和操作连接状态。
    • 实现断线重连机制:设计自动重连逻辑,确保客户端在网络波动或异常断开后能够快速恢复连接。

2. 自研网关场景

  • 场景描述:在需要支持高并发、低延迟的场景下,如何设计一个高性能的网关。
  • 应对策略:
    • 设计高并发架构:采用异步非阻塞模型实现网关核心通信层,支持高并发连接和消息处理。
    • 实现消息路由与负载均衡:设计消息路由机制,支持将客户端请求分发到后端服务,并结合负载均衡策略,确保后端服务的稳定性。
    • 优化数据传输性能:采用二进制协议(如 Protobuf)或高效压缩算法,减少数据传输量,提升网关的吞吐量和响应速度。
  1. 读写高并发场景
  • 场景描述:网关需要同时处理大量的客户端连接(读高并发)和实时消息转发(写高并发),如何设计系统架构以保证性能与可用性,满足大规模用户访问需求。
  • 应对策略:
    • 设计高性能读写分离机制:将连接管理与消息处理分离,采用多线程或协程模型,分别优化读写性能。
    • 实现消息队列缓冲:在高并发写入场景下,引入消息队列作为缓冲层,避免消息处理过载。
    • 优化资源分配:根据读写负载动态分配系统资源,确保读写操作的高效执行。
  1. 高可用性与容错场景
  • 场景描述:在网关对可用性要求极高的场景下,如何设计高可用架构并实施容错措施。
  • 应对策略:
    • 构建分布式网关集群:设计分布式网关架构,支持水平扩展,避免单点故障,提升系统的整体可用性。
    • 实现故障自动转移:设计故障检测与自动转移机制,确保在某个网关节点故障时,流量能够快速切换到其他可用节点。
    • 搭建监控与告警体系:建立全面的监控体系,实时跟踪网关的健康状态,并配置自动告警机制,及时发现并处理潜在问题。

第九周:WebSocket 网关需求分析和架构设计

教学目标
  • 掌握 WebSocket 网关的核心需求分析与架构设计方法
  • 掌握利用 DeepSeek 完成网关类系统的需求分析和架构设计方案
  • 学会设计通用的消息协议与插件化架构,适配多业务线场景
  • 学会进行网关的总体架构设计,包括分层架构和插件化设计
  • 理解多业务场景下的协议设计要点
  • 学习插件化架构的设计与实现
详细内容
  1. 多业务线场景分析
  • 利用 DeepSeek 来分析场景
  • 系统管理消息
    • WebSocket 管理消息:支持客户端连接迁移
    • 多端踢人消息:实现多设备登录冲突处理
  • 推送消息
  • IM
    • 站内私聊
    • AI 机器人/客服支持
  1. 撰写技术文档的技巧
  • 利用 DeepSeek 撰写技术文档:生成骨架、填充细节、修改润色
  1. 网关架构设计
  • 分层架构设计:层次划分的基本原则
    • 接入层:负责客户端连接的建立与管理
    • 协议层:处理消息的编解码与协议转换
    • 业务层:执行业务逻辑,如消息路由、处理与转发
    • 存储层:管理持久化数据,如会话信息和消息历史
  • 插件化架构设计
    • 插件的接入策略
    • 插件接口设计
    • 业务方接入接口设计
    • 具体插件实现:
      • 认证插件:实现多种认证机制(如 Token、OAuth),确保连接安全
      • 可观测性插件:接入日志、metrics 和 trace
      • 业务插件:根据不同业务需求定制化处理逻辑
  • 安全架构设计
    • 接入认证:确保连接合法性
    • 传输加密:使用 TLS/SSL 等技术保障数据安全
    • 攻击防护:防止恶意攻击
  1. WebSocket 消息协议设计
  • 在 DeepSeek 的协助下参考不同协议设计方案,制定自己的协议格式

  • 协议格式设计:定义消息的结构、字段及其含义,确保统一性与可解析性

  • 业务方对接方式:定义业务方与网关的交互方式,包括连接建立、消息发送与接收

  • 协议版本管理:实现向下兼容机制,保障协议更新过程中旧版本的持续可用性

  • 协议扩展字段:协议插件机制,支持根据不同业务需求动态扩展协议功能

  • 消息优先级:支持多级别消息优先级,确保关键消息的及时传输

  • 消息可靠性:完善的消息确认机制,保障消息传输的可靠性

第十周:WebSocket 网关核心难点

教学目标
  • 掌握利用 DeepSeek 分析系统难点的方法,在 DeepSeek 的帮助下制定完整的消息可靠传输、会话管理、连接管理方案
  • 掌握 WebSocket 网关消息可靠传输机制,包括消息确认、重传、顺序和幂等性处理
  • 实现会话管理功能,包括会话创建、销毁、保持、恢复和迁移
  • 设计连接管理模块,实现连接监控、智能重连、连接复用和连接池管理
  • 学习如何设计通用网关,支持多协议转换和适配,提升网关的灵活性与可扩展性
详细内容
  1. 消息可靠传输
  • 消息可靠性保证与借助 DeepSeek 制定消息可靠传输方案
  • 消息确认机制:客户端确认消息接收,服务端记录状态
  • 消息重传策略:支持超时重传与失败重试
  • 消息幂等性:确保重复消息不会导致业务逻辑异常
    • 消息去重
  • 离线消息推送:支持客户端离线时的消息存储与推送
    • 存储策略
    • 推送机制
  • 消息顺序问题:消息失序与处理策略
  • 消息加密与签名:对传输的消息进行加密与签名,防止数据被篡改或窃取
  1. 会话管理
  • 利用 DeepSeek 制定会话管理方案,识别难点和提供实施建议
  • 会话创建与销毁:高效管理会话生命周期
  • 分布式会话管理
    • 使用分布式存储来管理会话信息,实现多节点共享
    • 会话数据同步:保证多节点间会话数据的一致性,支持高可用性与容错性
  • 安全性增强
    • 访问控制:基于用户身份与权限控制消息的发送与接收,保障系统安全
  • 会话保持:通过心跳机制维持会话活跃状态
  • 会话恢复:支持断线重连后的会话数据恢复
    • 数据恢复
    • 状态恢复
  • 会话迁移:支持客户端在不同节点之间的会话迁移
    • 跨节点迁移
    • 数据同步
  • 心跳机制
  1. 连接管理
  • 利用 DeepSeek 设计连接管理方案
  • 连接监控:实时监控连接状态,统计在线用户数
  • 智能重连:使用退避算法优化重连策略
  • 连接复用:支持多路复用,减少连接资源占用
  • 连接池管理:高效管理连接资源,避免资源浪费
  • 连接状态机设计:清晰定义连接的各个状态及其转换规则
  • 异常连接检测:及时发现并清理无效或恶意连接
  1. 通用网关设计
  • 协议转换网关
    • HTTP/WebSocket 双向转换
    • TCP/WebSocket 双向转换
    • 协议适配器设计 协议适配器设计:支持多种协议的灵活适配
  1. 可观测性:接入 metrics 日志和 trace,重点监控和告警设置

第十一周:WebSocket 网关高可用设计与实现

教学目标
  • 掌握 WebSocket 网关高可用架构设计的核心原则和技术方案,构建具备高可用性和容灾能力的 Websocket 网关,保证服务的持续可用与稳定运行
  • 理解如何通过水平扩展、负载均衡、优雅上下线和消息队列隔离等技术提升网关的可用性
  • 掌握利用 DeepSeek 设计网关高可用保障方案的技巧,并且在 DeepSeek 的帮助下实施
  • 学习综合的服务治理方案,实现网关的水平扩展与智能调度,提升系统的整体可靠性
  • 掌握 WebSocket 网关在实际生产环境中的高可用与容灾方案
详细内容
  1. 综合的服务治理方案
  • 熔断、限流、降级:参考第一个项目的内容,根据 WebSocket 网关的特点进行适配
  • 参考第一个项目的内容,结合 Websocket 网关的特点,设计适用于网关服务的服务治理方案
  • 包括熔断、限流、负载均衡、降级等治理手段,提升系统的整体可靠性与稳定性
  1. Websocket 网关水平扩展
  • 弹性伸缩(动态扩缩容)
    • 实现基于实时流量与负载监控的自动扩缩容机制,动态调整网关实例数量
    • 智能负载均衡:基于连接数、CPU 使用率等指标分配流量
    • 再均衡策略:在节点扩容或缩容时重新分配连接
  • 负载均衡与再均衡
    • 智能负载均衡:基于负载的动态调度、基于地理位置的调度、基于网络质量的调度
    • 再均衡策略:将连接从过载节点迁移到空闲节点
  • 容量规划
    • 连接数估算:根据业务需求预估最大连接数
    • 资源占用评估:评估 CPU、内存等资源需求
  1. WebSocket 网关节点优雅上线下线(和会话管理高度相关)
  • 在不中断现有连接的情况下完成节点的上线或下线
  • 新节点上线:预热连接,逐步接管流量
  • 节点下线:通知客户端重连到其他节点,避免连接中断
  1. WebSocket 连接优雅迁移(和会话管理高度相关)
  • 连接迁移:将客户端连接从一个网关节点迁移到另一个节点
    • 节点维护或升级:无损迁移/状态保持
    • 流量切换:渐进式切换/回滚机制
  1. 消息队列隔离与分组
  • 根据业务类型对消息队列进行隔离,避免互相干扰
  • 将不同业务的消息路由到不同的消息队列,避免业务之间相互干扰
  1. 客户端容错:提供断线重连与备用节点切换机制,提升客户端体验
  • 实现客户端的容错机制,如自动重连、连接备份等,提升客户端在网络不稳定环境下的使用体验
  • 业务资源控制
    • 消息频率限制:防止恶意用户频繁发送消息
    • 连接数限制:限制单用户的最大连接数
  1. 网关监控体系
  • 性能指标定义:明确网关服务的关键性能指标(KPI),如连接数、消息吞吐量、延迟、错误率等,作为性能优化与监控的依据
  • 连接监控:实时统计在线连接数与连接状态
  • 消息监控:监控消息发送与接收的延迟与错误率
  • 性能监控:监控 CPU、内存、网络等资源使用情况
  • 流量控制:限制单用户或单业务的最大流量。限制特定客户端或 IP 的连接数和消息频率
  • 黑名单机制:屏蔽恶意用户或 IP
  • 利用 DeepSeek 解读监控数据

第十二周:WebSocket 网关高性能、高并发设计与实现

教学目标
  • 掌握 WebSocket 网关性能优化的关键技术,包括传输优化、内存优化和 TCP 优化
  • 理解如何通过批量传输、连接复用和连接预热等技术提升网关并发处理能力
  • 熟悉资源控制、连接池优化等实现高性能与高弹性伸缩
  • 利用 DeepSeek 设计压测方案,并且要求 DeepSeek 解读压测数据,识别性能瓶颈,给出优化建议
详细内容
  1. 性能监控与分析
  • 使用 Prometheus、Grafana 等工具监控网关性能指标,例如连接数、消息吞吐量、延迟等
  • 分析性能瓶颈,并针对性地进行优化
  • 性能测试
    • 在 DeepSeek 帮助下设计测试方案,并且分析测试结果,给出优化建议
  1. 传输优化
  • WebSocket 消息压缩:使用 gzip 或 deflate 算法压缩消息体积
  • 编解码优化:使用高效的序列化工具(如 protobuf)等
  • 连接池优化:限制最大连接数,避免资源耗尽
    • 连接复用:使用多路复用技术,对后端服务或组件保持少量长连接
    • 连接预热:在流量高峰前自动建立连接
  • 批量传输技术:合并小消息,减少网络交互次数
    • 消息合并
    • 智能分批
  • 心跳优化
    • 频率自适应:如减少心跳
    • 数据精简
  • 传输延迟优化
  1. 内存优化
  • 池化技术:通过对象池减少 GC 压力
  • 零拷贝技术:避免数据在内存中的多次拷贝
  • Buffer Pool:使用基于 Arena 的内存分配优化
  1. 操作系统优化
  • TCP 优化:调整 TCP 参数(如窗口大小、拥塞控制算法)
  • 系统资源控制
    • 文件描述符管理:限制最大连接数,避免资源耗尽

    • 内存使用控制:设置内存使用上限,防止 OOM

调度与编排类服务:分布式任务调度系统

项目整体介绍

项目目标

通过构建一个调度与编排类服务的模板项目,帮助学员掌握分布式任务调度系统的核心设计思路与应对策略,并提升其在复杂业务场景下的方案落地能力。本项目旨在解决任务调度中的重点难点问题,包括规则引擎设计、自定义 DSL 实现以及大规模、高并发、高可用的定时任务调度需求等,使学员能够应对以下典型业务场景:

  1. 设计规则引擎与自定义DSL实现的场景
  • 场景描述:在需要灵活定义和管理任务调度规则的场景下,如何设计规则引擎并实现自定义领域特定语言(DSL),以满足复杂任务编排需求。
  • 应对策略:
    • 设计规则引擎核心架构:构建可扩展的规则引擎,支持动态加载、解析和执行任务调度规则。
    • 实现自定义 DSL:设计并实现一套简洁、易用的 DSL,允许用户通过自然语言或类 SQL 语法定义复杂的调度规则。
    • 优化规则解析与执行性能:采用高效的解析算法(如 ANTLR)和缓存机制,提升规则解析与执行效率。
    • 检测规则依赖的循环问题:设计基于 DAG 模型的循环依赖检测机制,确保规则的正确性与执行顺序。

2. 设计大规模、高并发、高可用的定时任务解决方案的场景

  • 场景描述:在需要支持大规模任务调度、高并发执行以及高可用性的场景下,如何设计一个能够动态扩展的分布式任务调度系统。
  • 应对策略:
    • 设计分布式任务调度架构:采用分布式架构(如基于 ZooKeeper 或 Etcd 的协调服务),支持任务的分片调度与负载均衡。
    • 实现高并发任务执行引擎:设计基于多线程或协程的任务执行模型,优化任务执行性能,支持百万级任务处理。
    • 保障系统高可用性:设计故障检测与自动恢复机制,确保在节点故障时任务能够自动迁移并继续执行。
    • 支持动态扩缩容:实现任务调度节点和执行节点的动态扩缩容能力,满足业务高峰期的资源需求。
  1. 读写高并发场景
  • 场景描述:分布式任务调度系统需要同时处理大量的任务调度请求(写高并发)和任务状态查询请求(读高并发),属于典型的读写高并发场景。
  • 应对策略:
    • 设计高性能任务存储方案:采用分布式数据库或 NoSQL 存储,支持高并发的任务元数据存储与查询。
    • 实现任务状态缓存:引入分布式缓存,缓存任务状态信息,减少数据库的直接访问压力。
    • 优化任务调度算法:设计高效的任务调度算法(如时间轮算法或延迟队列),确保任务能够按时触发并执行。
    • 分库分表策略:针对任务存储设计分库分表方案,提升数据库的并发处理能力。
  1. 设计复杂任务编排与依赖管理的场景
  • 场景描述:在需要处理复杂任务依赖关系(如前置任务、后置任务、条件分支、并行执行等)的场景下,如何设计灵活的任务编排机制并支持动态调整。
  • 应对策略:
    • 支持复杂任务依赖管理:设计任务依赖的前置、后置关系,确保任务按依赖顺序执行。
    • 实现高级编排特性:支持条件分支、并行执行、循环执行、超时控制等高级任务编排需求。
  • 任务动态调整:支持任务依赖关系、优先级的动态调整,满足运行时的灵活需求。
  • 任务编排可视化:提供任务编排的图形化界面,便于用户直观配置任务依赖关系。

5. 优化任务的调度场景

  • 场景描述:在需要支持海量任务的调度系统中,如何优化任务调度的性能,提升任务执行的吞吐量和系统资源利用率。
  • 应对策略:
    • 实现批量任务调度:通过合并小任务为批量任务,减少调度开销,提升调度效率。

    • 优化任务分片与调度:设计智能分片策略,根据任务类型与数据量动态分片,并优先分配空闲节点执行。

    • 提升调度器性能:优化调度器的任务分发逻辑,减少调度延迟,提升任务吞吐量。

    • 优化任务执行器性能:设计任务执行器的并发模型,充分利用多核 CPU 与高性能网络资源。

    • 存储优化:结合分布式缓存与分库分表策略,提升任务存储的读写性能。

第十三周:分布式任务调度需求分析和架构设计

教学目标
  • 理解分布式任务调度的复杂场景,利用 DeepSeek 分析业务场景
  • 掌握分布式任务调度系统的核心架构设计,在 DeepSeek 的帮助下产出设计文档,能设计并落地核心组件
  • 理解复杂调度策略,在 DeepSeek 的帮助下设计并落地具体的调度策略
  • 学习任务依赖管理、生命周期管理、监控和运维方面的基本要点
详细内容
  1. 整体架构设计
  • 利用 DeepSeek 完成架构设计
  • 调度系统架构设计
    • 分层架构
      • 调度层:负责任务分发与调度逻辑
      • 编排层:处理任务依赖与规则编排
      • 执行层:任务的实际执行与状态反馈
      • 存储层:任务元数据与执行结果的持久化
      • 核心组件设计
        • 调度器:实现任务分发、优先级调度、资源感知调度
        • 执行器:负责任务的实际执行与状态上报
        • 任务队列:支持高并发任务的队列化处理
  • 多形态:
    • SDK 接入:业务方使用SDK接入,任务存储在业务方数据库
    • 集中式调度:任务由调度系统统一管理,业务方提供任务实现
  • 业务方接口
    • 实时注册接口
    • 任务查询接口
    • 任务调度接口
  1. 复杂调度策略
  • 利用 DeepSeek 分析可用的调度策略,以及调度策略设计的要点
    • 生成时间轮算法实现代码
  • 多维度调度算法:基于时间、资源、优先级等多维度调度
  • 优先级调度:支持多级优先级任务的动态调整
  • 资源感知调度:根据节点资源使用情况动态分配任务
  • 调度预测:基于历史数据预测任务负载,提前分配资源
  1. 任务管理
  • 长任务支持
    • 进度追踪
    • 状态同步
    • 提供任务中断与恢复机制
  • 任务分片:将大任务拆分为多个小任务并行执行
    • 分片策略:按数据范围、任务类型等维度分片
    • 动态分片
    • 均衡分配
    • DeepSeek 推荐任务分片策略
  1. 管理后台
  • 任务生命周期管理:从创建到完成的完整状态管理
  • 任务监控:实时监控任务执行状态与性能
  • 任务运维工具:支持任务的暂停、重试、终止等操作
  1. 可观测性:接入 metrics 日志 和 trace,重点监控和告警设置

第十四周:分布式任务调度的任务编排与规则引擎设计

教学目标
  • 掌握任务编排的核心技术与实现方法,掌握前置、后置、并行与条件分支等高阶特性
  • 在 DeepSeek 的帮助下完成任务编排和规则引擎的设计
  • 学习规则引擎的设计与实现,掌握高扩展的 DSL 设计方法,以应对复杂的业务需求
  • 在 DeepSeek 的帮助下设计一个 DSL
  • 掌握复杂任务依赖与执行规则的实现
详细内容
  1. 自定义 DSL 设计
  • 语言设计原则
    • 简洁性与可读性
    • 扩展性与灵活性
  • 语法设计与实现
    • 关键字与语法规则
    • DeepSeek 生成完整语法规格说明
  • DSL 与业务逻辑的集成
    • 如何将自定义 DSL 转换为可执行的任务编排逻辑
    • 测试与调试自定义 DSL
  1. 任务编排与自定义规则
  • 利用 DeepSeek 识别任务编排难点,以及设计规则
  • 前置任务:指定任务 A 执行完成后,再执行任务 B
  • 后置任务:任务 A 执行后自动触发下一任务 C 或多任务并行
  • 高级编排特性
    • 条件分支:根据执行结果或外部输入决定下一个任务
    • 并行执行:多个任务一起启动,提高整体效率
    • 循环执行:定时轮询或循环检查,直到达到终止条件
    • 超时控制:防止单个任务阻塞整体流程
  • 任务编排可视化:提供任务编排的图形化界面,便于配置与管理
  1. 规则引擎
  • 解析规则
    • 基于 ANTLR 的 DSL 解析器设计
    • DAG 模型设计:任务依赖关系的有向无环图表示
    • 循环依赖检测:自动检测并处理任务依赖中的循环问题
  • 执行规则
  • 结果汇总: 收集任务执行结果
  1. 扩展为通用规则引擎(以讲解思路为主)
  • 设计思路:将任务调度规则引擎扩展为通用规则引擎
  • 支持多种规则类型(业务规则、数据规则等)
  • 抽象规则引擎核心功能
  • 提供可扩展的接口
  • 支持不同类型的规则

第十五周:分布式任务调度高可用设计与实现

教学目标
  • 掌握分布式任务调度系统的高可用设计,保障任务调度、任务执行和汇总结果等全过程的高可用
  • 在 DeepSeek 的协助下制定高可用保障方案
  • 掌握调度节点、任务执行节点故障恢复、超时控制、重试与容错策略
  • 掌握任务中断与重调度的实现方法
详细内容
  1. 在 DeepSeek 的帮助下制定负载均衡、重调度、容错等方案设计

  2. 负载均衡和再均衡(和前面的会有所不同)

  • 基于节点负载动态调度:实时监测节点运行状况,对新任务或重试任务进行最优分配
    • 负载感知
    • 实时调整
  • 再均衡策略:长时间运行后,节点间出现不均衡时进行任务迁移或动态拆分
    • 触发条件
    • 执行策略
  1. 任务中断与重调度
  • 状态迁移问题:任务中断后的状态恢复
  • 重调度策略
    • 同一节点重调度
    • 不同节点重调度
  • 任务状态管理
  1. 容错机制
  • 调度节点不可用的容错:自动切换到备用节点
  • 执行节点不可用的容错:任务自动迁移到其他节点
  1. 任务执行超时控制
  • 超时检测与超时中断
  • 超时任务的状态回滚
  1. 任务执行优雅启动/退出
  • 启动时的资源预热
  • 退出时的状态保存与清理
  • 保证任务在被终止时能保存关键中间状态,不影响后续重启
  1. 重试策略
  • 任意步骤开始重试:支持指定失败节点起点,从而省去已完成任务的重复执行。
  • 整体任务重试:在编排层统一触发重新执行整个流程
  • 指数退避:减少无效重试带来的系统额外负担
  • 优先级调整:多次重试后可动态提升任务优先级,减少队列等待时间
  1. 可观测性
  • 全链路追踪:记录任务的完整执行路径

  • 调度性能分析:分析调度器的性能瓶颈

  • 资源监控:实时监控节点资源使用情况

  • 调度可视化:提供调度过程的图形化展示

第十六周:分布式任务调度高性能设计与实现

教学目标
  • 掌握分布式任务调度系统的性能优化方法,在 DeepSeek 的帮助下设计性能优化方案,解读性能优化各个参数的含义以及调整方向
  • 学习高并发场景下的批量调度与分片策略,深入了解调度的可扩展性
  • 掌握心跳优化及长任务状态合并上报的解决方案
  • 掌握分库分表策略与数据拆分的技术要点,为海量数据提供稳定支持
详细内容
  1. 批量任务调度

  2. 基于节点负载和资源的动态调度策略

  • 实时监控节点资源和负载
  • 动态调整任务分配
    • 资源优先
    • 低负载优先
  1. 长任务状态查询与心跳优化
  • 合并状态上报:减少心跳频率
  • 状态查询优化:支持批量查询
  • 动态心跳机制,根据任务执行阶段自动调整心跳间隔
  1. 任务分片
  • 智能分片策略:基于任务本身的数据量或执行时长,自动确定分片大小
  • 分片智能调度:将分片分配给不同节点并行处理,加快整体执行速度
  • DeepSeek 生成智能分片算法代码
  1. 存储优化
  • 分库分表
    • 分片策略
    • 路由规则
    • 利用 DeepSeek 生成分库分表方案
  • 数据清理
    • 归档策略
    • 清理规则