在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:micro-mall-api开源软件地址:https://gitee.com/cristiane/micro-mall-api开源软件介绍:micro-mall-api介绍微商城-api,基于gRPC构建的微服务商城,包含用户,商品,店铺,购物车,订单,支付,物流,评论,搜索共计22个微服务并通过micro-mall-api聚合 框架,库依赖kelvins框架支持:https://gitee.com/kelvins-io/kelvins 项目问题交流QQ群:578859618 (micro-mall-api交流群) 如何赞助开源项目的发展离不开大家的鼓励和赞赏,扫描下方二维码鼓励一下吧 支付宝 赞助商列表
软件架构micro-mall系列需要etcd集群,集群有问题无法运行任何一个项目,请先搭建好! 用户鉴权 存储说明: 监控说明: 架构示意图: 我的架构图都是在processON在线画图,点击领7天会员福利 上面画的,有超多UML,软件架构,产品原型模板可以选择。 项目目录结构.├── batch-clone-project.sh 一键克隆本项目 shell├── build-project-proto.sh 开发环境编译项目proto shell├── build.sh 一键构建项目 shell├── batch-run.sh 一键构建运行项目 shell├── build-run-all.sh 一键构建运行micro-mall所有项目 shell├── stop.sh 停止当前项目 shell├── stop-all.sh 一键停止micro-mall所有项目 shell├── clean-logs-all.sh 一键清理micro-mall所有目录下logs shell├── git-push-all.sh 一键git push micro-mall所有项目(开发者专用) shell├── Dockerfile docker构建文件├── docker-build-run.sh docker构建运行 shell├── docker-compose.yml 基础组件compose构建文件├── docker-compose-build.yml micro-mall系列项目compose构建文件├── docker-etcd-build.sh etcd集群构建 shell├── etcd_cluster│ └── docker-compose-etcd.yml etcd集群构建docker镜像├── test-gateway-http.sh 运行client目录下测试用例 shell├── LICENSE 授权文件├── README.md 导航指南├── app │ ├── app.go app初始化│ └── web.go web服务初始化├── client│ ├── header.go 测试用例request header│ ├── main│ │ └── user_name.go 模拟注册的生成用户名│ ├── micro-mall-api_test.go 接口测试用例│ ├── url.go 接口测试URL│ └── user_name.go 模拟生成用户名├── config│ ├── config.go 解析配置文件│ └── setting│ └── setting.go 系统配置setting├── etc│ ├── app.ini app配置文件│ └── app.ini.example app配置文件example├── genpb.py pb,gw文件生成脚本├── go.mod├── go.sum├── internal│ ├── config│ │ └── config.go 内部解析配置│ ├── logging│ │ └── log.go 启动日志│ ├── metrics_mux│ │ ├── elastic_metrics.go elastic监控│ │ ├── pprof.go golang内置pprof监控│ │ └── prometheus_metrics.go prometheus监控│ ├── setup│ │ ├── mysql.go mysql启动│ │ ├── queue.go queue启动│ │ ├── redis.go redis启动│ │ └── server_mux.go server监控mux入口│ └── util│ ├── mysql_callback│ │ └── time_callback.go mysql time callback│ └── mysql_model│ └── mysql_model.go mysql mode ├── logs 日志文件目录├── main.go main入口文件├── micro-mall-api main.go编译后文件├── micro-mall-api.pid micro-mall-api进程pid├── micro-mall-db.yaml 映射db表结构到orm struct├── micro_mall.sql micro-mall数据库SQL├── micro_mall_comments.sql micro-mall-comments评论服务数据库SQL├── micro_mall_logistics.sql micro-mall-logistics物流服务数据库SQL├── micro_mall_order.sql micro-mall-order订单服务数据库SQL├── micro_mall_pay.sql micro-mall-pay支付服务数据库SQL├── micro_mall_shop.sql micro-mall-shop店铺服务数据库SQL├── micro_mall_sku.sql micro-mall-sku商品库服务数据库SQL├── micro_mall_trolley.sql micro-mall-trolley购物车服务数据库SQL├── micro_mall_user.sql micro-mall-users用户服务数据库SQL├── middleware│ ├── cors.go cros跨域中间件│ └── user.go user验证中间件├── model│ ├── args│ │ ├── const.go 请求参数常量│ │ └── form.go 请求参数struct│ └── mysql│ └── table.go MySQL表名常量├── pkg│ ├── app│ │ ├── form.go 请求表单参数│ │ └── response.go http响应│ ├── code│ │ ├── code.go 响应码定义│ │ ├── error.go 错误定义│ │ └── msg.go 错误码│ └── util│ ├── cache│ │ ├── big_cache.go big_cache缓存│ │ └── redis.go redis缓存│ ├── client.go 调用grpc客户端│ ├── email│ │ ├── email.go 邮件发送│ │ └── email_helper.go 邮件发送helper│ ├── groutine│ │ ├── attach_panic.go 函数panic包装器│ │ ├── errgroup.go errgroup并发│ │ └── grpool.go 异步任务调度│ ├── kprocess│ │ └── tableflip.go 进程重启│ ├── slice.go 切片工具类│ ├── time.go 时间工具类│ ├── token.go jwt token│ └── user_name.go 用户名生成├── repository│ └── verify_code_record.go 验证码存储├── router│ ├── api│ │ └── v1│ │ ├── comments.go 评论controller│ │ ├── index.go 首页controller│ │ ├── logistics.go 物流controller│ │ ├── merchants.go 商户controller│ │ ├── order.go 订单controller│ │ ├── search.go 搜索controller│ │ ├── shop.go 店铺controller│ │ ├── sku.go 商品库controller│ │ ├── user.go 用户controller│ │ ├── user_account.go 用户账户controller│ │ ├── user_setting.go 用户设置controller│ │ └── user_trolley.go 用户购物车controller│ ├── process│ │ └── prometheus.go gin prometheus监控接口│ └── router.go app路由├── service│ ├── comments.go 评论业务调用gRPC│ ├── common.go 公共服务│ ├── excel_handler.go Excel处理│ ├── logistics.go 物流业务调用gRPC│ ├── merchants.go 商户业务调用gRPC│ ├── push_notice.go 队列推送│ ├── shop_business.go 店铺业务调用gRPC│ ├── sku_business.go 商品库业务调用gRPC│ ├── trade_order.go 支付订单业务调用gRPC│ ├── trade_order_report.go 支付订单业务报告│ ├── user.go 用户业务调用gRPC│ ├── user_account.go 用户账户调用gRPC│ ├── user_setting.go 用户设置调用gRPC│ └── user_trolley.go 用户购物车调用gRPC├── sku_property_ex.json 商品库MongoDB存储参考├── startup│ ├── config.go 启动自定义配置│ ├── register.go 注册自定义服务│ └── vars.go 自定义配置变量├── static 静态文件目录,订单报告├── vars│ ├── server.go server全局变量│ ├── setting.go 全局setting│ └── vars.go 全局变量├── 交流群.JPG├── etcd环境部署-centos.pdf├── etcd环境部署-ubuntu.pdf├── etcd环境部署-docker.pdf├── 微信赞赏码.JPG├── 支付宝赞赏码.JPG├── 微商城需求文档.pdf└── 微商城系统架构设计.png 如何构建开发环境micro-mall-xxx系列服务,希望开发者有中高级go后端开发经验,了解电商业务,mysql redis MQ使用经验 关于go mod请各位一定配置go proxy 利用docker构建etcd集群建议本机也安装etcd工具(方便检测集群是否构建成功) 服务注册说明由于micro-mall系列服务是通过etcd来注册的,所以是需要etcd集群的,搭建步骤参考本仓库的etcd集群部署文档 都有哪些服务micro-mall-api 接入层 克隆仓库将这些服务(目前共16个服务以及它们依赖的proto仓库,在模块分类环节可以了解到)clone到本地 服务启动端口说明均可以在./etc/app.ini中配置,并在运行日志nohup.out显示当前使用的端口,进程ID 为什么本项目建议你安装python环境这是因为本项目提供的生成pb.gw工具是python脚本,因此需要你有python环境。 开发项目都有哪些依赖部分依赖文件安装需要科学上网环境,演示安装步骤都是Mac环境下(同时也建议开发者使用Linux或Mac环境),Windows请参考安装或自行Google安装 wget https://github.com/google/protobuf/releases/download/v3.14.0/protobuf-all-3.14.0.zipunzip protobuf-all-3.14.0.zipcd protobuf-3.14.0/./configuremakemake install# 如果报错请执行ldconfig go get -u google.golang.org/[email protected] 数据库设计
use admin db.createUser({ user: 'admin', pwd: 'xxxx', roles:[{ role: 'root', db: 'admin' }]}) 修改配置文件,追加如下: security: authorization: enabled MongoDB需要注册一个admin用户和数据库micro_mall_sku pb.gw 代码生成看看下面说明 为什么要生成pb,gw代码因为项目使用了gRPC+protobuf,grpc-gateway协议转换中间件,swagger文档托管中间件 有哪些仓库需要生成大部分列出的服务基本上都需要,基本上micro-mall-xxx-proto就是micro-mall-xxx系列服务的依赖proto仓库 如何生成生成pb,gw代码需要本地安装protoc,protoc-gen-go,grpc-gateway 可以参考https://segmentfault.com/a/1190000013339403 grpc系列文章 micro-mall-api仓库现有依赖proto如何一键更新成代码如果你不想手动执行python脚本来生成,请执行sh build-project-proto.sh 配置文件看看下面环节 需要配置什么基本上就是日志路径,MySQL,Redis,rabbitmq,elasticsearch,MongoDB,email这些 如何配置在需要运行的项目根目录下etc/app.ini更改自己开发环境的配置info(可以参考默认提供的) rabbitmq如何配置
[kelvins-queue-amqp]Broker = "amqp://用户名:密码R@地址:端口/创建的vhost"DefaultQueue = "队列名"ResultBackend = "redis://redis的密码@127.0.0.1:6379/10" #队列消费结果保存地址ResultsExpireIn = 36000 # 队列任务消费结果的保存过期时间Exchange = "交换机"ExchangeType = "交换机类型"BindingKey = "绑定key,一般与队列名一样"PrefetchCount = 5 #每次从队列取任务个数TaskRetryCount = 3 #任务失败后重试上限TaskRetryTimeout = 36000 #任务失败后重试超时,满足斐波拉契排列 elasticsearch配置
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.2/elasticsearch-analysis-ik-7.5.2.zip
# 用户信息索引curl -X PUT "localhost:9200/micro-mall-user-info?pretty"# 商户申请信息索引curl -X PUT "localhost:9200/micro-mall-merchants-material-info?pretty"# 店铺信息索引curl -X PUT "localhost:9200/micro-mall-shop?pretty"# 交易订单息索引curl -X PUT "localhost:9200/micro-mall-trade-order?pretty"# 商品库存息索引curl -X PUT "localhost:9200/micro-mall-sku-inventory?pretty"# 列举索引curl -X GET "localhost:9200/_cat/indices?v"health status index uuid pri rep docs.count docs.deleted store.size pri.store.sizeyellow open micro-mall-shop 93u2W6uLTn--EuzifHKFgQ 1 1 25 2 57kb 57kbyellow open micro-mall-user-info WUFGM9IrR2u9d3egU-krWg 1 1 15562 5262 2.7mb 2.7mbyellow open micro-mall-sku-inventory XWQYjy4PTZahB7CpHbLeiw 1 1 164 1 132.5kb 132.5kbyellow open micro-mall-trade-order XWQYjy4PTZahB7CpHbLeiw 1 1 164 1 132.5kb 132.5kbyellow open micro-mall-merchants-material-info WAzVixxOQ4-QPFjGWEWnWA 1 1 8 0 57.9kb 57.9kb 负载均衡所有服务均可启动多个实例 管理服务如何启动运行前请确保你已经阅读完了【如何构建开发环境】,并执行了batch-clone-project.sh 如何用docker来一键构建运行micro-mall系列项目如果你有docker环境(docker环境可以避免安装依赖的中间件)那么你可以: 在此特别鸣谢osc为micro-mall系列项目支持docker编排方案在线服务治理参考kelvins-tools:https://gitee.com/kelvins-io/kelvins-tools 模块分类接入层(gateway,BFF) 用户服务 店铺服务 商品服务 购物车服务 订单服务 支付服务 物流系统 搜索服务 评论服务 测试报告测试环境如下:所有服务,中间件,虚拟机,IDE,测试客户端均运行在这台机器上 micro-mall-api启用HTTP2启用http2后,调用接口,使用wireshark抓包结果 RPC接口压测报告使用ghz压测接口 接口文档开发环境地址: http://127.0.0.1:52001/ 返回码错误code:
接口列表(由于未及时更新,以实际接口返回为准): { "code": 200, "data": "Welcome to micro-mall-api", "msg": "ok"} 2 调试 { "code": 200, "data": "2020-09-11T21:55:28.873726+08:00", "msg": "ok"} GET /debug/XX #程序内部指标 3 发送验证码
同一手机号一段时间内只能获取一次验证码 返回body: {"code":200,"data":"ok","msg":"ok"} 4 注册用户
返回body: {"code":200,"data":{"invite_code":"46e4eabbf000065"},"msg":"ok"} 5 验证码登陆
返回body: {"code":200,"data":"token","msg":"ok"} 6 密码登陆
返回body: {"code":200,"data":{},"msg":"ok"} 7 重置用户密码
返回body: {"code":200,"data":"token","msg":"ok"} 8 获取用户信息 返回body: { "code": 200, "data": { "id": 10009, "account_id": "ae23bab6-c31b-4f61-ad5e-2521a9a4917d", "user_name": "王尼玛", "sex": 1, "phone": "15501707783", "country_code": "86", "email": "[email protected]", "state": 0, "id_card_no": "524348787893748475", "inviter": 0, "invite_code": "46a576fc4000065", "contact_addr": "深圳市南山区南头街道桃园路南贸市场三栋208", "age": 34, "create_time": "2020-09-04 19:10:07", "update_time": "2020-09-06 12:10:15" }, "msg": "ok"} 8.1 列举用户 返回body: { "code": 200, "data": { "user_info_list": [{ "country_code": "86", "phone": "01606450639" }, { "country_code": "86", "phone": "01606450640" }, { "country_code": "86", "phone": "01606450641" }] }, "msg": "ok"} 9 提交商户认证资料
返回body: {"code":200,"data":{"merchant_id":111},"msg":"ok"} 10 添加商品到购物车
返回body: {"code":200,"data":"ok","msg":"ok"} 11 从购物车中移除商品
全部评论
专题导读
上一篇:Ezone: 博客系统。集成调试平台,支持类结构/jar结构预览、支持方法调试和监听、支持 ...发布时间:2022-03-25下一篇:favorites-web: Spring Boot 2.0 开源项目--云收藏。收藏你所喜欢的一切。 ...发布时间:2022-03-25热门推荐
热门话题
阅读排行榜
|
请发表评论