如何使用 Golang 日志监控你的应用程序?

导读 你是否厌烦了那些使用复杂语言编写的、难以部署的、总是在不停构建的解决方案?Golang 是解决这些问题的好方法,它和 C 语言一样快,又和 Python 一样简单。 但是你是如何使用 Golang 日志监控你的应用程序的呢?Golang 没有异常,只有错误。因此你的第一印象可能就是开发 Golang 日志策略并不是一件简单的事情。不支持异常事实上并不是什么问题,异常在很多编程语言中已经失去了其异常性:它们过于被滥用以至于它们的作用都被忽视了。 在进一步深入之前,我们首先会介绍 Golang...阅读全文

2018-05-19 23:33:05 问题终结者
阅读:1526 评论:0

golang利用reflect包实现struct与params自动绑定

前言 因为 golang 静态强类型语言特性以及没有很好的泛型支持导致在用 go 写 web 服务的时候,总会因为要对 http params 的解析和类型转换上要花很多时间,并且这会让代码显得很冗余,那有什么办法可以解决这一苦痛呢?答案当然是有的,这里我讲会到如何用 reflect 包写一个工具类实现 model 层 struct 与 http params 的自动映射绑定。 具体实现其实很简单,主要用到的就是通过 reflect.TypeOf() 获取字段的类型(包括字段名,类型,Tag描述...阅读全文

阅读:856 评论:0

Golang 如何操作DB2的?

go-db2-example ibm db2是款商用的db,默认支持的编程语言中没有Go,也没有介绍过,今天就演示下Go通过odbc方式连接ibm db2的例子。 DB2 ODBC driver 安装DB2 ODBC driver DB2 ODBC driver的来源有一下几种: db2安装包自带odbc驱动,和常用的jdbc驱动一样,odbc驱动一般都是在安装包中自带。 此外,一些单独的db2套件也含有odbc驱动,如:DB2 Application Development Client, D...阅读全文

阅读:1650 评论:0

golang在自定义的https服务器中启用pprof接口

以下所有观点都是个人愚见,有不同建议或补充的的欢迎emial, aboutme 原文章地址 pprof的简介 pprof是golang标准库里面的其中一个库,它通过其HTTP服务器得到运行时的分析数据,从而给pprof可视化工具提供数据分析来源。它可以用来分析性能消耗,分析内存泄漏,死锁等。 具体使用可以了解官方包pprof,那我如何在http中使用pprof?如何在已有http或者https服务上使用pprof呢? 这些答案在标准库找不到,随在此记录一下。 如何启动pprof 在官方包中已经给...阅读全文

2018-05-29 11:57 sheepbao.github 等
阅读:3498 评论:0

Golang 速查表

译文地址:blog原文:golang-cheat-sheet 简要概括 Go 语法及特性。 目录 基础语法 运算符 算术运算符 比较运算符 逻辑运算符 其他 声明 函数 函数作为值和回调使用 可变参数函数 内置类型 类型转换 package 流程控制结构 条件判断(if) 循环(for) 多条件分支(switch) array, slice, range array slice array 和 slice 的操作函数 map 结构体 指针 接口 结构体和接口的组合嵌入 Errors 并发 gor...阅读全文

阅读:1751 评论:0

如何将高并发拉下神坛!

高并发也算是这几年的热门词汇了,尤其在互联网圈,开口不聊个高并发问题,都不好意思出门。 高并发有那么邪乎吗?动不动就千万并发、亿级流量,听上去的确挺吓人。但仔细想想,这么大的并发与流量不都是通过路由器来的吗?一切源自网卡高并发的流量通过低调的路由器进入我们系统,第一道关卡就是网卡,网卡怎么抗住高并发?这个问题压根就不存在,千万并发在网卡看来,一样一样的,都是电信号,网卡眼里根本区分不出来你是千万并发还是一股洪流,所以衡量网卡牛不牛都说带宽,从来没有并发量的说法。网卡位于物理层和链路层,最终把数据...阅读全文

2018.06.30 20:42 Java架构技术分享
阅读:3878 评论:4

Golang之双向认证

此篇文章主要介绍https用Golang生成证书和Golang实现https认证的过程,至于ssl/tls相关的知识点,我在文章末尾会附上我个人觉得对读者有用的文章。单向验证过程:客户点包含ca.crt,服务端包含server.key和server.crt;客户端:客户端生成一个随机数random-client,传到服务器端;服务端:服务器端接收消息之后,生成一个随机数random-server和包含公钥的证书,一起回馈给客户端;客户端:客户端收到的东西原封不动,加上premaster secr...阅读全文

2018.07.02 23:29 取个帅气的昵称华华
阅读:4726 评论:0

Golang + MongoDB ReplSet副本集

本文介绍MongoDB副本集,暂且按照3个节点来配置:A(primary)、B(secondary)、C(arbiter)1. 在集群每个节点上安装一份MongoDB;2. 配置副本集;3. 配置副本集的用户名、密码;4. 配置副本集的KeyFile安全鉴权;5. 配置开机启动;6. golang连接MongoDB副本集,并执行CRUD操作;每个节点IP:A节点: 11.11.11.11B节点: 22.22.22.22C节点: 33.33.33.33第一步: 安装MongoDB每个节点安装Mon...阅读全文

2018.07.03 13:42* shen100
阅读:2155 评论:0

微服务之间通过RabbitMQ通信

微服务之间通过RabbitMQ通信 微服务之间是相互独立的,不像单个工程一样各个模块之间可以直接通过方法调用实现通信,相互独立的服务直接一般的通信方式是使用 HTTP协议、rpc协议或者使用消息中间件如RabbitMQ``Kafka等 image 在这篇文章 使用Golang和MongoDB构建微服务 已经实现了一个微服务的应用,在文章中已经实现了各个服务直接的通信,是使用的 HTTP的形式 ,那各个服务之间如何通过 RabbitMQ进行消息通信呢,我们现在要实现一个功能,就是一个用户预订电影票...阅读全文

2018.07.16 17:23 CoderMiner
阅读:2876 评论:0

挑战Kafka!Redis5.0重量级特性Stream尝鲜

导读:Redis5.0最新重点推出了Stream的支持,给众多架构师在消息队列方面带来了新的选择,特别是Redis粉丝们绝对是一个福音。那么Redis的Stream有哪些特别的功能?跟kafka有哪些异同?怎么更好的使用它呢?本文作者老钱对此调研颇多,小编读后觉得受益很大,大家也不妨详细了解下。作者简介:钱文品(老钱),互联网分布式高并发技术十年老兵,目前任掌阅科技资深后端工程师。熟练使用 Java、Python、Golang 等多种计算机语言,开发过游戏,制作过网站,写过消息推送系统和MySQ...阅读全文

2018.07.17 11:14 iralance
阅读:2885 评论:0

hystrix-go

内部组织了一次关于hystrix-go的分享,没想到引起了内部的困惑,对于没有做过分布式系统的开发同学可能根本没有接触过hystrix,学习一个新东西,我个人的一贯思路是按照黄金圈理论。 这里关于hystrix是什么就不描述了,百度一下足够你翻几屏的了。因为目前Team以golang为主要开发语言,所以使用了开源的hystrix-go(https://github.com/afex/hystrix-go).大家先看下面一个例子:var Number intvar Result stringfun...阅读全文

阅读:2087 评论:0

ProtoBuf 懒人插件

插件由来 之前在学习GRPC 微服务开发时,学习到了ProtoBuf 这个序列化协议,但是ProtoBuf 编译的确实麻烦,于是笔者闲着无聊就自己写了个插件,可以 快捷编译ProtoBuf 文件,1.0.0 中只支持 GRPC go语言的生成;1.0.1 版本,添加GUI界面 ,并支持了多语言的生成。 插件下载 1.0.0版 1.0.1版 使用 1,前提: proto工具下载 1,下载idl代码生成工具 https://repo1.maven.org/maven2/com/google/prot...阅读全文

阅读:2192 评论:0

图解 Go 并发编程

你很可能从某种途径听说过 Go 语言。它越来越受欢迎,并且有充分的理由可以证明。 Go 快速、简单,有强大的社区支持。学习这门语言最令人兴奋的一点是它的并发模型。 Go 的并发原语使创建多线程并发程序变得简单而有趣。我将通过插图介绍 Go 的并发原语,希望能点透相关概念以方便后续学习。本文是写给 Go 语言编程新手以及准备开始学习 Go 并发原语 (goroutines 和 channels) 的同学。 ## 单线程程序 vs. 多线程程序 你可能已经写过一些单线程程序。一个常用的编...阅读全文

2018-07-29 22:11:48 mbyd916
阅读:21769 评论:16

Golang 对接宝付、通联、富友金账户...填坑记

一、宝付私钥加密,公钥解密 由于对RSA加密解密原理不是很熟悉,宝付也没有Golang的Demo提供。Go语言库里一般都是私钥解密、公钥加密,或者私钥签名、公钥验签。宝付需要反过来,这里也到好找到了https://github.com/farmerx/gorsa的实现,但始终宝付那边提示签名验证失败。然后就继续找其他的实现了,这就惨了各种Google完全无解。最后回过头来只能,使用加解密原文,跟.Net平台的结果进行比对。一通折腾或者叫折磨之后,发现其实只是每次加密多了117个字节的全是0,后面...阅读全文

2018-08-05 13:38 KendoCross
阅读:5350 评论:3

无停机优雅重启 Go 程序

## 什么是优雅重启 在不停机的情况下,就地部署一个应用程序的新版本或者修改其配置的能力已经成为现代软件系统的标配。这篇文章讨论优雅重启一个应用的不同方法,并且提供一个功能独立的案例来深挖实现细节。如果你不熟悉 Teleport 话,Teleport 是我们使用 Golang 针对弹性架构设计的 [SHH 和 Kubernetes 特权访问管理解决方案](https://gravitational.com/teleport/)。使用 Go 建立和维护服务的开发者和网站可靠性工程师(SRE)...阅读全文

2018-08-07 22:31:14 magichan
阅读:6638 评论:0

Go 中的匿名函数和反射

我最近在浏览 Hacker News 时看到一篇吸引我眼球的文章《[Python中的Lambdas和函数](http://www.thepythoncorner.com/2018/05/lambdas-and-functions-in-python.html?m=1)》,这篇文章 —— 我推荐你自己阅读一下 —— 详细讲解了如何运用 Python 的 lambda 函数,并举了一个例子展示如何使用 Lambda 函数实现干净,[DRY](https://en.wikipedia.org/wiki...阅读全文

2018-08-08 09:59:31 MoodWu
阅读:1436 评论:2

负载均衡--golang实现一致性hash算法

有没有好奇过redis、memcache等是怎么实现集群负载均衡的呢? 其实他们都是通过一致性hash算法实现节点调度的。 讲一致性hash算法前,先简述一下求余hash算法: hash(object)%N 一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(obje...阅读全文

阅读:5780 评论:1