#GoLang

golang用通道实现信号量,控制并发个数

 funcmain(){varwgsync.WaitGroupsem:=make(chanstruct{},2)//最多允许2个并发同时执行taskNum:=10fori:=0;i<taskNum;i++{wg.Add(1)gofunc(idint){deferwg.Done()sem<-stru...

golang channel 用法

一、Golang并发基础理论Golang在并发设计方面参考了C.A.RHoare的CSP,即CommunicatingSequentialProcesses并发模型理论。但就像JohnGraham-Cumming所说的那样,多数Golang程序员或爱好者仅仅停留在“知道”这一层次,理解CSP理论...
代码星球 ·2020-10-02

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

Ahighperformance,opensource,generalRPCframeworkthatputsmobileandHTTP/2first.——gRPCWebsitegRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP/2协议标准设计开发,默认采...

Golang gRPC实践 连载三 Protobuf语法

gRPC推荐使用proto3,本节只介绍常用语法,更多高级使用姿势请参考官方文档一个message类型定义描述了一个请求或相应的消息格式,可以包含多种类型字段。例如定义一个搜索请求的消息格式,每个请求包含查询字符串、页码、每页数目。syntax="proto3";messageSearchRequest{stringq...

Golang gRPC实践 连载四 gRPC认证

gRPC默认提供了两种认证方式:基于SSL/TLS认证方式远程调用认证方式两种方式可以混合使用这里直接扩展hello项目,实现TLS认证机制首先需要准备证书,在hello目录新建keys目录用于存放证书文件。制作私钥(.key)#Keyconsiderationsforalgorithm"RSA"≥2048-bi...

Golang gRPC实践 连载七 HTTP协议转换

正当有这个需求的时候,就看到了这个实现姿势。源自coreos的一篇博客,转载到了grpc官方博客gRPCwithRESTandOpenAPIs。etcd3改用grpc后为了兼容原来的api,同时要提供http/json方式的API,为了满足这个需求,要么开发两套API,要么实现一种转换机制,他们选择了后者,而我们选择跟...

Golang gRPC实践 连载六 内置Trace

grpc默认提供了客户端和服务端的trace日志,可惜没有提供自定义接口,当前只能查看基本的事件日志和请求日志,对于基本的请求状态查看也是很有帮助的,客户端与服务端基本一致,这里已服务端开启trace为例,修改hello项目的server代码:server/main.gopackagemainimport("net""...

Golang gRPC实践 连载五 拦截器 Interceptor

grpc服务端提供了interceptor功能,可以在服务端接收到请求时优先对请求中的数据做一些处理后再转交给指定的服务处理并响应,功能类似middleware,很适合在这里处理验证、日志等流程。在自定义Token认证的示例中,认证信息是由每个服务中的方法处理并认证的,如果有大量的接口方法,这种姿势就太蛋疼了,每个接口...

golang安装gRpc 报错

golang安装gRpc安装官方安装命令:gogetgoogle.golang.org/grpc是安装不起的,会报:package google.golang.org/grpc:unrecognizedimportpath"google.golang.org/grpc"(httpsfetch:Get ...
代码星球 ·2020-10-02

golang-protobuf使用

什么是protobuf?Protocolbuffers是一个灵活的、高效的、自动化的用于对结构化数据进行序列化的协议,与XML、json相比,Protocolbuffers序列化后的码流更小、速度更快、操作更简单。安装protoc工具proto用来将.proto文件转化为自己使用的语言格式,我使用的是go语言,所以还要...
代码星球 ·2020-10-02

Golang中的面向对象继承

Golang的面向对象机制与Smalltalk或者Java等传统面向对象的编程语言不同。传统面向对象编程语言的一个重要特性是继承机制。因为继承机制支持在关联对象间进行代码复用和数据共享。继承机制曾在代码复用和数据共享的设计模式占据主导地位,但是目前组合这一古老的技术重新焕发了活力。本篇文章转自TimHenderson的...

golang中的结构体匿名成员

最近在开发caddy的插件,碰到了很多以前不怎么注意的地方,先重点记录下几个点.写插件比较追求的一点是:如何不破坏原有的体系而达到想要的效果.这个确实有点难…有关结构体匿名成员在《EffectiveGo》中的embedding一节讲的很详细,一言一蔽之: 另一种形式的继承.如果B类型中包含了A类...

GRPC中设置client的超时时间(golang)

在使用grpc的时候遇到了一个问题:如何设置client端的超时时间?网上搜了一大圈,没有太明显的例子.这里我们先看下看看grpc的helloworld例子:client1234567891011121314151617181920funcmain(){//Setupaconnectiontotheserver.con...

golang中最大协程数的限制(线程)

golang中最大协程数的限制golang中有最大协程数的限制吗?如果有的话,是通过什么参数控制呢?还是通过每个协程占用的资源计算?通过channel控制协程数的就忽略吧。 以我的理解,计算机资源肯定是有限的,所以goroutine肯定也是有限制的,单纯的goroutine,一开始每个占用4K内存,所以这里会...

分布式链路追踪(Tracing)系统 – Jaeger在Golang中的使用

先从微服务说起目录 [隐藏]微服务Tracing在微服务中的作用为什么是Jaeger安装客户端在单体应用中实现Tracing.通过Grpc中间件使用在业务代码中使用通过Gin中间件中使用结语部署篇使用Elasticsearch作为存储后端相关文章一个完整的微服务体系至少需要包括:CI/CD也就是自动化部署服务...
首页上一页...45678...下一页尾页