单个微服务应该同时是公共的还是内部的

时间:2017-02-08 14:32:20

标签: design-patterns microservices restful-architecture

有三种微服务:

作者
它具有SELECT和CRUD实体"作者"

的能力

图书
它具有SELECT和CRUD实体的能力" book"

移动应用主机
专门为移动客户端构建,以响应所请求的完整数据模型,以便移动应用程序不会“丰富”。数据结束。

示例:API' MobileHost.getAllBooksOfGivenAuthor'将通过调用' Authors.getAuthorData(authorId)'来回复作者姓名和书名。并将其数据与' Books.getBooksByAuthorIds(authorId)'产生这样的结构:

{ 
  "author" : {
    "name" : "Winner",
    "id" : 1
  },
  "books" : [
     {
       "name" : "Book A",
       "id" : "13231231"
     }
   ]
}

我的问题是:
如果移动客户端通过"移动应用主机"应该做什么"添加作者"通过"移动应用主机"也可以联系"作者"直接服务?在这种情况下是否应该代理CRUD?

1 个答案:

答案 0 :(得分:0)

这取决于你的目标。

根据我的经验,这种“主机”或“代理”服务往往越来越大,没有任何实际责任。将许多类,功能和责任结合在一个地方绝对是一个坏主意 - 随着时间的推移很难维持这样的服务。

此外,如果仅需要扩展作者服务,那么扩展此类服务的实例可能非常困难并且资源无效。因此,如果您要分别扩展不同的服务和活动,那么,当然,您不需要仅使用一个服务来代理请求。例如,您可以使用多个代理服务来单独扩展它们,或者直接调用Authors服务并将其扩展而不是代理服务器。

但是,如果你没有看到提到的机会,那么尽可能保持简单 - 当它需要时,你总是可以将服务和代理分开,只需将所有内容分开