介绍

通过服务调用,应用程序可以使用 gRPC 或 HTTP 这样的标准协议来发现并可靠地与其他应用程序通信。

在许多具有多个需要相互通信的服务的环境中,开发者经常会问自己以下问题:

Dapr 通过提供服务调用 API 来应对这些问题,这种调用 API 作为反向代理与内置的服务发现相结合, 同时利用内置分布式跟踪、计量、错误处理、加密等功能。

Dapr 采用边车(Sidecar)、去中心化的架构。 要使用 Dapr 来调用应用程序,请在任意 Dapr 实例上使用 invoke 这个API。 sidecar 编程模型鼓励每个应用程序与自己的 Dapr 实例对话。 Dapr 实例会相互发现并进行通信。

使用说明

在应用请求 localhost:3500/v1.0/invoke/[应用标识]/method/[应用]method根据对应的应用定义即可

示例

定义一个 js order 服务

const express = require('express');
const bodyParser = require('body-parser');
require('isomorphic-fetch');
const app = express();
app.use(bodyParser.json());
const port = 3000;
// POST 接收 创建一个订单
app.post('/neworder', (req, res) => {
    const data = req.body;
    const orderId = data.orderId;
    const name = data.name;
    console.log("【" + name + "】Got a new order! Order ID: " + orderId);
});
app.listen(port, () => console.log(`Node App listening on port ${port}!`));

定义一个 php 服务, 请求 order 服务

$url = "http://localhost:3500/v1.0/invoke/nodeapp/method/neworder";
$arr = array('name' => 'php', 'orderId' => (string)time()); //请求参数(数组)
$jsonStr = json_encode($arr); //转换为json格式
http_post_json($url, $jsonStr); // 发送请求