grpc client No connection could be made because the target machine actively refused it

20 篇文章 0 订阅

grpc client No connection could be made because the target machine actively refused it

禁用防火墙

检查防火墙是否开启

systemctl status firewalld

如果防火墙打开,则关闭

systemctl stop firewalld

禁用防火墙

systemctl disable firewalld

查看yaml中暴露的端口与Dockerfile中暴露的端口是否一致

我刚好就是由于这个端口不一致导致的。
Dokcerfile中的端口为5690,而在deployment.yaml和service.yaml中的端口设置为了5691
修改端口为一致,问题解决

gRPC是一个高性能、开源的远程过程调用(RPC)框架,由Google开发,它基于HTTP/2协议,并支持多种语言。gRPC客户端和服务器之间的通信通常包含以下几个步骤: **服务定义**: 首先,在服务提供者端(即服务器),你需要定义.proto文件,其中包含了服务接口和服务上定义的消息类型。例如: ```protobuf syntax = "proto3"; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 2; } ``` **生成代码**: 然后使用`protoc`工具将.proto文件编译成对应的代码,如Java代码(server stubs)和Python代码(client stubs)。 **服务器实现**: 在服务器端,你创建一个实现了`Greeter`接口的服务实例,并监听指定的端口: ```java Server server = ServerBuilder.forPort(8080) .addService(new GreeterImpl()) .build(); server.start(); ``` 这里`GreeterImpl`是实现了`SayHello`方法的类。 **客户端实现**: 在客户端,你需要创建一个`GreeterGrpc`客户端并连接到服务器: ```java try (GreeterGrpc.GreeterBlockingStub channel = GreeterGrpc.newBlockingStub(channel)) { HelloRequest request = HelloRequest.newBuilder().setName("World").build(); HelloReply response = channel.sayHello(request); System.out.println(response.getMessage()); } ``` 通过这个客户端,你可以像调本地方法一样调用远程服务。 **相关问题--:** 1. gRPC相比其他RPC框架有哪些优势? 2. gRPC如何处理错误和异常情况? 3. 客户端和服务器如何保证通信的安全性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值