如何连接单独的微服务应用程序?

Pat*_*ryk 8 security api rest http microservices

我正在使用微服务架构构建庞大的应用程序.该应用程序将包含多个后端微服务(部署在多个云实例上),其中一些我想使用rest apis连接以便在它们之间传递数据.

该应用程序还将公开第三方的公共API,但上述端点应仅限于同一应用程序中创建某种专用网络的其他微服务.

所以,我的问题是:

如何在同一个应用程序中实现对受限制的api访问其他微服务?

如果有更好的方法来连接微服务而不是使用http传输层,请提及它们.

如果可能,请保持答案服务器/语言不可知.

谢谢.

Gaz*_*dge 3

是的,很容易。微服务的每个客户端都有一个 API 密钥。微服务仅接受来自具有有效 API 密钥的客户端的请求。

此外,很高兴知道 REST 只是一个允许在有界上下文之间进行通信的协议。

它不必通过 HTTP。要求是它具有统一的接口(这就是 HTTP 与其 PUT、POST、GET、DELETE...方法一起使用的原因)并且它是无状态的(所有状态都通过 URI 传输)。

因此,如果您的所有微服务都在同一个机器上运行,那么您需要做的就是这样:

class SomeClass implements RestfulMethods {

    public function get(params){ // return something}
    public function post(params){ // add something}
    public function put(params){ // update something}
    public function delete(params){ // delete something}
}
Run Code Online (Sandbox Code Playgroud)

然后,微服务通过与其他服务的 RestfulMethod 实现交互来进行通信。

但如果您的微服务位于不同的计算机上,那么最好使用 HTTP 作为传输机制。