我尝试使用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框架中进行操作。

    最佳答案

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

    这个特定的例子需要一些解释。这是一个基于“域驱动设计”中战术模式的示例,这意味着我们在引用服务时需要理解所谈论的内容。

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

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

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

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

    如果您想了解更多细节,我前一阵子写了一个blog post

    关于具有内部微服务数据传输的Go-kit现实世界示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39540366/

    10-11 06:47