【问题标题】:Go-kit real world example with inter microservice data transfers带有微服务间数据传输的 Go-kit 真实世界示例
【发布时间】:2017-03-09 19:45:28
【问题描述】:

我尝试使用 go-kit (gokit.io) 并使用它构建实际应用程序。 我看例子。这些例子很棒。但我不明白如何在 go-kit 框架中为服务通信/数据传输提供服务。

我可以看到“真实世界”的运输应用程序,但我不明白它怎么可能是“真实世界”的微服务。我可以在消息来源中看到,例如,他们构建预订服务只是将外国存储库传递给服务

type service struct {
    cargoRepository         cargo.Repository
    locationRepository      location.Repository
    routingService          routing.Service
    handlingEventRepository cargo.HandlingEventRepository
}

然后他们从仓库中获取数据(这个仓库属于外国微服务)只是调用方法:

locationRepository.Find(...)

谁能解释一下:

  • 如何在go-kit框架中构建微服务到微服务通信?请告诉我方式/模式。我完全不明白。

我认为这是因为他们只是共享对数据的直接访问权限。但在现实世界的微服务中,我希望微服务能够相互通信以获取所需的数据。而且我不明白如何在 go-kit 框架中做到这一点。

【问题讨论】:

    标签: go microservices


    【解决方案1】:

    我是运输示例的作者。很抱歉之前没有看到您的问题。

    这个特殊的例子需要一些解释。这是一个基于领域驱动设计中的战术模式的示例,这意味着我们需要了解当我们提到一个服务时我们在谈论什么。

    应用程序服务处理应用程序提供的用例,例如booking.Service域服务驻留在域层中,并为您的域提供不一定绑定到域对象的概念。在运输示例中,routing.Service 是一个域服务,其实现实际上查询另一个应用程序,在这种情况下它与 this routing service 对话。

    应用程序和域服务只是组织代码的方式。换句话说,这些服务在一个进程中进行通信,而微服务通常使用某种形式的公共传输通过网络进行通信,例如JSON、gRPC 等。

    回到您的问题,我相信您正在寻找的是routing.Service 的实现,您可以找到here

    这里使用的代理服务在this page上的客户端端点下进行了说明,用于从您的应用程序向另一个应用程序发出请求。

    如果您想了解更多详细信息,我不久前就该主题写了blog post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多