我使用Microservices体系结构和Spring-cloud堆栈。
对于服务之间的通信,我决定使用gRPC。
我有一个名为Accounting的服务,今天我实现了一个gRPC-interface项目,并将它添加到Git存储库中。
我使用以下命令使用gRPC-interface向Accounting服务添加了Git-submodules:
git submodule add -b master <Git-Repo-URL>
git submodule init现在我想在Accounting中创建一个服务类,它可以从gRPC-interface创建一个implements类,但是它不识别来自gRPC-interface模块的任何类!!
我想我需要对setting.gradle和build.gradle文件在Accounting模块中做一些修改,但是我不知道我应该做什么改变,甚至不知道在互联网上应该寻找什么主题。
任何帮助或线索都将不胜感激!
发布于 2022-02-27 14:17:12
听起来你在微观服务上的地位太高了,但是,为了回答这个问题,如前所述:
想想'twitter‘。Twitter有两个‘项目’(不是在git子模块意义上,在英语单词意义上)。有twitter- the -站点,它是运行所有程序的非公共代码,特别是包括当您连接到api.twitter.com时回答的代码。但是还有一个开源库(至少可以公开),您可以将它包含在java项目中,使您可以与twitter对话。这个公共API包括与twitterverse中的概念相匹配的模型类(例如'a tweet‘、'a user’、'a direct message‘、’一个用户决定跟随另一个‘的概念等等),以及使用参数调用的函数(可能在'api’对象上),并返回这些模型类的实例。
,你需要做同样的事情,。一个微服务由两个项目组成:它的API ()是另一个微服务本身包含的,类似于twitter提供的公共'java‘库,以及实际的代码。这可能是一个项目,也可能是一百万,微服务的一个重要部分是:从依赖于微服务B的微服务A的角度来看,除了描述其公共API的部分之外,您根本不需要了解任何关于B的信息。就服务A而言,其他的一切都是一个不重要的实现细节。
如果您将一个微服务的所有代码都包含在另一个微服务中,那么您将得到每一个“microservice”(包括所有其他代码),并且您的服务不再是微的。
是的,这很烦人。您不需要完全复制代码(定义模型的“公共API”部分也可以是微服务本身的依赖项),但每个微服务都会变成维护两个单独的部分,您需要找到一种方法,使“公共API”部分可以像twitter API那样可分发。您可能不想把它放在maven中心,但这就是为什么maven (sonatype,真的)、gradle等都提供了公司范围内的中间依赖服务器的概念,即可以承载您的“公共API”项目。以及本地依赖关系--阅读构建系统的文档,介绍如何处理非开源公开的(即不是maven中央)依赖关系。
https://stackoverflow.com/questions/71285345
复制相似问题