Golang在大数据领域中的应用之唯品会高吞吐量Access Log存储的实现

潘卫华 / 唯品会基础架构部架构师,唯品会Dragonfly日志系统负责人。 对 Elasticsearch 和大数据流式处理有丰富经验,对Golang及其程序的性能优化也有较多研究。 前言 大家下午好!我是来自唯品会基础架构部的潘卫华。今天我们来跟大家一起看看在大数据领域里面,Golang的应用。我们知道在大数据领域里,Java 和 Scala 语言基本是处于统治地位的,主要是因为像 Hadoop 以及基于 Hadoop 的一些工具栈,比如 HBase/Hive/Spark/Flink 等等,...阅读全文

51CTO博客 2021-04-19 21:10:18 mob604756f0bbf4

如何更好运用Go语言 造就数千万月活的互联网产品

熊传亮:Klook的后端技术总监 前言 大家下午好!这次我给大家带来的分享是 Go 在客路的应用实践。我将从以下几个方面作分享: 一、Go In KLOOK 二、不同阶段的架构回顾 三、面临的新挑战 四、 一点探索和思考 Go In KLOOK 首先给大家介绍一下客路,目前主要业务是在海外,是一个全球目的地旅游体验预订平台,当地遍布全世界 250 个热门国家,提供 8万+ 服务的预定,包括折扣景点门票、一日游、当地交通等等。每月有 2000 多万全球用户使用 KLOOK 预订旅游活动,客路的国际...阅读全文

51CTO博客 2021-04-19 21:13:32 mob604756f0bbf4

【GoCN酷Go推荐】protobuf生成Go代码插件gogo/protobuf

从 JSON 开始 谈到序列化,大家最先想到的可能是 JSON 或者 XML,这两种序列化协议都是基于文本的编码方式进行数据传输。类似的还有 YAML 等。 JSON 拥有许多优点,使之成为最广泛使用的序列化协议之一。如 JSON 协议简单,人眼可读,序列化后十分简洁且解析速度快。此外,JSON 具备 JavaScript 的先天性支持,被广泛应用于 Web Browser 的应用场景中,并且是 Ajax 的事实标准协议。 JSON 的适用场景比较多,典型应用场景包括: 公司外部之间传输数据量相...阅读全文

51CTO博客 2021-04-19 20:27:19 mob604756f0bbf4

【GoCN译文视点】何时使用 Rust, 何时使用 Go

原文地址:https://medium.com/codex/when-to-use-rust-and-when-to-use-go-590bcbb49bec 原文作者: Joel 本文永久链接: Github 译者:tt 直截了当的说, Go 和 Rust 之间有明显的区别。Go 更加注重构建可扩展的 Web API 和微服务,尤其是有 goroutine 的助力。虽然 Rust 作为后者也可以做这些事情,但是开发体验要差许多。 Rust 非常适合处理大量数据和其他 CPU 密集型操作,例如执行...阅读全文

51CTO博客 2021-04-19 20:23:42 mob604756f0bbf4

【GoCN酷Go推荐】网络流量抓包库 gopacket介绍

gopacket简介 1. gopacket是什么?gopacket是google出品的golang三方库,质量还是靠的住,项目地址为:github.com/google/gopacket gopacket到底是什么呢?是个抓取网络数据包的库,这么说可能还有点抽象,但是抓包工具大家可能都使用过。 Windows平台下有Wireshark抓包工具,其底层抓包库是npcap(以前是winpcap); Linux平台下有Tcpdump,其抓包库是libpcap; 而gopacket库可以说是libpc...阅读全文

51CTO博客 2021-04-19 20:20:39 mob604756f0bbf4

看过这篇剖析,你还不懂 Go sync.Map 吗?

hi, 大家好,我是 haohongfan。 本篇文章会从使用方式和源码角度剖析 sync.Map。不过不管是日常开发还是开源项目中,好像 sync.Map 并没有得到很好的利用,大家还是习惯使用 Mutex + Map 来使用。 下面这段代码,看起来很有道理,其实是用错了(背景:并发场景中获取注册信息)。 instance, ok := instanceMap[name] if ok { return instance, nil } initLock.Lock() defer initLock...阅读全文

简书 2021-04-19 19:33:21 HHFCodeRv

Golang 全局sql数据库连接

