项目简介
本项目是基于gRPC和Redis构建的商品交易系统,借助gRPC达成高效的服务间通信,采用Redis作为主要的数据存储方案。项目具备商品信息存储、查询、交易以及站点信息管理等功能,虽未完全完工,但核心基础设施和服务间通信机制已实现。
项目的主要特性和功能
- gRPC通信:利用gRPC实现后端服务高效通信,借助connecttrpc解决ES6代码生成问题。
- Redis数据存储:运用Redis存储商品、站点和用户数据,支持快速查询与更新。
- 基础设施代码化:通过Terraform实现所有基础设施的代码化管理,保证部署的一致性和可重复性。
- 多服务架构:包含
info
服务(数据查询与存储)、calculate
服务(计算商品价格和跑商路线)、api - gateway
(流量转发和负载均衡)等多个服务。 - RESTful API:通过RESTful API提供外部接口,支持商品和站点信息的查询与更新。
安装使用步骤
环境准备
- 安装依赖:Go语言环境、Redis数据库、Terraform(用于基础设施管理)、gRPC工具链(protoc编译器、grpcio库等)。
- 复制项目:
bash git clone <项目仓库地址> cd <项目目录>
- 配置Redis:确保Redis数据库已安装并运行,在项目配置文件中设置Redis连接信息。
- 初始化基础设施:使用Terraform初始化并部署基础设施:
bash terraform init terraform apply
启动服务
- 启动Redis:
bash redis-server
- 启动gRPC服务:进入
info
服务目录,启动gRPC服务:bash cd info go run main.go
- 启动API Gateway:进入
api - gateway
目录,启动API Gateway:bash cd api - gateway go run main.go
- 启动前端服务:进入
frontend
目录,启动前端服务:bash cd frontend npm install npm start
使用API
- 查询商品信息:通过GET请求访问
/goodsinfo
接口,支持过滤参数如action
、stationID
、name
等。bash curl http://localhost:8080/goodsinfo?action=buy&stationID=123
- 查询站点信息:通过GET请求访问
/stationsinfo
接口,支持过滤参数如stationID
。bash curl http://localhost:8080/stationsinfo?stationID=123
- 更新商品信息:通过POST请求访问
/goodsinfo
接口,传递stationID
和商品数据。bash curl -X POST -d '{"buyList": {}, "sellList": {}}' http://localhost:8080/goodsinfo?stationID=123
注意事项
- 项目尚未完全开发完成,部分功能可能未实现或存在缺陷。
- 因AWS成本问题,项目目前搁置,建议在本地环境测试和开发。
- 使用Terraform部署基础设施时,确保AWS或其他云服务账户已正确配置。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】