带你十天轻松搞定 Go 微服务系列

Posted 微服务实践

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你十天轻松搞定 Go 微服务系列相关的知识,希望对你有一定的参考价值。

本文开始,我们会出一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:

  1. 环境搭建(本文)
  2. 服务拆分
  3. 用户服务
  4. 产品服务
  5. 订单服务
  6. 支付服务
  7. RPC 服务 Auth 验证
  8. 服务监控
  9. 链路追踪
  10. 分布式事务

期望通过本系列带你在本机利用 Docker 环境利用 go-zero 快速开发一个商城系统,让你快速上手微服务。

完整示例代码:https://github.com/nivin-studio/go-zero-mall

  • Golang 1.15+
  • Etcd
  • Redis
  • mysql
  • Prometheus
  • Grafana
  • Jaeger
  • DTM
  • 本地开发环境搭建

    为了方便开发调试,我们使用 Docker 构建本地开发环境。WindowsmacOS 系统可下载 Docker Desktop 安装使用,具体下载安装方法可自行搜索相关教程。

    这里我们使用 Docker Compose 来编排管理我们的容器,创建如下目录:

    gonivinck
    ├── dtm                   的微服务中采用 grpc 进行服务间的通信,而 grpc 的编写就需要用到 protoc 和翻译成 go 语言 rpc stub 代码的插件 protoc-gen-go

    为了提高开发效率,减少代码的出错率,缩短业务开发的工作量,go-zero 还提供了 goctl 代码生成工具。

    因此,我们需要将 protoc, protoc-gen-go, goctl, 给提前安装到 golang 的容器中,以便后续使用。

    所以 golang 容器的 Dockerfile 代码如下:

    无需特殊处理,只要基于现有的镜像即可。

    服务基于的镜像
    DTMyedf/dtm
    Etcdbitnami/etcd
    Mysqlmysql:5.7
    Redisredis:5.0
    Mysql Managephpmyadmin/phpmyadmin
    Redis Manageerikdubbelboer/phpredisadmin
    Prometheusbitnami/prometheus
    Grafanagrafana/grafana
    Jaegerjaegertracing/all-in-one:1.28
    配置文件配置文件命令来构建和启动运行我们的服务容器,在根目录执行如下命令:
    $ docker-compose up -d
  • 容器构建中

  • Windows 系统容器构建中出现如下图所示,请选择 Share it 这将允许 Windows 的文件目录挂载到容器目录中。

  • 容器已启动运行

  • 容器中启动所有微服务,并为它们分配监听不同的端口号以示区分。
    80:开头的端口号我们将用于 api 服务
    90:开头的端口号我们将用于 rpc 服务dtm36789:36789
    36790:36790dtmdtmhttp 协议和 grpc 协议服务端口号,供客户端交互使用。
    此项目中我们只在 Docker 内部容器之间访问使用,所以也可以不暴露端口号给宿主机etcd2379:2379etcdEtcd http api 服务端口号,供客户端交互使用。
    此项目中我们只在 Docker 内部容器之间访问使用,所以也可以不暴露端口号给宿主机mysql3306:3306mysqlMysql 服务默认端口号,宿主机可通过 127.0.0.1:3306 进行数据库的连接redis6379:6379redisRedis 服务默认端口号,宿主机可通过 127.0.0.1:6379 进行数据库的连接mysql-manage1000:80mysql-managephpMyAdmin web 服务端口号,可以在宿主机 127.0.0.1:1000 访问redis-manage2000:80redis-managephpRedisAdmin web 服务端口号,可以在宿主机 127.0.0.1:2000 访问prometheus3000:9090prometheusPrometheus web 服务端口号,可以在宿主机 127.0.0.1:3000 访问grafana4000:3000grafanaGrafana web 服务端口号,可以在宿主机 127.0.0.1:4000 访问jaeger5000:16686jaegerJaeger web 服务端口号,可以在宿主机 127.0.0.1:5000 访问
    访问验证

  • Redis 访问验证

  • Prometheus 访问验证

  • Grafana 访问验证

  • Jaeger 访问验证

  • https://github.com/zeromicro/go-zero

    欢迎使用 go-zerostar 支持我们!

    关注『微服务实践』公众号并点击 交流群 获取社区群二维码。

    从零开始,轻松搞定SpringCloud微服务系列

    以上是关于带你十天轻松搞定 Go 微服务系列的主要内容,如果未能解决你的问题,请参考以下文章

    带你十天轻松搞定 Go 微服务系列

    带你十天轻松搞定 Go 微服务系列

    带你十天轻松搞定 Go 微服务系列(九链路追踪)

    微服务之七:轻松搞定SpringCloud微服务-API权限控制

    从零开始,轻松搞定SpringCloud微服务系列

    微服务之四:轻松搞定SpringCloud微服务-负载均衡Ribbon

    (c)2006-2024 SYSTEM All Rights Reserved IT常识