我读了BFF pattern并且我有一个疑问,如果一个微服务仅用于iOS而其他微服务仅用于Android,如果两个服务使用相同的数据库和相同的表,必须如何创建实体?
我正在尝试使用JDL-Studio并使用import-idl命令导入模型,但我不知道该命令是否必须在每个微服务的工作区中运行
编辑:
对于更多上下文,我想构建一个完整的堆栈应用程序,它可以通过REST调用从网页,iOS和Android应用程序中获得大量并发性,而且我不知道在每个微服务中重复实体是否正确(为每个平台分离API或仅添加一个微服务作为数据库层。
编辑2: 我发现这个blog谈论用微服务创建jhipster应用程序,这个人展示了网关如何拥有他们自己的实体,微服务也有他们拥有...
现在,我已经更清楚了微服务体系结构的真正基础,但是如果我想要一个只有UI实体的所有实体和网关的微服务呢?博客显示怎么可能是这个,但只有一个实体,我有一个完整的model.jhl与所有实体
答案 0 :(得分:0)
除了原始主后端API应用程序之外,我不会对其中任何一个使用import-idl。您不希望每个BFF都有一个完整的后端堆栈,否则您必须维护多个应用程序的大部分内容,并且您需要在这些数据之间同步数据来源于某种" master"。如果您将所有内容重新分配到单个数据库并共享BFF组件之间的所有实体,那么它就不适合微服务模型。
BFF模式应该是现有服务API前面的瘦外观,过滤并可能在必要时调用多个服务API来聚合适合每种客户端类型的内容。当您无法控制现有API或增量服务分解中的(临时)步骤时,我认为这种模式更像是一种方便的创可贴。理想情况下,微服务不应该具有这样的同步依赖性,并且我不是水平分解的巨大粉丝。
在我看来,有更好的方法来实施" BFF"功能如果从头开始没有复杂的架构,并增加了添加另一层间接的延迟。微服务架构通常与UNIX命令进行比较。相同的UNIX命令能够在需要时提供更详细的信息以满足不同的需求。例如,将ls
的输出与ls -l
进行比较。这种策略也可以应用于单个微服务端点。