【发布时间】:2018-07-30 11:50:01
【问题描述】:
我需要一些关于如何最好地管理微服务及其依赖项的建议。
假设我有一个管理文章页面的微服务“页面”,其中包含创建/删除/编辑页面的操作。
假设我在顶部构建了一个管理页面集合的微服务“书籍”,并具有添加/删除/编辑页面的操作,这些页面调用页面服务的下游端点。
如果我要构建另外一个微服务,需要编辑书籍中的某个页面,最好直接调用书籍或页面的编辑页面端点吗?
【问题讨论】:
标签: microservices
我需要一些关于如何最好地管理微服务及其依赖项的建议。
假设我有一个管理文章页面的微服务“页面”,其中包含创建/删除/编辑页面的操作。
假设我在顶部构建了一个管理页面集合的微服务“书籍”,并具有添加/删除/编辑页面的操作,这些页面调用页面服务的下游端点。
如果我要构建另外一个微服务,需要编辑书籍中的某个页面,最好直接调用书籍或页面的编辑页面端点吗?
【问题讨论】:
标签: microservices
我的经验法则:
一个微服务只允许返回他管理的域对象。
因此,PageService 只会返回 Pages,绝不会返回 Books。这些书籍由 BookService 管理,它本身从不返回页面。 PageService 可以通过在任意页面中链接到 BookService 中的 Book 来引用 Books。 通过这种方式,您可以实现 BookService 只需要关心书籍,如果这些书籍链接或嵌入到页面中,这不是它所关心的,因为这就是 PageService 的用途。
同样管理意味着只有 BookService 的一个实例被允许编辑或修改一本书。甚至不是一个简单的 DB-SCRIPT。
当然这只是一个经验法则,细节中有很多乐趣,但它应该给你一个图片。
【讨论】:
最好直接调用页面微服务的编辑。
【讨论】:
我会选择调用“books”微服务,以防“books”可能需要编排除编辑页面之外的其他事情 - 将此信息传递给其他一些微服务。 否则,如果不需要编排,可以直接调用“pages”微服务暴露的API。
【讨论】: