docker - 如果有多个微服务,我应该如何集成测试它们?

标签 docker go microservices

我正在学习微服务架构,但是现在有些迷茫。

情况

  • 有 4 个项目是用 golang 编写的
    1. 订单服务
    2. 用户服务
    3. 工具
    4. web(转发 HTTP 请求)
  • orderService , userService, web 通过 grpc 进行通信
  • 所有通过web的api请求转发到orderServiceuserService
  • orderServiceuserService有自己独立的数据库
  • 它们都在docker容器中

困惑

当我想测试一个请求时,我必须执行以下步骤:

cd orderService
govender update +vendor
go build

cd userService
govender update +vendor
go build

cd web
govender update +vendor
go build

docker-compose build
docker-compose up

当我更改一些代码时,我必须再次执行此步骤。
我认为这是不科学和不正常的。我想知道是否所有这些步骤都是在 docker 中集成测试四个微服务所必需的。

最佳答案

如果你改变了 Go 代码,你必须重新编译;那不是不正常的。 Go 代码编译速度很快,所以这通常不是什么大问题。

我不确定您为什么要反复运行 govendor。如果您正在处理依赖项,则通常更容易暂时取消供应。

为了加快速度,不要在开发过程中使用 Docker;至少不是 Go 代码。由于 Go 本身没有任何依赖项,因此这样做没有任何优势。您仍然可以在 Docker 中运行支持服务(例如数据库),但您不必一直重建和重启它。

关于docker - 如果有多个微服务,我应该如何集成测试它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49992237/

相关文章:

go - 使用 goroutine 的多线程

go - 对结构中字段的外部引用是否会阻止该结构被垃圾收集?

docker - Docker容器-端口设置

php - 提供了 Doctrine 节点名或 servname,或者在 Docker 上未知

docker - 为什么多个docker容器可以有相同的内部端口

dictionary - Go中的深度合并订单图

spring-boot - 如何回滚微服务

authentication - Grails Micro Service外部化身份验证

architecture - 微服务中的 grpc 组织

amazon-web-services - 无法将 EFS 访问点安装到 ECS 卷