服务调用
支持Dapr的应用可通过已知终结点使用http或gRPC消息通讯。
- 服务A发起一个到服务B的http/gRPC调用,调用将会到达本地的Dapr sidecar。
- Dapr查找服务B的位置,并将消息发送到服务B的Dapr sidecar。
- 服务B的sidecar将请求转发给服务B,服务B处理业务逻辑。
- 服务B发送应答到服务A,应答将会达到服务B sidecar。
- Dapr转发应答到服务A的sidecar。
- 服务A受到应答。
作为上述所有应用程序的一个示例,假设我们有以下示例中描述的应用程序集合,其中python应用程序调用Node.js应用程序:https://github.com/dapr/samples/blob/master/2.hello-kubernetes/README.md
在这个场景中,python应用为服务A,Node.js应用为服务B。
下面在这个示例的上下文中再次描述了项目1-6:
- 假设Node.js应用程序的Dapr应用程序id为“nodeapp”,如示例中所示。python应用调用Node.js应用的
neworder
方法,可通过posthttp://localhost:3500/v1.0/invoke/nodeapp/method/neworder
, 它首先达到python应用的本地Dapr sidecar。 - Dapr找到Node.js的位置,并转发请求到Node.js应用的sidecar。
- Node.js应用的sidecar转发请求到Node.js应用,Node.js应用处理其业务逻辑,就像示例中描述的一样,它将记录消息请求并持久化订单ID到Redis(未展示在上述图示中)。
步骤4-5与上述列表一致。
更多信息请参考: