/WEHousing

Golang微服务+区块链实战---go+micro+fabric实现租房上链系统(附详细教程)

Primary LanguageGo

Go+Micro+Fabric(微服务+区块链)项目实战-WeHousing房屋短租上链平台

通过Micro微服务框架实现的一个房屋短租平台,结合fabric联盟链对房屋信息进行存储,目前正在完善fabric存储房屋信息的功能。

项目的基本功能:用户注册,用户登录,头像上传,用户详细信息获取,实名认证检测,房源发布,首页展示,搜索房源,订单管理,用户评价等服务。同时我们通过fabric溯源技术对房产信息进行认证!

PS:
1.可作为微服务和联盟链fabric的入门教程,一个项目玩转目前golang最火的两个领域:微服务和区块链。
2.前端页面稍微有点儿low,不过完全可以换个前端做出高大上的效果。
3.如果对区块链技术不太感冒也不用担心,在实现上微服务和区块链分离,首先通过微服务实现项目的基本功能,随后通过fabric对房产信息进行认证存储。只想学习微服务的同学可以绕过fabric这一部分。
4.fabric环境搭建比较复杂,请克制砸电脑的冲动。
5.项目中使用micro+grpc+consul搭建微服务基本框架,针对这些模块我们都给出了学习教程
6.项目中很多模块都采用最简单的思路,仅仅作为学习教程,无法达到商用级别,如用户登录使用基于session的认证机制

技术栈

  • golang + docker + consul + grpc + protobuf + beego + mysql + redis + fastDFS + nginx + fabric

目标功能

  • 功能模块
    • 用户模块
      • 注册
        • 获取验证码图片服务
        • 获取短信验证码服务
        • 发送注册信息服务
      • 登录
        • 获取session信息服务
        • 获取登录信息服务
      • 退出
      • 个人信息获取
        • 获取用户基本信息服务
        • 更新用户名服务
        • 发送上传用户头像服务
      • 实名认证
        • 获取用户实名信息服务
        • 发送用户实名认证信息服务
    • 房屋模块
      • 首页展示
        • 获取首页轮播图服务
      • 房屋详情
        • 发布房屋详细信息的服务
        • 上传房屋图片的服务
      • 地区列表
      • 房屋搜索
    • 订单模块
      • 订单确认
      • 发布订单
      • 查看订单信息
      • 订单评论

项目文档

​ document文件夹下:

  1. ​ 整体架构图
  2. ​ 微服务框架图
  3. ​ 接口文档

运行环境配置及使用教程

docker安装教程

protobuf安装及使用教程

micro介绍及安装教程

FastDFS+nginx环境配置

Consul安装及使用教程

redis安装教程

项目启动

  • 项目启动:

    • 注意: 项目启动前请先查看项目配置环境文件,配置你相应的设置,并安装好各个环境,mysql+redis+nginx+fastDFS+consul+Micro等
  • consul启动:

    开发测试过程中可以使用单机模式
    consul agent -dev
  • redis服务端启动

     sudo redis-server /etc/redis/redis.conf
  • FastDFS服务启动

    sudo fdfs_trackerd /etc/fdfs/tracker.conf
    sudo fdfs_storaged /etc/fdfs/storage.conf
  • nginx

    启动nginx
    sudo /usr/local/nginx/sbin/nginx
    重启nginx
    sudo /usr/local/nginx/sbin/nginx -s reload
  • 创建服务的指令

    新创建微服务的指令为,ProjectPath为项目所在路径,ServerName是服务名字
    micro new --type srv ProjectPath/ServerName
  • 初始化protobuf文件的命令

    可以直接执行generateproto.sh文件,也可以cd到该项目的项目目录下然后执行如下命令:
    protoc --proto_path=. --go_out=. --micro_out=. proto/example/example.proto

项目布局

├── DeleteSession
│   ├── 退出登录时清除session
├── GetArea
│   ├── 获取地区信息服务
├── GetImageCd
│   ├── 获取验证码图片服务
├── GetSession
│   ├── 获取Session信息服务
├── GetSmscd
│   ├── 获取短信信息服务
├── GetUserHouses
│   ├── 获取用户已发布房屋的服务
├── GetUserInfo
│   ├── 获取用户详细信息的服务
├── IhomeWeb
│   ├── conf 项目配置文件
│   │   ├── app.conf
│   │   ├── data.sql
│   │   └── redis.conf
│   ├── handler
│   │   └── handler.go 配置路由
│   ├── html 项目静态文件
│   ├── main.go 主函数
│   ├── model 数据库模型
│   │   └── models.go
│   ├── plugin.go
│   ├── server.sh
│   └── utils 项目中用到的工具函数
│       ├── config.go
│       ├── error.go
│       └── misc.go
├── PostAvatar
│   ├──	发送(上传)用户头像服务
├── PostHouses
│   ├── 发送(发布)房源信息服务
├── PostHousesImage
│   ├── 发送(上传)房屋图片服务
├── PostLogin
│   ├── 发送登录服务消息
├── PostRet
│   ├── 发现注册信息服务
├── PostUserAuth
│   ├── 发送用户实名认证信息服务
├── PutUserInfo
│   ├── 发送用户信息
├── GetUserAuth
│   ├── 获取(检查)用户实名信息服务
├── PostHousesImage
│   ├── 发送(上传)房屋图片服务
├── GetHouseInfo
│   ├── 获取房屋详细信息服务
├── GetIndex
│   ├── 获取首页轮播图片服务
├── GetHouses
│   ├── 获取(搜索)房源服务
├── PostOrders
│   ├── 发送(发布)订单服务
├── GetUserOrder
│   ├── 获取房东/租户订单信息服务
├── PutOrders
│   ├── 更新房东同意/拒绝订单
├── PutComments
│   ├── 更新用户评价订单信息
└── README.md

Docker学习教程

GO微服务教程(项目具体实现)

Fabric环境搭建教程