今天我们要在前文的基础之上,来和小伙伴们聊一聊如何确保gRPC的通信安全。确保gRPC的通信安全我们有很多种不同的方式,其中一种,就是对通信过程进行加密,使用上TLS。对于TLS如何加密,如何协商密钥,这些我这里就不再啰嗦了,我在之前的文章中都已经介绍过了。咱们就直接来看具体的玩法。这块整体上可以分为两大类:启用单向安全连接启用mTLS安全连接我们分别来看。1.启用单向安全连接单向安全连接其实就是说只需要客户端校验服务端,确保客户端收到的消息来自预期的服务端,整个的校验就涉及到我们前文所说的TLS、CA等内容了,具体流程是这样:首先我们先在自己电脑本地生成一个自签名的CA证书。利用这个CA证书
今天我们要在前文的基础之上,来和小伙伴们聊一聊如何确保gRPC的通信安全。确保gRPC的通信安全我们有很多种不同的方式,其中一种,就是对通信过程进行加密,使用上TLS。对于TLS如何加密,如何协商密钥,这些我这里就不再啰嗦了,我在之前的文章中都已经介绍过了。咱们就直接来看具体的玩法。这块整体上可以分为两大类:启用单向安全连接启用mTLS安全连接我们分别来看。1.启用单向安全连接单向安全连接其实就是说只需要客户端校验服务端,确保客户端收到的消息来自预期的服务端,整个的校验就涉及到我们前文所说的TLS、CA等内容了,具体流程是这样:首先我们先在自己电脑本地生成一个自签名的CA证书。利用这个CA证书
Interceptor使用上一篇我们介绍了metadata的使用方法,但是我们在每个方法内部都需要设置相同重复的metadata,比如调用时间戳,调用链等;能不能把这些相同的重复性设置,统一放在一个地方,方便后面修改和维护,答案就是拦截器-Interceptor.1.普通调用Interceptor的使用1.1服务端修改后代码服务端拦截器代码funcunaryInterceptor(ctxcontext.Context,reqinterface{},info*grpc.UnaryServerInfo,handlergrpc.UnaryHandler)(interface{},error){fmt
Interceptor使用上一篇我们介绍了metadata的使用方法,但是我们在每个方法内部都需要设置相同重复的metadata,比如调用时间戳,调用链等;能不能把这些相同的重复性设置,统一放在一个地方,方便后面修改和维护,答案就是拦截器-Interceptor.1.普通调用Interceptor的使用1.1服务端修改后代码服务端拦截器代码funcunaryInterceptor(ctxcontext.Context,reqinterface{},info*grpc.UnaryServerInfo,handlergrpc.UnaryHandler)(interface{},error){fmt
1.Protobuf语法1.1.1.基本规范文件以.proto做为文件后缀,除结构定义外的语句以分号结尾结构定义可以包含:message、service、enumrpc方法定义结尾的分号可有可无Message命名采用驼峰命名方式,字段命名采用小写字母加下划线分隔方式messageSongServerRequest{requiredstringsong_name=1;}Enums类型名采用驼峰命名方式,字段命名采用大写字母加下划线分隔方式enumFoo{FIRST_VALUE=1;SECOND_VALUE=2;}Service与rpc方法名统一采用驼峰式命名1.1.2.字段规则字段格式:限定修饰
1.Protobuf语法1.1.1.基本规范文件以.proto做为文件后缀,除结构定义外的语句以分号结尾结构定义可以包含:message、service、enumrpc方法定义结尾的分号可有可无Message命名采用驼峰命名方式,字段命名采用小写字母加下划线分隔方式messageSongServerRequest{requiredstringsong_name=1;}Enums类型名采用驼峰命名方式,字段命名采用大写字母加下划线分隔方式enumFoo{FIRST_VALUE=1;SECOND_VALUE=2;}Service与rpc方法名统一采用驼峰式命名1.1.2.字段规则字段格式:限定修饰
一、gRPC介绍gRPC是在HTTP/2之上实现的RPC框架,HTTP/2是第7层(应用层)协议,它运行在TCP(第4层-传输层)协议之上,相比于传统的REST/JSON机制有诸多的优点:基于HTTP/2之上的二进制协议(Protobuf序列化机制);一个连接上可以多路复用,并发处理多个请求和响应;多种语言的类库实现;服务定义文件和自动代码生成(.proto文件和Protobuf编译工具)。此外,gRPC还提供了很多扩展点,用于对框架进行功能定制和扩展,例如,通过开放负载均衡接口可以无缝的与第三方组件进行集成对接(Zookeeper、域名解析服务、SLB服务等)。二、gRPC服务调用原理一个完
一、gRPC介绍gRPC是在HTTP/2之上实现的RPC框架,HTTP/2是第7层(应用层)协议,它运行在TCP(第4层-传输层)协议之上,相比于传统的REST/JSON机制有诸多的优点:基于HTTP/2之上的二进制协议(Protobuf序列化机制);一个连接上可以多路复用,并发处理多个请求和响应;多种语言的类库实现;服务定义文件和自动代码生成(.proto文件和Protobuf编译工具)。此外,gRPC还提供了很多扩展点,用于对框架进行功能定制和扩展,例如,通过开放负载均衡接口可以无缝的与第三方组件进行集成对接(Zookeeper、域名解析服务、SLB服务等)。二、gRPC服务调用原理一个完
HowtocreateGRPCclientdirectlyfromprotobufwithoutcompilingitintojavacode使用GRPC时,我们需要通过协议缓冲区编译器(protoc)或使用Gradle或Mavenprotoc构建插件从我们的.proto服务定义生成gRPC客户端和服务器接口。1Flownow:protobuffile->javacode->gRPCclient.那么,有没有办法跳过这一步?如何创建一个通用的GRPC客户端,可以直接从protobuf文件调用服务器而不编译成java代码?或者,有没有办法在运行时生成代码?1Flowexpect:protobuf
HowtocreateGRPCclientdirectlyfromprotobufwithoutcompilingitintojavacode使用GRPC时,我们需要通过协议缓冲区编译器(protoc)或使用Gradle或Mavenprotoc构建插件从我们的.proto服务定义生成gRPC客户端和服务器接口。1Flownow:protobuffile->javacode->gRPCclient.那么,有没有办法跳过这一步?如何创建一个通用的GRPC客户端,可以直接从protobuf文件调用服务器而不编译成java代码?或者,有没有办法在运行时生成代码?1Flowexpect:protobuf