1. 安装(此处比较简单)

dep 包管理
配置环境变量
GOPATH/bin
GO/bin
protoc 下载并配置环境变量

2. xservice 安装

a. 预备(一些需要的依赖)
mkdir -p $GOPATH/src/golang.org/x
git clone https://github.com/golang/tools.git
go get github.com/gogo/protobuf/proto
go get github.com/golang/protobuf/protoc-gen-go/
go get github.com/pkg/errors
go install -v ./...
3. 简单代码
备注:项目使用的go package 为 github.com/rongfengliang/grpcapp
下面的目录在对应的子目录 a. 项目结构
├── grpcappdemo
├── grpcdemoclient
└── grpcdemoserver b. grpcappdemo/app.proto syntax = "proto3";
package donutloop.xservice.example.helloworld;
option go_package = "helloworld"; service HelloWorld {
rpc Hello(HelloReq) returns (HelloResp);
} message HelloReq {
string subject = 1;
} message HelloResp {
string text = 1;
} c. generate code
protoc -I . app.proto --xservice_out=. --go_out=. d. grpcdemoclient/main.go package main import (
"context"
"fmt"
"net/http" pb "github.com/rongfengliang/grpcapp/grpcappdemo"
) func main() {
client := pb.NewHelloWorldJSONClient("http://localhost:8080", &http.Client{})
for i := 1; i < 100000; i++ {
resp, err := client.Hello(context.Background(), &pb.HelloReq{Subject: "World"})
if err == nil {
fmt.Println(resp.Text) // prints "Hello World"
} e. server package main import (
"context"
"net/http" pb "github.com/rongfengliang/grpcapp/grpcappdemo"
) // HelloWorldServer HelloWorldServer
type HelloWorldServer struct{} // Hello Hello
func (s *HelloWorldServer) Hello(ctx context.Context, req *pb.HelloReq) (*pb.HelloResp, error) {
return &pb.HelloResp{Text: "Hello from rongfengliang " + req.Subject}, nil
} // Run the implementation in a local server
func main() {
handler := pb.NewHelloWorldServer(&HelloWorldServer{}, nil)
// You can use any mux you like - NewHelloWorldServer gives you an http.Handler.
mux := http.NewServeMux()
// The generated code includes a const, <ServiceName>PathPrefix, which
// can be used to mount your service on a mux.
mux.Handle(pb.HelloWorldPathPrefix, handler)
http.ListenAndServe(":8080", mux)
}
4. 运行
cd grpcdemoserver
go run main.go
cd grpcdemoclient
go run main.go
5. 扩展(docker 构建集成)
参考项目对应的Dockerfile && docker-compose.yml
https://github.com/rongfengliang/grpcapp
5. 参考资料
https://github.com/google/protobuf/releases/tag/v3.5.1
https://github.com/donutloop/xservice
https://github.com/rongfengliang/grpcapp
https://github.com/golang/dep
 
 
 
 

grpc xservice 使用的更多相关文章

  1. gRPC源码分析1-SSL/TLS

    引子 前几天看到微信后台团队分享了TLS相关文章,正好gRPC里TLS数据加密是很重要的一块,于是整理出了这篇文章. 在gRPC里,如果仅仅是用来做后端微服务,可以考虑不加密.本文太长,先给个大纲. ...

  2. gRPC源码分析2-Server的建立

    gRPC中,Server.Client共享的Class不是很多,所以我们可以单独的分别讲解Server和Client的源码. 通过第一篇,我们知道对于gRPC来说,建立Server是非常简单的,还记得 ...

  3. gRPC源码分析0-导读

    gRPC是Google开源的新一代RPC框架,官网是http://www.grpc.io.正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3.虽然目前在工程化方 ...

  4. 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC

    Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的高性能.开源.通用的RPC框架.Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开 ...

  5. gRPC .NET Core跨平台学习

    前些天发布gRPC C# 学习,在.NET Framework 中使用gRPC ,今天来学习 .NET Core gRPC. gRPC 的.NET Core 包在NuGet 上发布了,结合.NET C ...

  6. gRPC C#学习

    前些天gRPC 发布1.0 版本,代表着gRPC 已经正式进入稳定阶段. 今天我们就来学习gRPC C# .而且目前也已经支持.NET Core 可以实现完美跨平台. 传统的.NET 可以通过Mono ...

  7. .net core 用grpc实现微服务

    GRPC 是Google发布的一个开源.高性能.通用RPC(Remote Procedure Call)框架.提供跨语言.跨平台支持.以下以.NET Core 使用控制台.docker中演示如何使用G ...

  8. rpc框架之gRPC 学习 - hello world

    grpc是google在github于2015年开源的一款RPC框架,虽然protobuf很早google就开源了,但是google一直没推出正式的开源框架,导致github上基于protobuf的r ...

  9. Android开发笔记之《远程控制(MQTT|mosquitto) && (ProtocalBuffer | GRPC)》

    Android推送方案分析(MQTT/XMPP/GCM): http://www.open-open.com/lib/view/open1410848945601.htmlMQTT官网: http:/ ...

随机推荐

  1. 理解JAVA MQ消息中间件

    MQ的几种消息传递方式 发布订阅模式 发布订阅模式有点类似于我们日常生活中订阅报纸.每年到年尾的时候,邮局就会发一本报纸集合让我们来选择订阅哪一个.在这个表里头列了所有出版发行的报纸,那么对于我们每一 ...

  2. win32调用系统颜色对话框

    参考网站:http://blog.csdn.net/u013242177/article/details/50437358 首先要包含commdlg.h头文件,这个是通用对话框的头文件,包括文件对话框 ...

  3. Django之model字段操作

    # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models import ...

  4. 【MySQL】CSV 文件导入MySQL

    此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA INFILE, 30多秒就能 ...

  5. SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写

    一.SqlServer 中 1. 创建表 create table testuser( id int, --primary key, names ), address ), paw ) ) 2.创建存 ...

  6. zuul 性能分析

    引用几篇博客, 后续整理自己心得 Zuul 性能测试 https://blog.csdn.net/u013815546/article/details/69669165 VisualVM 使用 htt ...

  7. Python3安装(二)

    因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先 ...

  8. New Concept English three(11)

    Customs Officers are quite tolerant these days, but they can still stop you when you are going throu ...

  9. Linux内核源代码目录结构详解

    http://blog.csdn.net/u013014440/article/details/44024207

  10. MQTT再学习 -- 漫谈MQTT协议

    先占楼,稍后再讲.先搭建好MQTT服务器和客户端