当前位置: 首页 > news >正文

分类信息网站推广的意义关键词优化是什么意思?

分类信息网站推广的意义,关键词优化是什么意思?,网站建设公司服务,浏阳做网站1. gRPC简介 gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用Protocol Buffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支…

1. gRPC简介

gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用Protocol Buffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支持。gRPC具有以下几个特点:

  1. 高性能:使用HTTP/2协议,支持多路复用和流控制等特性,能够在客户端和服务器之间高效地传输大量数据。同时,gRPC还使用了基于平台优化的序列化和反序列化技术,提高了通信的效率。
  2. 简单易用:gRPC的IDL语言简单易懂,同时提供了自动生成代码的工具,方便用户进行开发。用户只需要定义好IDL,并生成代码后即可在代码中使用类似于本地函数调用的方式进行远程过程调用。
  3. 多语言支持:gRPC支持多种编程语言,如C++, Java, Python, Go, Ruby等,可以在不同编程语言之间进行RPC调用。
  4. 可扩展性:gRPC支持各种扩展,包括拦截器、负载均衡、认证和授权等,可以满足不同场景下的需求。
  5. 安全性:gRPC支持SSL/TLS安全传输,同时还提供了基于Token的认证机制,确保通信的安全性。

总之,gRPC提供了一种高效、可扩展、多语言、安全的RPC框架,适用于大规模分布式系统中的服务间通信,如微服务架构。

本文以go为例,介绍如何使用gRPC开发一个简单服务。

2. 准备工作

2.1 安装protoc

从github系统对应的protoc预编译版,解压到/usr/local/下,以v22.3为例,具体操作如下:

wget https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-linux-x86_64.zip
unzip protoc-22.3-linux-x86_64.zip -d /usr/local/
ldconfig 
protoc --version
# libprotoc 22.3

2.2 安装go相关插件

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

3. 实践

3.1 编写proto文件

syntax = "proto3";option go_package = "./;hello";package hello;message HelloRequest{string name = 1;
}message HelloResponse{string message = 1;
}service ExampleService{rpc SayHi (HelloRequest) returns (HelloResponse);
}

service ExampleService就是我们定义的服务,rpc SayHi (HelloRequest) returns (HelloResponse);就是服务中提供的接口,protoc会根据我们定义的proto文件生成相应的代码。

3.2 使用protoc生成代码

终端下执行以下命令即可生成我们需要的代码:

protoc --go_out=. --go-grpc_out=. hello.proto

--go_out指定go文件的生成目录,--go-grpc_out指定grpc文件的生成目录

此时打开生成的go文件大概率会发现飘红报错,此时可以在当前目录下执行go mod tidy同步下依赖即可。

3.3 编写服务端代码

示例只是简单实现一个echo服务,服务端代码如下:

package mainimport ("context""net"pb "github.com/mengbin92/hello/protos/hello""google.golang.org/grpc"
)// 服务实体
type HelloService struct {pb.UnimplementedExampleServiceServer
}// 实现我们proto文件定义的接口
func (sv *HelloService) SayHi(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {return &pb.HelloResponse{Message: "hello " + in.Name}, nil
}func main() {// 创建grpc服务示例sv := grpc.NewServer()// 注册我们的服务pb.RegisterExampleServiceServer(sv, new(HelloService))// 绑定端口,提供服务lis, err := net.Listen("tcp", ":50001")if err != nil {panic(err)}// 启动服务sv.Serve(lis)
}

启动服务后,服务端会一直阻塞等待客户端的链接,直到收到kill信号:

go run server.go

3.4 实现客户端

package mainimport ("context""fmt"pb "github.com/mengbin92/hello/protos/hello""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure"
)func main() {// 创建grpc连接conn, err := grpc.Dial("localhost:50001", grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {panic(err)}defer conn.Close()// 实例化客户端client := pb.NewExampleServiceClient(conn)// 发送请求req := &pb.HelloRequest{Name: "world"}resp, err := client.SayHi(context.TODO(), req)if err != nil {panic(err)}fmt.Printf("get response from server: %s\n", resp.Message)
}

客户端启动后向服务端发送world,服务端返回hello world

go run client.go
# get response from server: hello world

至此,一个简单的gRPC服务就已经搞定了。

http://www.shuangfujiaoyu.com/news/48499.html

相关文章:

  • 苏州新公司网站建设软文营销的案例
  • 在建设工程信息网google优化师
  • 移动网站打不开解决办法百度营销平台
  • 标志设计logo网站国内疫情最新消息
  • 网站开发程序用什么好重庆seo网络推广优化
  • 自己做网站赚钱吗郑州seo外包费用
  • 河南做网站公司汉狮爱站网站seo查询工具
  • 赶集网免费发布信息网seo综合
  • 北京手机网站制作哪家好四川聚顺成网络科技有限公司
  • 怎样给公司做网站百度的官方网站
  • 满版型网站有哪些在线客服
  • app开发公司找xiala5徵推广温州seo排名优化
  • 南昌建设银行网站百度信息流广告怎么收费
  • 百度做网站要多久百度平台推广该怎么做
  • 快法务网站开发百度官方网平台
  • 石家庄网站建设维护seo 页面链接优化
  • 养猪网站建设规划书创建网站需要什么条件
  • 网站开发一定要用框架吗北京搜索引擎优化seo专员
  • 烟台网站建设精通臻动传媒济南网站推广优化
  • 最优的赣州网站建设台州百度快照优化公司
  • 用php做网站用什么软件b2b自动发布信息软件
  • wordpress微信分享网页带图镇江百度seo
  • 黄冈市建设局官方网站制作app平台需要多少钱
  • 兰溪网站建设青青河边草直播免费观看
  • 家政服务网站建设直通车关键词怎么优化
  • 这个网站 做学术检索非常棒信息如何优化上百度首页公司
  • 党务网站建设总体要求官方百度app下载
  • 淘宝客推广怎么做网站备案网站日常维护有哪些
  • 阿里云上的网站建设百度指数下载
  • 山东住房城乡建设厅网站贵阳网站优化公司