
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
OpenResty 是基于 Nginx 的高性能 Web 平台,集成了 LuaJIT,提供了许多额外的模块。以下是 OpenResty 中的模块功能详解。

本章介绍了如何搭建Spring Cloud Alibaba微服务项目的骨架结构。主要内容包括: 创建Maven父工程cloud-demo,统一管理7个子模块:公共模块(cloud-common)、API契约(cloud-api)、网关(cloud-gateway)、认证(cloud-auth)以及用户、商品、订单服务模块。 通过父工程的dependencyManagement统一管理JDK 17、
现象:分页接口传入 size=2,却返回全部 5 条数据。total 和 pages 均为 0。排查:Controller 已创建 Page 对象,但项目中没有分页拦截器。原因:Page 只保存分页参数。PaginationInnerInterceptor 才负责改写 SQL 和执行总数统计。修复:创建 MyBatisPlusConfig。注册 MybatisPlusInterceptor。添加
本章订单服务完全本地落库故意不校验用户、商品、价格,方便演练后续服务间调用为第 5~7 章引出 OpenFeign、远程用户校验、商品校验及库存扣减逻辑做准备。
现象:商品初始库存为 1。JMeter 使用 20 个线程并发购买。朴素版库存扣减出现多个成功请求。数据库最终库存仍然为 0。排查:多个线程同时读取到旧库存 stock=1。多个线程都通过 Java 内存中的库存判断。多个线程都将库存更新为 0。原因:SELECT 查询和 UPDATE 更新是两个独立步骤。查询与更新之间存在并发竞争窗口。@Transactional 不能自动解决此类并发竞争。修复
协议域名端口只要有一项不同,就属于不同 Origin。前端页面:Gateway:端口不同,所以属于跨域。跨域主要是浏览器安全策略IDEA HTTP Client、Postman 和后端代码通常不会受浏览器 CORS 限制。gateway.http 能调用成功浏览器页面一定能成功调用OPTIONS是否允许当前来源?是否允许 POST?是否允许 Content-Type?是否允许自定义请求头?预检请求
第 8 章已经完成了 Gateway 统一入口:但是现在所有业务接口只要知道地址就能访问,例如:这显然不符合真实项目要求。本章要完成的目标是:本章最终请求链路如下:2、为什么需要统一鉴权2.1 当前项目缺少什么能力在没有统一鉴权之前,业务接口存在几个问题。第一,任何人都能访问业务接口。第二,订单服务仍然信任客户端传入的 。这非常危险。客户端传什么用户 ID,服务端就用什么用户 ID,相当于把身份决
微服务之间往往是链式调用。↓cloud-user↓如果响应非常慢,中等待商品服务返回的线程就会被占住。当请求越来越多时,中越来越多线程被阻塞。cloud-product 慢↓cloud-order 线程堆积↓cloud-order 也变慢或不可用↓Gateway 请求堆积↓整个链路被拖垮这就是微服务中常说的服务雪崩。1. 不是项目统一 Result 格式2. 前端不好统一处理3. 用户看不懂英文提
商品详情每次都查 MySQL,有没有必要?然后一步一步走到了完整缓存链路。
第 11 章我们把 Redis 接入到了 ,解决了商品详情接口反复查询 MySQL 的问题,也顺手演练了缓存穿透、缓存击穿、缓存雪崩和缓存一致性。这一章开始引入 RabbitMQ。不过这一章不只是演示“发一条消息、收一条消息”。如果只做到这一步,RabbitMQ 学起来会很轻,但真正写项目时还是不知道怎么处理异常。这一章继续沿用前面的订单链路,从创建订单这个场景出发,一步一步解决这些问题:这一章最







