微服务grpc安装及其及其第一个程序调通(一)

本文介绍了如何在Go中使用gRPC框架搭建服务端和客户端。首先,通过在`go.mod`文件中引入依赖来安装gRPC。接着,详细讲述了编译proto文件所需的工具,包括protoc和protoc-gen-go-grpc的下载与安装。然后,展示了proto文件的编写,并通过命令行生成服务端和客户端所需代码。服务端代码中定义了一个检查服务,客户端则实现了调用该服务进行验证的功能。最后,启动服务端并运行客户端完成交互。学习gRPC有助于理解服务注册、服务发现和负载均衡等高级概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:安装grpc

 在go使用了module  只需要在 go.mod文件中添加一下文件,进入次目录执行 go build 自动安装了(需要更改go的代理,我使用的是七牛云的代理,能直接下载)

require (
	google.golang.org/grpc v1.34.0
	google.golang.org/protobuf v1.25.0
)

二:准备编译protoful需要的工具

1、安装protoc 根据开发环境和需求下载:https://github.com/protocolbuffers/protobuf/releases

2、编译 protoc-gen-go 源文件下载地址:https://github.com/golang/protobuf/tree/master/protoc-gen-go 是go语言编写的可以自己直接下载,自己编译成二进制文件

3、编译 protoc-gen-go-grpc 下载地址:https://github.com/grpc/grpc-go/tree/master/cmd/protoc-gen-go-grpc  是go语言编写的可以自己直接下载,自己编译成二进制文件

4、以上三部的安装一定要保证在命令行下,能找到这个三个命令(设置一下全局变量,或者放到你的GOPATH下面的bin文件下,然后把此文件夹设置成环境变量文件加)

三、编写proto文件

语法教程:proto3语法教程

实例:编写文件  ticketCheck.proto

syntax = "proto3"; //使用的是版本

option go_package = "ticketCheck"; 是这生成*._grpc.pb.go,*.pb.go文件的包名

package proto;

message TicketRequest {  //请求结构体
     int32  playtype = 1;
     int32  lottype = 2;
     string lotnum = 3;
     int32  multiple = 4;
     int32  betnum = 5;
     int32  money = 6;
}


message TikcetResponse { //返回结构体
   bool    checkflag = 1;
   string  errors = 2;
}


service  CheckService { //方法
  rpc Verification (TicketRequest) returns (TikcetResponse){}; 
} 

生成*._grpc.pb.go,*.pb.go文件 

进入你要编写的 ticketCheck.proto 所在的目录 然后在命令行下执行:

protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative ticketCheck.proto

四:编写服务端

 

package main

import (
	pb "codestudy/proto/ticketCheck" //生成proto文件的地址
	"context"
	"google.golang.org/grpc"
	"log"
	"net"
)

type TicketCheck struct {
	pb.UnimplementedCheckServiceServer
}

func (t *TicketCheck) Verification(ctx context.Context, ticket *pb.TicketRequest) (*pb.TikcetResponse, error) {
	return &pb.TikcetResponse{Checkflag: true, Errors: "验证成功"}, nil
}

func main() {
	lis, err := net.Listen("tcp", ":7788")
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}
	s := grpc.NewServer()
	pb.RegisterCheckServiceServer(s, &TicketCheck{})
	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}

五:编写客户端

package main

import (
	"context"
	"log"
	"time"

	pb "codestudy/proto/ticketCheck"
	"google.golang.org/grpc"
)

const (
	address = "localhost:7788"
)

func main() {
	// Set up a connection to the server.
	conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
	if err != nil {
		log.Fatalf("did not connect: %v", err)
	}
	defer conn.Close()

	c := pb.NewCheckServiceClient(conn)

	// Contact the server and print out its response.
	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
	defer cancel()
	var ticket *pb.TicketRequest = &pb.TicketRequest{
		Playtype: 1,
		Lottype:  1,
		Lotnum:   "1,2,3,4,5,6,7,8,9,10",
		Multiple: 1,
		Betnum:   1,
		Money:    2,
	}
	r, err := c.Verification(ctx, ticket)
	if err != nil {
		log.Fatalf("could not greet: %v", err)
	}
	log.Printf("Greeting: %s", r.GetErrors())
}

六:启动服务端,然后在执行客户端就ok了

注:一定要先学习proto3的语法,会根据需求编写proto3文件。然后在编写服务端和客户端。在学习服务注册,服务发现,负载均衡(consul,etcd) 

学无止境,动手最重要。

Python是一种功能强大的编程语言,可以被用于办公自动化,其中包括Excel表格的自动化处理。下面我们将详细介绍如何使用Python实现Excel表格的自动化处理。 Python的第三方库openpyxl可以用于处理Excel文件。首先,我们需要安装openpyxl库,可以通过pip命令进行安装。安装完成后,我们可以使用openpyxl库中的函数和方法进行Excel表格的读取、写入和修改。 读取Excel文件非常简单,我们可以使用openpyxl库的load_workbook函数,指定要读取的文件路径,然后使用get_sheet_by_name函数选择要操作的工作表。这样,我们就可以使用cell函数来获取特定单元格的值。 写入和修改Excel文件也很容易。我们可以使用openpyxl库的Workbook函数创建一个新的Excel文件,然后使用create_sheet函数添加工作表。对于已经存在的Excel文件,我们可以使用Workbook的load_workbook函数打开文件,然后可以对工作表进行操作,例如使用cell函数来写入数据或修改单元格的值。 除了基本的读取、写入和修改操作,Python还可以进行更复杂的Excel表格自动化处理。我们可以根据条件筛选数据、合并或拆分单元格、插入和删除行列、设置单元格的格式等。 在实际的办公自动化应用中,Python的openpyxl库配合其他功能强大的库如pandas、numpy等,可以实现更多高级操作。同时,我们还可以使用Python库比如xlwings从Excel中调用Python代码,进一步提高Excel表格的自动化处理能力。 总而言之,Python可以通过openpyxl库实现Excel表格的自动化处理。通过读取、写入和修改单元格,我们可以实现数据的快速处理和分析。此外,Python还能进行更复杂的Excel操作,为办公自动化带来更多便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值