Golang 如何把sql数据库连接写成全局的,不用每次频繁创建销毁,减少数据库消耗与代码复杂度。数据库连接通常在model层下的db.go中定义(命名自定义,也可以是database或者sql,与数据库相关)因为我这里是使用mongoDb所以为model/mgo.go代码: package model import ( "context" _ "fmt" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo...阅读全文

简书 2021-04-19 19:32:34 也许会了

百万年薪程序员必会的6种技能,你懂几种?

程序员这个行业,是一个区隔度特别高的行业。不少人短短几年就可以成长为高级工程师、资深架构师、首席架构师,而另外一部分人很可能工作10年还是初中级工程师。优秀的程序员拿到百万年薪已经不是什么很惊讶的事情,甚至年薪超过300万,500万的程序员都有不少,但大多数程序员,仍然迈不过年薪30W这个坎,而入门级或者初中级程序员甚至只能拿10万年薪。很多时候,遇见复杂系统问题,派多少个初中级工程师都于事无补,而一个资深架构师就可以轻松搞定。那么相较于普通程序员,一个优秀的资深程序员一般具有哪几种隐性能力呢?...阅读全文

简书 2021-04-19 19:32:33 广州云来米

go语言入门教程07 函数

转载请注明来源"老男孩IT教育"来源网址:https://www.sholdboyedu.com/new/480.html函数的定义有很多种,每门语言的函数的运用大相径庭,那么如何在GO语言中运用好函数呢,下面我们一起来看看吧!函数(Function)函数是什么?函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输出。函数的声明在 Go 语言中,函数声明通用语法如下:func functionname(parametername type) returnty...阅读全文

51CTO博客 2021-04-19 17:31:20 上海老男孩教育

使用 Go 语言徒手撸一个简单的负载均衡器

作者 | kasvith译者 | 无明策划 | 赵钰莹负载均衡器在 Web 架构中扮演着非常重要的角色,被用于为多个后端分发流量负载,提升服务的伸缩性。负载均衡器后面配置了多个服务,在某个服务发生故障时,负载均衡器可以很快地选择另一个可用的服务,所以整体的服务可用性得到了提升。在使用了专业的负载均衡器(比如 NGINX)之后,我试着自己开发一个简单的负载均衡器。我选择使用 Go 语言来实现,因为它对并发支持得非常好,还提供了丰富的标准库,只需要几行代码就可以开发出高性能的应用程序。自研负载均衡器...阅读全文

51CTO博客 2021-04-19 10:29:41 mob604756ef1373

未编译的Python代码比Go慢100倍,编译后呢?

作者丨 Rodrigo Ramirez译者丨无明策划丨小智我是编译型编程语言的忠实粉丝,一直都是。虽然解释型编程语言可以让开发者更快地编写和测试代码,但我仍然认为编译器是值得长期投入的。在我看来,编译型代码有两个明显的优势:每次修改代码都可以得到验证,甚至是在开始运行代码之前。更快的执行速度。根据具体情况,代码可能被编译成非常底层的运行指令。我之所以要写这篇文章,是想比较一下编译型代码的执行速度会比解释型快多少。因为我偏ai编译型编程语言,所以现在有个问题:我手头有很多感兴趣的代码,但它们都是用...阅读全文

51CTO博客 2021-04-19 09:59:18 mob604756ef1373

DevOps CI/CD 分析(四)之编写K8S yaml模版

本节我们开始编写K8S yaml模版文件,如果对K8S yaml模版配置不清楚的请参阅DevOps CI/CD 分析(三)之K8S yaml模版配置详解,DevOps CI/CD的整个过程中,我们会依赖我们的K8S yaml模版文件,每个项目中只需要配置项目相关的参数,最终会将项目中配置的参数替换到K8S yaml模版文件中,现在我们直接开始进入主题! Kubernetes yaml模版内容 {{$defaultPort := "80"}} {{$contrainerPort := or .co...阅读全文

简书 2021-04-19 12:33:03 Blog

最清晰易懂的 Go WaitGroup 源码剖析

hi,大家好,我是haohongfan。 本篇主要介绍 WaitGroup 的一些特性,让我们从本质上去了解 WaitGroup。关于 WaitGroup 的基本用法这里就不做过多介绍了。相对于《这可能是最容易理解的 Go Mutex 源码剖析》来说,WaitGroup 就简单的太多了。 源码剖析 Add() add Wait() wait type WaitGroup struct { noCopy noCopy state1 [3]uint32 } WaitGroup 底层结构看起来简单,但...阅读全文

简书 2021-04-19 12:33:03 HHFCodeRv

Go语言学习11-数据的使用

4. Go语言数据的使用 前面的博文,我们介绍了Go语言的各种数据类型,包括基本数据类型、数组类型、切片类型、字典类型、函数类型、接口类型、结构体类型和指针类型;从本篇开始我们一起来了解Go语言数据的使用。 4.1 赋值语句 如果值 x 可以被赋给类型为 T 的变量,那么它们至少需要满足以下条件中的一个赋值规则: 如果值 x 的类型是 T , 那么 x 可以被赋给 T 类型的变量。 如果值 x 的类型是 V,那么 V 和 T 应该具有相同的潜在类型,并且它们之中至少有一个是未命名的类型。未命名的...阅读全文

51CTO博客 2021-04-19 09:36:25 Huazie

2021,属于Golang和Gopher的全新纪元

2021·GoCN 2021年,是 Go 语言无比重要的一年,因为Go即将完全解决压在Go头顶的三座大山:error handling、go module 和泛型。前面两个在之前陆续版本之中已经解决,终于在今年初官方通过多个版本的讨论和迭代,正式确认了泛型的语法和方案。一旦泛型发布,我们坚信 Go 即将在更多领域内开花结果。而 Go 作为一门构建现代网络软件生态系统的重要的开源语言,在这十二年里,Go 从一门小众语言,逐渐统治云计算领域,跻身最多人使用的语言 Top10,成为腾讯、阿里内部的第二...阅读全文

51CTO博客 2021-04-18 00:00:18 mob604756f0bbf4

为什么我们从 Docker 转向了 Go?

在以往的很多项目中,我们都采用了Docker,而且效果都很不错(大多数时候都不错,只不过有时我们的生产系统中的红帽系统文件会出一些莫名的状况,但可能并不是Docker的问题)。但是,这一次我们并没有采用Docker,原因是没有必要。我们用golang编写了Web服务和静态的html,并且还是用了golang 1.16的新指令//embed,最终得到了一个可部署的二进制文件。作为一个自强自立的创业公司,我们可以使用的资源非常有限。正是出于这个原因,我们才选择了Golang。我们也渴望能够花费几个星...阅读全文

51CTO博客 2021-04-18 13:12:46 mb6066e504cce6f

Go time

时间包括时间值和时区,没有包含时区信息的时间是不完整的、有歧义的。 Golang内置的time包提供了时间的显示和测量的函数 功能 描述 time.Time 时间点 time.Duration 时间段 time.Location 时区 time.Timer 定时器 time.Ticker 周期触发定时的计时器 time.C 存放时间点的管道 时间点 time.Time 所有与时间相关的业务都是基于时间点而仰伸的,两个时间点组成一个时间段。 Golang内置的time时间包提供了一个数据类型tim...阅读全文

简书 2021-04-19 01:32:32 JunChow520

Zookeeper 的 Golang 客户端

使用 docker 创建的三个 Zookeeper 服务端组成的集群,其 ip 地址分别为: 172.17.0.2 172.17.0.3 172.17.0.4 一、增删改查 1 增 / create 创建新节点一共有四种: 持久节点 临时节点 持久时序节点 临时时序节点 代码: package main import ( ... "github.com/go-zookeeper/zk" ) func main() { conn, _, err := zk.Connect([]string{"17...阅读全文

简书 2021-04-19 01:32:31 thepoy

手撸golang 仿spring ioc/aop 之10 增强1

手撸golang 仿spring ioc/aop 之10 增强1 缘起 最近阅读 [Spring Boot技术内幕: 架构设计与实现原理] (朱智胜 , 2020.6) 本系列笔记拟采用golang练习之 Talk is cheap, show me the code. Spring Spring的主要特性: 1. 控制反转(Inversion of Control, IoC) 2. 面向容器 3. 面向切面(AspectOriented Programming, AOP) 源码gitee地址:...阅读全文

简书 2021-04-19 01:32:31 老罗话编程