尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

基于Swoole+Hyperf的微服务架构实战

基于Swoole+Hyperf的微服务架构实战 课程总体设计课程名称基于 SwooleHyperf 的微服务架构实战三个月进阶前置要求PHP 基础扎实、熟悉 Composer、了解基本网络协议学习时长12 周每周 5 天学习建议每天 4-6 小时实战核心目标从协程原理到微服务治理完成 3 个综合实践项目具备高并发微服务系统设计与落地能力第一阶段基石——协程与框架核心第 1-2 周第 1 周Swoole 网络编程与协程入门天次学习任务 / 知识点实战要求测试 / 检验方法周一Docker 环境搭建安装 Swoole 5.x编写纯 TCP 服务器理解事件循环Reactor 模型实现一个 TCP ECHO 服务用telnet交互端口连通性测试并发 telnet 连接周二HTTP 服务器创建、Request/Response 处理静态资源托管go()协程创建协程调度初探创建 HTTP 服务返回 JSON在请求内启动协程写日志通过ab工具并发请求观察协程并发执行周三协程容器、Channel 通信、WaitGroup、协程上下文Contextdefer机制用 Channel 实现生产者-消费者使用 Context 传递请求 ID编写单元测试验证并发下数据一致性周四Hyperf 框架安装Composer 建项骨架目录解读生命周期Request→Middleware→Controller搭建 Hyperf 项目运行php bin/hyperf.php start浏览器访问默认路由确认启动正常周五依赖注入DI与简单路由控制器、路由注解Hyperf 数据库连接hyperf/database编写第一个 CRUD 接口User 表数据来自 MySQLPostman 测试接口检查数据库读写周测试使用wrk对 Swoole HTTP 服务器进行 1000 并发压测输出 QPS 与错误率报告。编写一个 Hyperf 接口通过依赖注入获取 Redis 并实现缓存读取。第 2 周Hyperf 注解、AOP、中间件与单服务实战天次学习任务 / 知识点实战要求测试 / 检验方法周一注解原理、自定义注解AOP 切面编程Around、Before、After切面实现方法耗时统计注解应用于控制器方法访问接口时日志打印执行时间验证 AOP 生效周二中间件全局、路由级、注解级跨域处理、参数加密解密中间件编写 Token 校验中间件保护/api/*路由无 Token 请求返回 401正确 Token 通过周三请求验证器hyperf/validation、异常处理器App\Exception\Handler为注册接口添加参数校验统一异常 JSON 返回提交不合规数据检验返回格式是否统一周四Redis 缓存连接池、Model 缓存事件机制Psr\EventDispatcher用户登录后将信息缓存监听登录事件记录日志通过 Redis 监控命令查看缓存事件日志文件确认周五单服务实战搭建 RESTful 文章系统含分类、标签集成缓存、校验、分页完成一套文章 CRUD API接口遵循 RESTful 规范使用 Postman 跑全部接口代码评审路由设计周测试基于文章系统增加Cacheable注解自定义实现文章详情缓存并用 Redis 检查命中率。完成一套 PHPUnit 协程测试用例覆盖文章创建和缓存逻辑。第二阶段微服务通信与治理第 3-6 周第 3 周RPC 与服务拆分天次学习任务 / 知识点实战要求测试 / 检验方法周一微服务拆分原则DDD 入门、接口边界定义、Proto/Json 契约将前面文章系统拆分为用户服务、文章服务规划接口提交服务拆分文档及 Protobuf/Json 契约文件周二Hyperf JSON-RPC 服务端搭建hyperf/json-rpc发布服务到注册中心创建用户服务暴露getUserById方法通过 RPC 客户端调用验证返回值周三RPC 客户端自动生成、RpcClient注解使用自定义负载均衡策略文章服务调用用户服务获取作者信息记录每次 RPC 调用节点验证负载算法周四RPC 超时、重试、连接池配置服务熔断初探hyperf/circuit-breaker模拟用户服务宕机实现降级返回默认值关闭用户服务文章服务调用返回降级数据周五统一 RPC 异常处理、跨服务验证 Token 传递将 Token 通过 RPC 上下文传递用户服务鉴权无 Token 时 RPC 拒绝客户端收到 403周测试压力测试 RPC 调用观察连接池复用情况。编写集成测试模拟某服务崩溃时熔断器自动打开并在半开状态恢复正常。第 4 周服务注册发现与配置中心天次学习任务 / 知识点实战要求测试 / 检验方法周一Consul 部署Docker服务注册与健康检查hyperf/service-governance将用户、文章服务注册到 Consul健康检查心跳Consul UI 查看服务状态停止后自动剔除周二服务发现与负载均衡hyperf/load-balancer加权随机算法文章服务调用用户服务时基于 Consul 发现多节点启动 2 个用户服务实例RPC 请求分布均匀周三配置中心Nacos/Apollo集成hyperf/config-center动态配置下发将限流阈值、数据库连接等放入 Nacos服务监听变更修改配置后服务无需重启即生效周四多环境配置管理、配置加密实现测试/生产环境分离数据库密码加密存储切换环境变量服务自动加载对应配置周五实战将文章系统和用户服务全量接入 ConsulNacos实现无感扩容启动/停止实例模拟动态伸缩保证调用正常伸缩过程中持续发送请求错误率 0.1%周测试修改 Nacos 配置观察服务日志中的配置更新事件。中断 Consul Agent验证服务调用是否降级文件缓存。第 5 周API 网关、限流与熔断天次学习任务 / 知识点实战要求测试 / 检验方法周一API 网关模式讲解Hyperf 搭建网关服务动态路由转发hyperf/http-server路由创建网关项目将请求路由到对应微服务通过网关访问用户服务、文章服务接口周二全局鉴权JWT 签发与验证网关层统一鉴权向下透传用户信息用户登录获取 JWT网关校验并将X-User-Id传递后端无 JWT 返回 401服务获取 Header 识别用户周三限流算法令牌桶、漏桶hyperf/rate-limit注解使用为文章列表接口添加限流100/s超出返回 429使用wrk压测超过阈值触发限流周四熔断降级深入hyperf/circuit-breaker配合注解实现服务级别熔断自定义降级逻辑模拟文章服务超时网关熔断后返回缓存数据延时注入观察网关自动熔断及半开恢复周五网关聚合批次请求合并、响应裁剪网关提供/feed接口聚合文章列表作者信息一次请求返回聚合数据减少客户端调用周测试压测网关 后端集群监控限流、熔断指标。完成网关灰度发布策略根据 Header 将流量分流到不同版本服务。第 6 周可观测性——链路追踪与监控天次学习任务 / 知识点实战要求测试 / 检验方法周一OpenTracing 规范Jaeger 部署Hyperf 集成hyperf/tracer微服务调用链上报网关→文章→用户全链路跟踪Jaeger UI 查看完整调用链及耗时周二自定义 Span、Tag 注入业务信息链路日志关联为关键业务打点登录、下单在 Span 中添加用户 ID搜索用户维度 Trace定位慢请求周三日志规范hyperf/logger集成 ELKFilebeat → ES → Kibana将所有服务日志集中到 ES结构化 JSON 日志Kibana 按 TraceID 查询日志流周四Prometheus Grafana 监控hyperf/metric暴露指标收集 QPS、延迟、错误率、协程数Grafana 仪表盘压测时仪表盘实时刷新设置 QPS 告警规则周五服务告警基于 Prometheus AlertManager 配置邮件/钉钉告警设定延迟 500ms 告警触发测试构造慢接口验证告警消息接收周测试完整压测微服务集群从 Grafana 输出系统瓶颈分析报告。进行故障演练杀掉某服务实例观测熔断、监控、告警联动情况。第三阶段异步消息与分布式事务第 7-8 周第 7 周消息队列与事件驱动天次学习任务 / 知识点实战要求测试 / 检验方法周一RabbitMQ 基础hyperf/amqp生产者、消费者实现交换机/队列绑定创建订单服务生产者发送订单创建消息RabbitMQ 管理界面查看消息堆积情况周二消息可靠性手动确认、死信队列、幂等消费消费者处理失败时进入死信保证幂等基于消息ID去重重复发送相同消息数据库只产生一条记录周三Kafka 与高吞吐场景hyperf/kafka使用实现日志收集生产者发送至 Kafka topicKafka 控制台查看消息写入速率周四事件总线与内部解耦Hyperf 异步事件hyperf/event与队列事件订单创建后异步触发短信、邮件服务观察消费者并发处理日志无丢失周五综合构建订单通知链包含重试、延迟消息死信TTL下单 30 分钟未支付发送提醒取消订单恢复库存时间轮验证延迟消息是否准时触发周测试模拟消息队列宕机后重启验证消息持久化不丢失。压测消费者并发处理能力调整maxConsumption参数优化吞吐。第 8 周分布式事务与分布式锁天次学习任务 / 知识点实战要求测试 / 检验方法周一分布式事务理论CAP、BASESaga 模式设计设计下单流程的 Saga 步骤预扣库存→创建订单→扣款绘制 Saga 状态图定义补偿操作周二Hyperf 实现 Saga 协调器基于消息队列驱动步骤编码 Saga 逻辑订单服务作为协调者正常流程全部执行查看数据库数据一致性周三Saga 失败补偿模拟扣款失败触发补偿取消订单、释放库存人为让扣款服务返回失败验证补偿链执行库存和订单状态恢复无脏数据周四分布式锁Redis 红锁、hyperf/redis-lock防止库存超卖秒杀场景加分布式锁扣减库存高并发下库存扣减数量 订单数周五分布式 Session 与跨服务认证优化集成 JWT 无状态 分布式 Session 兜底网关支持两种方式用户状态共享多服务实例下用户登录状态一致周测试运行全套 Saga 单元测试覆盖正向、补偿路径。使用 Jmeter 并发模拟秒杀检查库存一致性及死锁情况。第四阶段综合实战项目第 9-12 周项目一第 9-10 周微服务电商核心系统项目描述构建用户、商品、库存、订单、网关五大服务接入 Consul、Nacos、Jaeger实现全链路压测与限流熔断。模拟“秒杀活动”场景有趣且具有挑战。周次天次学习任务 / 知识点实战要求测试 / 检验方法第 9 周周一项目骨架搭建定义服务边界、Proto 契约Docker Compose 开发环境一键启动所有服务及中间件检查所有服务注册到 Consul周二用户服务注册、登录、JWT 签发商品服务CRUD 分页缓存独立开发完成接口自测Postman 调用缓存命中率检查周三库存服务扣减、回补订单服务创建订单RPC 调用库存、商品下单流程整合使用 RPC 调用下单后库存减少订单生成周四网关聚合下单接口集成限流下单接口 50/sJWT 全局鉴权所有客户端请求通过网关压测下单触发限流周五集成分布式事务 Saga下单、扣库存、扣款延迟队列取消未支付订单完成支付补偿与取消逻辑模拟支付失败检查库存回补第 10 周周一秒杀功能商品打上秒杀标签独立秒杀接口预热缓存秒杀接口直接操作 Redis 库存异步落库Redis 原子扣减无超卖周二网关层秒杀限流令牌桶 500/s 服务层分布式锁双重防护保证高并发安全Jmeter 5000 并发秒杀测试周三全链路压测与调优开启链路追踪Swoole 协程化 MySQL/Redis 配置找到瓶颈点并优化索引、连接池输出压测报告QPS 达到预期周四完善监控Prometheus 采集秒杀指标Grafana 实时大屏实现秒杀活动监控面板大屏实时刷新周五项目复盘代码评审文档编写输出架构图、压测结果、改进建议PPT 演示导师评审测试方法功能测试下单全流程、性能测试秒杀并发 5000 无错误、故障演练随机停止服务验证降级与告警、代码质量评审。项目二第 11 周异步日志采集与实时分析系统项目描述构建日志收集服务HTTP/RSocket 接收投递 Kafka消费者解析聚合存储 ClickHouse/ES提供统计看板。用于“站点流量监控与异常检测”实用且有趣。天次学习任务 / 知识点实战要求测试 / 检验方法周一系统设计采集服务Hyperf 接收日志异步投递 Kafkahyperf/kafka实现日志接收接口批量异步发送用wrk发送海量日志Kafka 不丢数据周二消费者拉取日志解析 User-Agent、IP 归属地等富化日志消费者组并发处理存入 ESKibana 查看结构化日志周三实时统计使用 Redis HyperLogLog 统计 UV滑动窗口统计 PV接口返回实时 UV/PV验证去重与时间窗口精确度周四异常检测简单阈值告警或基于规则发现流量骤增异步告警通知每分钟 PV 超过阈值触发钉钉告警模拟突发流量告警触发周五看板服务提供图表 API前端 Echarts 展示全链路压测优化部署完整系统压测采集接口 20000 QPS看板数据实时刷新系统稳定测试方法日志完整传输验证无丢失、乱序UV/PV 统计算法准确率测试异常告警延迟 10s全链路压力测试采集部分维持 2w QPS 以上。项目三第 12 周高性能 API 网关与流量治理平台项目描述自研 API 网关支持动态路由、插件链、多维度限流、熔断、安全防护提供可视化后台。这是一款“可商用的微服务网关”雏形极具深度和实用价值。天次学习任务 / 知识点实战要求测试 / 检验方法周一网关架构设计核心路由匹配前缀、正则、动态配置加载路由配置存于 Nacos网关热更新修改路由配置网关即时生效周二插件机制利用 Hyperf 事件与 AOP 设计插件接口内置日志、CORS 插件实现请求日志插件记录请求耗时、状态码访问任何接口日志输出周三高级限流分布式令牌桶Redis Lua支持按用户、IP、接口限流配置不同维度的限流规则组合生效测试同一 IP 超额返回 429其他 IP 正常周四安全模块IP 黑白名单、SQL 注入/XSS 检测插件、请求体大小限制配置黑名单 IP请求被拦截模拟攻击网关直接返回 403周五可视化后台简易管理路由、插件、限流规则容器化部署 K8s CronJob网关及后台服务打包成 Docker编写 K8s 部署文件最终演示动态修改规则查看实时流量图总结三个月学习成果测试方法网关稳定性压测自身 QPS 不低于 5 万插件热加载验证恶意请求拦截测试并通过 K8s 进行滚动更新零中断部署。整体考核与认证建议每日提交当天代码到 Git 仓库通过自动化 PHPUnit 测试。每周完成周测试要求撰写学习笔记遇到的坑与优化点。每阶段阶段实战项目代码评审 输出架构图及性能报告。结业三个综合项目必须全部通过验收完成至少一次完整压测与故障演练。将最终项目部署至云服务器并演示由导师打分。该课程覆盖了从协程原理到生产级微服务治理的全链路技能通过“理论每日任务综合项目”驱动确保学完即可在实际工作中构建高性能 PHP 微服务体系。
返回列表