littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于gRPC和Redis的商品交易系统

项目简介

本项目是基于gRPC和Redis构建的商品交易系统,借助gRPC达成高效的服务间通信,采用Redis作为主要的数据存储方案。项目具备商品信息存储、查询、交易以及站点信息管理等功能,虽未完全完工,但核心基础设施和服务间通信机制已实现。

项目的主要特性和功能

  1. gRPC通信:利用gRPC实现后端服务高效通信,借助connecttrpc解决ES6代码生成问题。
  2. Redis数据存储:运用Redis存储商品、站点和用户数据,支持快速查询与更新。
  3. 基础设施代码化:通过Terraform实现所有基础设施的代码化管理,保证部署的一致性和可重复性。
  4. 多服务架构:包含info服务(数据查询与存储)、calculate服务(计算商品价格和跑商路线)、api - gateway(流量转发和负载均衡)等多个服务。
  5. RESTful API:通过RESTful API提供外部接口,支持商品和站点信息的查询与更新。

安装使用步骤

环境准备

  1. 安装依赖:Go语言环境、Redis数据库、Terraform(用于基础设施管理)、gRPC工具链(protoc编译器、grpcio库等)。
  2. 复制项目: bash git clone <项目仓库地址> cd <项目目录>
  3. 配置Redis:确保Redis数据库已安装并运行,在项目配置文件中设置Redis连接信息。
  4. 初始化基础设施:使用Terraform初始化并部署基础设施: bash terraform init terraform apply

启动服务

  1. 启动Redis: bash redis-server
  2. 启动gRPC服务:进入info服务目录,启动gRPC服务: bash cd info go run main.go
  3. 启动API Gateway:进入api - gateway目录,启动API Gateway: bash cd api - gateway go run main.go
  4. 启动前端服务:进入frontend目录,启动前端服务: bash cd frontend npm install npm start

使用API

  1. 查询商品信息:通过GET请求访问/goodsinfo接口,支持过滤参数如actionstationIDname等。 bash curl http://localhost:8080/goodsinfo?action=buy&stationID=123
  2. 查询站点信息:通过GET请求访问/stationsinfo接口,支持过滤参数如stationIDbash curl http://localhost:8080/stationsinfo?stationID=123
  3. 更新商品信息:通过POST请求访问/goodsinfo接口,传递stationID和商品数据。 bash curl -X POST -d '{"buyList": {}, "sellList": {}}' http://localhost:8080/goodsinfo?stationID=123

注意事项

  • 项目尚未完全开发完成,部分功能可能未实现或存在缺陷。
  • 因AWS成本问题,项目目前搁置,建议在本地环境测试和开发。
  • 使用Terraform部署基础设施时,确保AWS或其他云服务账户已正确配置。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】