使用gRPC-Gateway快速构建微服务-双向认证下rpc-gateway使用(同时提供rpc和http接口)
https://github.com/grpc-ecosystem/grpc-gateway
在grpc之上加一层代理并转发,转变成protobuf格式来访问grpc服务
安装
- go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
- go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
- go get -u github.com/golang/protobuf/protoc-gen-go
Prod.proto
- syntax="proto3";
- package services;
- import "google/api/annotations.proto";
- message ProdRequest {
- int32 prod_id =; //传入的商品ID
- }
- message ProdResponse{
- int32 prod_stock=;//商品库存
- }
- service ProdService {
- rpc GetProdStock (ProdRequest) returns (ProdResponse){
- option (google.api.http) = {
- get: "/v1/prod/{prod_id}"
- };
- }
- }
生成两个文件
首先cd 进入pbfiles
- 这会生成Prod.pb.go
- protoc --go_out=plugins=grpc:../services Prod.proto
- 这会生成Prod.pb.gw.go
- protoc --grpc-gateway_out=logtostderr=true:../services Prod.proto
httpserver.go
- package main
- import (
- "context"
- "github.com/grpc-ecosystem/grpc-gateway/runtime"
- "google.golang.org/grpc"
- "grpcpro/services"
- "log"
- "net/http"
- )
- func main() {
- gwmux:=runtime.NewServeMux()
- opt := []grpc.DialOption{grpc.WithInsecure()}
- err:=services.RegisterProdServiceHandlerFromEndpoint(context.Background(),
- gwmux,"localhost:8081",opt)
- if err != nil {
- log.Fatal(err)
- }
- httpServer:=&http.Server{
- Addr:":8080",
- Handler:gwmux,
- }
- httpServer.ListenAndServe()
- }
server.go
- package main
- import (
- "google.golang.org/grpc"
- "grpcpro/services"
- "net"
- )
- func main() {
- rpcServer:=grpc.NewServer()
- services.RegisterProdServiceServer(rpcServer,new(services.ProdService))
- lis,_:=net.Listen("tcp",":8081")
- rpcServer.Serve(lis)
- }
源码地址:
https://github.com/sunlongv520/grpc-learn
https://github.com/sunlongv520/grpc-doc
使用gRPC-Gateway快速构建微服务-双向认证下rpc-gateway使用(同时提供rpc和http接口)的更多相关文章
- 通过GeneXus如何快速构建微服务架构
概览 “微服务”是一个非常广泛的话题,在过去几年里,市面上存在着各种不同的定义. 虽然对这种架构方式没有一个非常精确的定义,但仍然有一些概念具有代表性. 微服务有着许多围绕业务能力.自动化部署.终端智 ...
- SpringBoot 快速构建微服务体系 知识点总结
可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...
- Springboot揭秘-快速构建微服务体系-王福强-2016年5月第一次印刷
JavaConfig项目: spring IOC有一个非常核心的概念——Bean.由Spring容器来负责对Bean的实例化,装配和管理.XML是用来描述Bean最为流行的配置方式.Spring可以从 ...
- SpringBoot揭秘:快速构建微服务体系
chapter 2: 饮水思源:回顾与探索Spring框架本质 IoC其实有两种方式,一种是DI(dependency Injection),一种是DL(dependency Lookup 依赖查找, ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(一)
SpringIOC IOC有两种方式:一种是DI,另一种是DL,即Dependency Lookup(依赖查找).前者是当前软件实体被动接受其依赖的其他组件被IoC容器注入,而后者则是当前软件实体主动 ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(五)
应用日志和spring-boot-starter-logging 快速web应用开发与spring-boot-starter-web 1.项目结构层面的约定
- 《SpringBoot揭秘 快速构建微服务体系》读后感(四)
再谈自动配置 基于条件的自动配置 调整自动配置的顺序
- 《SpringBoot揭秘 快速构建微服务体系》读后感(三)
SpringApplication:SpringBoot程序启动的一站式解决方案 深入探索SpringApplication执行流程 因为书上的版本是1.2的,比较老,这里参考http://blog. ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(二)
最简单的springBoot应用 package com.louis.test; import org.springframework.boot.SpringApplication; import o ...
随机推荐
- getResourceAsStream的几种路径配置(properties文件的路径问题)
文章目录 getResourceAsStream有以下几种: getResourceAsStream有以下几种: Class.getResourceAsStream(String path) : pa ...
- wpf 几种常用控件样式
转自:http://blog.csdn.net/xuejiren/article/details/39449515
- Activiti业务键(businessKey)
问题:如何让业务对象和对应的流程 关联? 发现ProcessInstance 有个方法getBusinessKey()可以得到一个businessKey. ProcessInstance 对应数据库中 ...
- Linux vi和vim编辑器(1)
1:vi和vim的三种常见模式 1.1正常模式 在正常模式下,我们可以使用快捷键: 以vim打开一个档案就直接进入一般模式了(这是默认的模式).在这个模式中,你可以使用[上下左右」按键来移动光标,你 ...
- MapReduce各个执行阶段
- thinkone无法重新创建数据库的问题 newsy
错误描述: 无法加载数据库驱动: Think\Db\Driver\ 前后装了OneThink1.0和OneThink1.1都没成功,都是卡在了安装页面的三个step,读者们你们也遇到一样的情况吗 ...
- MQTT入门介绍
一简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级&q ...
- Widget Factory
Widget Factory 有N种零件,生产所需天数都为3~9天,有M条记录,记录开工星期几,和停工星期几,并告诉你这条记录所加工的零件,求每种零件的生产时间,\(1≤N,M≤300\). 解 显然 ...
- Jmeter性能测试 入门【转】
Jmeter性能测试 入门[转] Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter ...
- leetcode-第五场双周赛-1134-阿姆斯特朗数
第一次提交: class Solution: def isArmstrong(self, N: int) -> bool: n = N l = len(str(N)) res = 0 while ...