Hero Image
grpc-stream go版简解

基础知识介绍 gRPC (gRPCRemote Procedure Calls) 是Google发起的一个开源的远程过程调用 (Remote procedure call) 系统。该系统基于 HTTP/2 协议传输,使用Protocol Buffers 工具来序列化结构化数据。 protobuf protobuf 全称 Google Protocol Buffers,是 google 开发的的一套用于数据存储,网络通信时用于协议编解码的工具库,proto 文件是以 xxx.proto 命名。 stream Stream 顾名思义就是一种流,可以源源不断的推送数据,很适合大数据传输,或者服务端和客户端长时间数据交互的场景。 使用场景 1:股票app:客户端向服务端发送一个股票代码,服务端就把该股票的实时数据源源不断的返回给客户端 2:数据上传:几百万的数据上传处理,若普通rpc则需要全部传输成功后才进行处理,而stream则会再接受第一条数据后就开始处理 3:数据交换:比如LOL,王者荣耀等竞技游戏,client和server之间需要非常频繁地交换数据 ServiceAPI类型 gRPC 中的 Service API 有如下4种类型: SimpleAPI:普通rpc ServerStreaming:服务器流式响应 ClientStreaming:客户端流式发送 BidirectionalStreaming:双向流 操作实战 代码说明:通过传入名字查询对应的结果 下载protoc wget https://github.com/protocolbuffers/protobuf/releases/download/v21.2/protoc-21.2-linux-x86_64.zip unzip protoc-21.2-linux-x86_64.zip mv protoc-21.2-linux-x86_64 /usr/local/protoc 写入环境变量 将protoc命令写入path中,编辑 /etc/profile文件 export PROTOC_HOME=/usr/local/protoc export PATH=$PROTOC_HOME/bin:$PATH 目录说明

Hero Image
使用kubebuilder开发operator详解

基础概念 命令式和声明式 命令式编程(Imperative):详细的命令机器怎么(How)去处理一件事情以达到你想要的结果(What),比如代码详细实现过程。 声明式编程( Declarative):只告诉你想要的结果(What),机器自己摸索过程(How),比如sql查询结果。 简而言之:越接近现实的表达就越“声明式”,越接近于机器的执行过程就越“命令式”。 例如在kubernetes中使用此两种方式来创建服务: 命令式 创建:kubectl create deployment nginx --image nginx 或者 kubectl create -f nginx.yaml 修改:kubectl replace -f nginx.yaml 声明式 创建:kubectl apply -f configs/ 或者 kubectl apply -f nginx.yaml 修改:kubectl apply -f nginx.yaml 从以上两种方式可以看出:声明式对象配置更好地支持对目录进行操作并自动检测每个文件的操作类型(创建,修补,删除),但声明式对象配置难于调试并且出现异常时结果难以理解。 Kubernetes API 在kubernetes集群中,所有需要数据存取的组件都需要和kube-apiserver组件通信,而集群数据都是保存在etcd中。同时,kubernetes也大量使用了声明式api来提高用户开发和使用效率,而其api分别由Group(API 组)、Version(API 版本)和 Resource(API 资源类型)组成。如下图所示: 我们也可以使用以下命令查看有哪些api及其组成方式: kubectl get --raw / { "paths": [ "/api", "/api/v1", "/apis/apps", "/apis/apps/v1", "/apis/batch", "/apis/batch/v1", "/apis/batch/v1beta1", "/apis/apps.