Go语言中文网 为您找到相关结果 673

go.mod 解决翻墙问题

在 go.mod 文件添加replace (golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190313024323-a1f597ede03agolang.org/x/sys => github.com/golang/sys v0.0.0-20190318195719-6c81ef8f67cagolang.org/x/text => github.com/golang/text v0.3.0golang.org/x/lint => github.com/golang/lint v0.0.0-20190409202823-959b441ac422golang.org/x/time => github.com/golang/tim...阅读全文

博文 2019-05-29 17:34:45 lmfuture

golang go mod 替换指定版本

之前在项目中遇到过etcd的版本不一致, 导致无法编译. 最终是因为版本不一致的问题. https://segmentfault.com/q/1010000021762281 go mod替换版本 先删除vendor: rm -rf vendor 或手动删除 1.再替版本: go mod edit -require=google.golang.org/grpc@v1.26.0 1.下载指定版本v1.26.0: go get -u -x google.golang.org/grpc@v1.26.0 1.然后再go mod vendo...阅读全文

博文 2020-02-19 15:32:44 百里江山

golang的go.mod文件(解决墙问题)

以下粘贴: replace ( golang.org/x/build => github.com/golang/build v0.0.0-20190416225751-b5f252a0a7dd golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190411191339-88737f569e3a golang.org/x/exp => github.com/golang/exp v0.0.0-20190413192849-7f338f571082 golang.org/x/image => github.com/golang/image v0.0.0-20190417020941-4e30a6eb7d9a golang.org/x...阅读全文

博文 2019-05-07 20:34:53 文余两人

Golang gRPC 示例

1、安装gRPC runtime go get google.golang.org/grpc 为了自动生成Golang的gRPC代码,需要安装protocal buffers compiler以及对应的GoLang插件 2、protocal buffer安装 从https://github.com/google/protobuf/releases下载安装包,例如:protobuf-cpp-3.0.0-beta-3.zip,解压后 ./configure make && make install 再添加环境变量:export LD_LIBRARY_PATH=/usr/local/lib,之后protoc命令即可运行 3、安装GoLang protoc 插件 go get -a github.c...阅读全文

博文 2016-05-19 16:00:02 YaoDD

go基于grpc构建微服务框架-集成opentracing

1.概述 存在这样一种场景,当我们进行微服务拆分后,一个请求将会经过多个服务处理之后再返回,这时,如果在请求的链路上某个服务出现故障时,排查故障将会比较困难.我们可能需要将请求经过的服务,挨个查看日志进行分析,当服务有几十上百个实例时,这无疑是可怕的.因此为了解决这种问题,调用链追踪应运而生. 2.opentracing 1.1 opentracing作用 调用链追踪最先由googel在Dapper这篇论文中提出,OpenTracing主要定义了相关的协议以及接口,这样各个语言只要按照Opentracing的接口以及协议实现数据上报,那么调用信息就能统一被收集. 如上图所示,接口可能首先经过web框架,然后调用auth服务,通过调用链,将请求经过的服务进行编号,统一收集起来,形成逻辑上的链路...阅读全文

博文 2018-04-23 17:34:39 沐风

golang安装使用grpc

1. 安装grpc 官网的安装命令: go get -u google.golang.org/grpc 貌似用不了,连不上服务器,即便我挂上vpn也没有用,没办法只有迂回安装了, 反正代码在github上都有,就从github上clone下来, 需要的库包括grpc-go, golang/net, golang/text, protobuf/proto, protobuf/protoc-gen-go, google/go-genproto # 如果已经安装了proto和protoc-gen-go的话就不用安装了 go get -u github.com/golang/protobuf/{proto,protoc-gen-go} # 下载grpc-go git clone https://gi...阅读全文

博文 2018-09-19 12:34:39 yandaren

继续寻找真心喜欢Go的兄弟加盟

公司:创业团队,拿到千万级别的天使投资,方向是医美领域的O2O和金融服务。这是一个还没有巨头的大市场。 坐标:上海,长寿路上,靠近7号地铁线。 环境:开发人员配备rmbp,再加一个28寸4k显示器 待遇:因人而异,可以谈,半年后可根据表现给予原始股激励。 技术体系:微服务体系,gRPC+nsq+go+docker 联系方式:加我微信吧 yun1ong (中间的是数字1...阅读全文

gRPC 简介及优缺点

RPC(Remote Procedure Call) RPC(Remote Procedure Call)— 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户端/服务器模式。请求程序就是一个客户端,而服务提供程序就是一个服务器。首先,客户端调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客...阅读全文

博文 2019-07-15 13:32:40 wavesnow

google多语言通信框架gRPC

google多语言通信框架gRPC系列(一)概述 gRPC概述 3/26/2016 9:16:08 AM 目录 一、概述 二、编译gRPC 三、C#中使用gRPC 四、C++中使用gRPC 一直在寻找多平台多语言的通信框架,微软的WCF框架很强大和灵活,虽然也能通过自定义绑定和其他技术的客户端通信,但是始终没有实现多平台的技术框架的统一。google的gRPC是一个不错的选择,相比于类似框架Thrift等,google的解决方案更成熟和通用。不足的是由于刚刚开源,使用范围有限,国内资料更少。例如仅仅编译C++的gRPC,花了我两天的时间。在这个系列中,我会逐一介绍各个语言使用gRPC的细节。 gRPC是google2015年初开源的通信框架。 使用gRPC可以在客户端调用不同机器上的服务端的...阅读全文

博文 2016-03-31 11:00:06 Leo_wl

Protobuf 的 import 功能在 Go 项目中的实践

业务场景 我们会有这样的需求:在不同的文件夹中定义了不同的 proto 文件,这些不同的文件夹可能是一些不同的 gRPC 服务。因为不想重复定义某一个 message,所以其中一个服务可能会用到其他服务中定义的 message,那么这个时候就需要使用到 proto 文件的 import 功能。 接下来说说我在 Go 项目中使用 protobuf 的 import 时所遇到的坑。 案例 首先,我们来创建一个实验项目作为案例,便以说明,结构如下: 文件 go.mod 中声明了该项目模块名 module github.com/xvrzhao/pb-demo,proto 文件夹中含有两个 gRPC 服务,分别为 article 和 user,我们在这两个文件夹中定义各自所需要的 messages 和...阅读全文

博文 2019-12-31 19:32:38 Xavier

istio源码分析——poilt-discovery服务发现和配置中心

文:istio源码分析——poilt-discovery服务发现和配置中心 声明 这篇文章需要了解istio,k8s,golang,envoy基础知识 分析的环境为k8s,istio版本为0.8.0 poilt-discovery的作用 envoy提供一套通用的数据面接口,通过接口可以动态实现服务发现和配置。在istio中需要集成k8s,consul等服务发现系统,所以需要一个中介整理在k8s,consul服务注册和配置信息,并提供给envoy。 envoy v1 API 和 v2 API区别 v1版本API和v2版本API有一段历史,详情可看官网博客。在envoy开源之初,使用HTTP+轮询的方式实现动态服务发现和配置,但是这种方式存在以下缺点: 由于接口数据使用弱类型,导致实现一些通用服...阅读全文

博文 2018-06-22 02:34:40 小卜邪

golang protoc grpc编译没效果解决

1、下载github.com/golang/protobuf https://github.com/golang/protobuf 放到$GOPATN/src/github.com/golang目录下 2、安装grpc go get google.golang.org/grpc 3、安装proto go get -u github.com/golang/protobuf/proto go get -u github.com/golang/protobuf/protoc-gen-go 编译grpc/examples/helloworld/helloworld/下的proto文件 protoc --go_out=plugins=grpc:. helloworld.proto 如果编出来的没有加载...阅读全文

博文 2017-02-21 09:00:29 徐学良

Kratos--安装及配置

安装GO环境 安装protoc以及相关的包和插件 https://www.jianshu.com/p/6942a361e455 安装Kratos Go version>=1.12 and GO111MODULE=on go get -u github.com/bilibili/kratos/tool/kratos 提示:安装过程中可能会出现部分包下载失败,可以手动下载包然后拷贝至相应文件目录。 快速开始 cd $GOPATH/src kratos new kratos-demo cd kratos-demo/cmd go build ./cmd -conf ../configs 打开浏览器访问:http://localhost:8000/kratos-demo/start,你会看到输出了Go...阅读全文

博文 2019-06-26 17:32:44 凉初透的风

带入gRPC:分布式链路追踪 gRPC-Opentracing-Zipkin

带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin 原文地址:带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin项目地址:https://github.com/EDDYCJY/go... 前言 在实际应用中,你做了那么多 Server 端,写了 N 个 RPC 方法。想看看方法的指标,却无处下手? 本文将通过 gRPC + Opentracing + Zipkin 搭建一个分布式链路追踪系统来实现查看整个系统的链路、性能等指标 🤓 Opentracing 是什么 OpenTracing 通过提供平台无关、厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现 不过 OpenTracing 并不是标准。因为 CN...阅读全文

博文 2018-10-20 20:34:39 煎鱼

基于docker的分布式爬虫服务 Zerg

#  zerg     基于docker的分布式爬虫服务 [![image](https://camo.githubusercontent.com/e4deb67aa41f71d46774f192b05b75be5c3da112/68747470733a2f2f7261772e6769746875622e636f6d2f6875696368656e2f7a6572672f6d61737465722f646f632f7a6572672e706e67)](https://camo.githubusercontent.com/e4deb67aa41f71d46774f192b05b75be5c3da112/68747470733a2f2f7261772e6769746875622e636f6...阅读全文

开源项目 2016-04-17 16:00:00 huichen

Golang gRPC实践 连载五 拦截器 Interceptor

Interceptor grpc服务端提供了interceptor功能,可以在服务端接收到请求时优先对请求中的数据做一些处理后再转交给指定的服务处理并响应,功能类似middleware,很适合在这里处理验证、日志等流程。 在自定义Token认证的示例中,认证信息是由每个服务中的方法处理并认证的,如果有大量的接口方法,这种姿势就太蛋疼了,每个接口实现都要先处理认证信息。这个时候interceptor就站出来解决了这个问题,可以在请求被转到具体接口之前处理认证信息,一处认证,到处无忧,看代码吧,修改hello-token项目的服务端实现: server/main.go package main import ( "net" pb "github.com/Jergoo/go-grpc-exampl...阅读全文

博文 2017-04-14 06:00:40 徐学良

go mod 墙内分析添加 replace 的工具

# go-mod-tidy ### 墙内专供 墙内使用 `go mod tidy` 时,经常遇到 `golang.org/x/xxx` 之类墙内访问不到的包,在 `go.mod` 中可以使用 `replace` 来替换包地址,但手动修改太麻烦,因此做了一个自动工具 ### 安装 ```go go get -v -u github.com/hqpko/go-mod-tidy ``` > 请检查是否设置了 `PATH=$PATH:$GOPATH/bin` ### 使用 在需要更新 `go.mod` 的项目中,使用 `go-mod-tidy` 命令,会自动添加 `replace` ### 现有的 replace 包 ```go replaceMap = map[string]string{ "go...阅读全文

博文 2019-03-13 18:08:49 hqpko

go 的 protoc 插件调用逻辑

要让protoc使用插件,需要做下面事情: Place the plugin binary somewhere in the PATH and give it the name "protoc-gen-NAME" (replacing "NAME" with the name of your plugin). If you then invoke protoc with the parameter –NAME_out=OUT_DIR (again, replace "NAME" with your plugin's name), protoc will invoke your plugin to generate the output, which will be placed in OUT...阅读全文

博文 2016-05-14 10:00:00 ghj1976

gRPC的那些事 - streaming

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。 gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。 客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。 gRPC具有以下重要特征:强大的IDL特性 RPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议,性能出众,得到了广泛的应用。支持多种语言 支持C++、Java、Go、Python、Ruby、C#、Node.js、Androi...阅读全文

博文 2017-06-21 03:34:28 smallnest

rpcx+zipkin

最近工作中常用到golang,学习了下golang的rpc框架,目前比较流行的有1.rpcx(http://rpcx.site/) 类似dubbo,不用定义protobuf文件 客户端支持跨语言2.go-micro(https://github.com/micro/go-micro) 没有啥优点3.gRpc(https://github.com/grpc/grpc-go)跨语言,需要二次开发服务注册发现 现在开发一般都是服务化的口号,把一个大的服务拆分成N个独立的小服务,划分领域职责,XX领域驱动设计就不多展开说了(主要我不懂😂),服务拆分之后就会带来一个很基础的问题:调用链追踪,这个对于追踪问题和服务优化会有很大的帮助。 开始正题,使用rpcx作为golang的rpcx框架,需要跟zipk...阅读全文

博文 2018-08-14 20:35:09 何亚祥

TiDB与gRPC的那点事

作者|黄东旭 编辑|雨多田光 通过对 gRPC 的诞生背景与设计原则的介绍,作者分享了 TiDB 选择 gRPC 的原因,并介绍了在这个过程中为了适应 TiDB 而对 gRPC 做出的调整与完善。最后,关于性能方面,介绍了调优的思路。 如果有关注 TiDB 的朋友可能注意到,我们在上个月的 RC3 版本中已经完成了将 TiDB 中的 RPC 框架替换成了 gRPC,这个工作其实已经铺垫了快一年了,如果装逼一点说的话,其实 gRPC 开源的第一天看了一眼设计和哲学,就决定在 TiDB 中使用它。今天抽空写一下背后的一些思考和在这个过程中的一些经验,本次分享不太会介绍大家怎么去用 gRPC,可能更加偏向一些为什么的问题。 gRPC 背景介绍 其实做分布式系统那么久,几乎也是天天和 RPC 打交道...阅读全文

博文 2017-08-09 11:30:59 黄东旭

Go微服务全链路跟踪详解

在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为CorrelationID¹,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一,如何在应用程序内部传递ID; 第二,当你需要调用另一个微服务时,如何通过网络传递ID。 什么是OpenTracing? 现在有许多开源的分布式跟踪库可供选择,其中最受欢迎的库可能是Zipkin²和Jaeger³。 选择哪个是一个令人头疼的问题,因为你现在可以选择最受欢迎的一个,但是如果以后有一个更好的出现呢?OpenTracing⁴可以帮你解决这个问题。它建立了一套跟踪库的通用接口,这样你的程序只...阅读全文

博文 2019-09-21 10:32:42 倚天码农

Grpc+Grpc Gateway实践一 介绍与环境安装

介绍与环境安装 假定我们有一个项目需求,希望用Rpc作为内部API的通讯,同时也想对外提供Restful Api,写两套又太繁琐不符合 于是我们想到了Grpc以及Grpc Gateway,这就是我们所需要的 准备环节 在正式开始我们的Grpc+Grpc Gateway实践前,我们需要先配置好我们的开发环境 Grpc Protoc Plugin Protocol Buffers Grpc-gateway Grpc 是什么 Google对Grpc的定义: A high performance, open-source universal RPC framework 也就是Grpc是一个高性能、开源的通用RPC框架,具有以下特性: 强大的IDL,使用Protocol Buffers作为数据交换的格...阅读全文

博文 2018-02-23 17:34:38 EDDYCJY

protobuffer、gRPC、restful gRPC的相互转化

文档 grpc中文文档 grpc-gateway,restful和grpc转换库 protobuf 官网 protobuf Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。 优点 平台无关,语言无关,可扩展; 提供了友好的动态库,使用简单; 解析速度快,比对应的XML快约20-100倍; 序列化数据非常简洁、紧凑,与XML相比,其序列化之后的数据量约为1/3到1/10。 安装 参考 golang使用protobuf https://github.com/google/protobuf/releases // 下载并编译、安装 go get github.com/golang/...阅读全文

博文 2018-03-06 20:34:42 Given

windows Go微服务环境搭建(GO+Protobuf+gRPC+gRPC-Gateway)

Go微服务环境搭建:(首先需要安装git)一,首选需要安装protobuf1.1 安装protoc-gen-go选择Go的src目录,创建github.com/golang目录go get -u github.com/golang/protobuf/protoc-gen-go 执行go build 然后安装 go install1.2 安装protoc(protobuf的编译文件)选择Go的src目录,创建github.com/golang目录go get -u github.com/golang/protobuf/proto 执行go build 然后安装 go install 1.3 测试安装是否成功在CMD窗口执行 protoc --version确认下二,安装grpc和gprc-ga...阅读全文

博文 2018-08-23 17:08:23 wolfplain

Golang gRPC实践 连载一 gRPC介绍与安装

gRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP/2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务,并且为客户端和服务端自动生成可靠的功能库。 主要特性 强大的IDL gRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。 多语言支持 gRPC支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前已提供了C版本grpc、Java版本grpc-java 和 Go版本grpc-go,其它语言的版本正在积极开发...阅读全文

博文 2017-04-14 06:00:38 徐学良

kubernetes集群中利用etcd和grpc实现golang服务间通信

kubernetes集群中利用etcd和grpc实现golang服务间通信 注:文中涉及工作环境相关的网址和IP已经被替换 1. 项目背景 服务运行于docker容器中 使用kubernetes管理容器 服务有多个节点作为一个集群 使用rest接口设置服务缓存中的信息 需要将信息同步到集群中其他节点 2. 项目方案 使用grpc做服务间通信 从etcd中读取服务所有状态为running的节点信息,包括:podIp、status、hostIp、startedAt(启动时间) 服务启动时选取运行时间最长的节点,调用grpc接口请求缓存的信息同步到本容器的服务中 使用rest接口设置缓存的时候,遍历所有节点(不包括自身),调用grpc接口将信息同步到其他节点 方案特点: - 不需要借助额外的配置管...阅读全文

博文 2017-09-18 02:56:56 letian0805

在Windows中安装grpc

1、安装Protobuf在 https://github.com/google/protobuf/releases下载protoc-3.5.1-win32.zip把解压后的 protoc.exe 放入到 GOPATH\BIN 中2、安装grpcGit clone https://github.com/grpc/grpc-go将grpc-go更名为grpc放入到google.golang.org中,完整路径如下D:\gopath\src\google.golang.org\grpc3、安装GenprotoGit clone https://github.com/google/go-genproto将clone下来的文件夹更名为genproto,放到google.golang.org下,完整路径...阅读全文

博文 2018-06-20 09:34:44 alvin2018

[golang] 分布式ID生成算法Snowflake

大部分分布式系统中,对一些互斥资源通常需要一个集群唯一的ID,比如消息id,订单号等。而且很多业务需求往往要求这些ID必须具有先后顺序,以方便分页或者排序。这就要求ID具有两个特性: 全局唯一 随时间递增 Snowflake Twitter-Snowflake算法很好的解决了这种需求,它可以非常高效的生成ID,其核心思想如下(图片来自网络): snowflake-64bit.jpg 时间戳。时间戳段位共41位,单位毫秒,可以使用约70年。为了增加剩余可用期限,一般都会把起始日期尽量后移而不是直接使用1970-01-01。(ps:如果是使用1970,你的程序只能支持到2039年了) 机器id。用于区分集群内不同机器,因为Snowflake生成ID是在每台机器上进行的。一般集群中每个节点都会有一...阅读全文

博文 2017-10-19 10:04:54 king_wang

升级Go新版本,用go.mod 摆脱GOPATH的包管理束缚吧!

image.png “ Golang team在二月末发布了1.12版本,而athens也在3月初发布了v0.3.0版本,新一代的go语言包管理生态体系初见雏形” 最近被glide折腾的生不如死,下载墙外的包的时候就像段誉的六脉神剑一样,时灵时不灵,恰好此时go 1.12发布并且背靠微软的 go module 代理实现 athens发布了0.3.0的更新,为了早日摆脱glide,特对go module和athens做了可用性调研。 01 — go module go 1.11 试验性的引入了go module的概念,初步解决了go语言包管理的难题,talk is cheap, show me the code. 我们新建一个项目 test,test创建了一个grpc客户端并做了一个简单的rp...阅读全文

博文 2019-03-21 16:34:44 ZetaChow晓代码

grpc-go

1,关于grpc-gogolang 可以可以做grpc的服务端和客户端。官网的文档:http://www.grpc.io/docs/quickstart/go.htmlhttps://github.com/grpc/grpc-go和之前写的java的grpc客户端调用相同。也需要使用protobuf的配置文件。但是golang下面的类库非常的简单,而且golang的性能也很强悍呢。有些简单的业务逻辑真的可以使用golang进行开发。性能强悍而且,消耗的资源也很小。java感觉上已经非常的臃肿了。项目已经上传到github上面了。https://github.com/freewebsys/grpc-go-demo2,生成代码定义proto文件:syntax ="proto3";packageh...阅读全文

博文 2018-06-21 15:34:39 ebayboy

用gRPC实现一个系统(3):安全通信

在前一篇文章中,我们使用gRPC从零开始定义了一个服务。在这篇文章中,我们更近一步,在这个服务中添加TLS特性。 1. 制作证书 客户端和服务器通过gRPC相互通信,由于我们使用了protobuf来序列化和反序列化消息,因此消息的数据是二进制形式的。但是我们的通信是明文传输的,这在一些安全需求较高的场景中是不允许的,因此需要使用安全传输。幸好,在gRPC中,我们可以直接使用SSL/TLS,用来验证服务器,并对通信过程进行加密。 首先,需要生成证书。 1.1 生成私钥 在我们的simplemath项目目录中新建目录cert,进入这个目录,执行下面的命令来生成私钥: $ openssl genrsa -out server.key 2048 我们使用openssl genrsa命令来生成私钥,并...阅读全文

博文 2018-09-25 20:34:44 今天中午吃啥

grpc应用详解

文出处:gRPC gRPC分享 概述 gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。 image 特性 基于HTTP/2 HTTP/2 提供了连接多路复用、双向流、服务器推送、请求优先级、首部压缩等机制。可以节省带宽、降低TCP链接次数、节省CPU,帮助移动设备延长电池寿命等。gR...阅读全文

博文 2019-03-17 04:34:40 _黑夜问白天_

grpc-gateway:grpc转换为http协议对外提供服务

我所在公司的项目是采用基于Restful的微服务架构,随着微服务之间的沟通越来越频繁,就希望可以做成用rpc来做内部的通讯,对外依然用Restful。于是就想到了google的grpc。 使用grpc的优点很多,二进制的数据可以加快传输速度,基于http2的多路复用可以减少服务之间的连接次数,和函数一样的调用方式也有效的提升了开发效率。 不过使用grpc也会面临一个问题,我们的微服务对外一定是要提供Restful接口的,如果内部调用使用grpc,在某些情况下要同时提供一个功能的两套API接口,这样就不仅降低了开发效率,也增加了调试的复杂度。于是就想着有没有一个转换机制,让Restful和gprc可以相互转化。 在网上看到一个解决方案,https://github.com/grpc-ecosy...阅读全文

博文 2017-12-12 06:04:43 andyidea

gitlab 引用私有仓库(下)

本来以为配置了上篇操作就可以高枕无忧了,没想到,在引用的项目中,出现路径找不到的情况 cannot find module providing package go-sdk/wxsdk/common/comFunc/utilhttp 看了一些引用的官方库,才发现作为私有库的项目中go.mod 和路径要改,以官方的google.golang.org/grpc 项目来看一下 go.mod文件 module google.golang.org/grpc require ( cloud.google.com/go v0.26.0 // indirect github.com/BurntSushi/toml v0.3.1 // indirect github.com/client9/misspell ...阅读全文

博文 2019-03-30 22:34:43 西瓜啊贝贝

带入gRPC:对 RPC 方法做自定义认证

带入gRPC:对 RPC 方法做自定义认证 原文地址:带入gRPC:对 RPC 方法做自定义认证项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,我们介绍了两种(证书算一种)可全局认证的方法: TLS 证书认证 基于 CA 的 TLS 证书认证 Unary and Stream interceptor 而在实际需求中,常常会对某些模块的 RPC 方法做特殊认证或校验。今天将会讲解、实现这块的功能点 课前知识 type PerRPCCredentials interface { GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) Req...阅读全文

博文 2018-10-14 20:34:40 煎鱼

分布式任务调度平台-forest

# 分布式任务调度平台 > 演示地址:http://122.51.106.217:6579 ## 前言 在企业系统开发过程中难免少不了一些定时任务来进行定时触发执行任务,对于非分布式环境系统中,我们只需要在对应系统中内部集成一些调度库进行配置定时触发即可。 比如:使用Spring框架集成quartz,只需要进行一些简单的配置就能定时执行任务了。但是随着企业的系统越来越多、逐步从单一应用慢慢演变为微服务集群。 在分布式集群系统中主要面临出如:任务的重复执行、没有统一定时任务配置、任务节点故障转移、任务监控&报警等一些列的功能都是要在分布式系统中进行解决。 此分布式的定时任务调度平台,它非常轻量小巧,使用简单,后端以中心服务器为调度核心,负责集群中各种任务的动态分配和调度执行。 在平台前端支持W...阅读全文

博文 2019-10-23 11:27:45 busgo

grpc(5):使用grpc+consul 开发服务调用

1,consul 服务发现 在使用了几次之后终于感受到了这个系统挺好的了。 在一个小的团队里面,要做服务发现,做的简单高效。 可以直接使用 consul 作为服务发现,服务检查的系统。 不用自己去开发了。真的很方便,只要部署下就可以了。 github 上放了代码,都是很简单的。 https://github.com/freewebsys/grpc-go-demo 2,重新研究consul启动 发现之前是使用dig 进行操作的,因为consul官方网站也是推荐使用的。 但是其实可以使用ping ,nslookup 也是一样的。 但是需要修改consul的端口。 consul agent -dev -ui -server -node=consul-dev -client=10.0.2.15 -d...阅读全文

博文 2017-07-12 02:30:18 freewebsys

golang:如何在go-mod中指定包的版本号

今天遇到了一个小坑:使用etcdv3的时候,报了这么一堆错误# github.com/coreos/etcd/clientv3/balancer/resolver/endpointvendor\github.com\coreos\etcd\clientv3\balancer\resolver\endpoint\endpoint.go:114:78: undefined: resolver.BuildOptionvendor\github.com\coreos\etcd\clientv3\balancer\resolver\endpoint\endpoint.go:182:31: undefined: resolver.ResolveNowOption# github.com/coreos/e...阅读全文

博文 2020-03-17 05:32:50 RaymondW

go grpc安装

Prerequisites Go version gRPC works with Go 1.5 or higher. $ go version For installation instructions, follow this guide: Getting Started - The Go Programming Language Install gRPC Use the following command to install gRPC. $ go get google.golang.org/grpc Install Protocol Buffers v3 Install the protoc compiler that is used to generate gRPC service ...阅读全文

博文 2017-02-16 14:00:43 徐学良