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

由Go语言并发模型想到游戏服务器并发

这段时间看了一些Go语言相关的东西,发现Go语言的最大特性并发模型类似于C++里面的线程池,正好我们项目服务器也是用的线程池,记录下。 Go语言的并发单位是语言内置的协程,使用关键字go+函数创建一个新的协程,新创建的协程会自动加入到协程调度上下文的等待调度队列,一个协程调度上下文对应一个线程,一个协程调度上下文对应多个协程。新加入的协程会动态负载到各个调度上下文,如果所有调度上下文的平均负载较高时,总调度器会自动创建新的线程和对应的调度上下文用于工作。整体上看,是N个线程:N个调度上下文:M个协程的关系。 我们项目服务器线程架构使用boost::threadpool作为底层,按照配置设定的线程数量启动threadpool,驱动所有Invoker单元,各个Invoker再驱动持有自己的Ser...阅读全文

博文 2014-10-17 03:00:01 gns3

golang使用Nsq

为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯。一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golang原汁原味的东西,功能齐全,关键是性能还不错。其中支持动态拓展,消除单点故障等特性, 都可以很好的满足我的需求 下面上一张Nsq与其他mq的对比图,看上去的确强大。下面简单记录一下Nsq的使用方法 golang2017开发者大会 Nsq服务端 Nsq服务端简介 在使用Nsq服务之前,还是有必要了解一下Nsq的几个核心组件整个Nsq服务包含三个主要部分 nsqlookupd 先看看官方的原话是怎么说:nsqlookupd是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话...阅读全文

博文 2017-04-24 12:56:37 喵喵小魔王

moonmq: 用go实现的高性能message queue

介绍 moonmq是一个用go实现的高性能消息队列系统,后续准备用于我们消息推送服务以及各个后台的异步任务。 在设计上面,moonmq主要借鉴了rabbitmq以及rocketmq相关的思想,但是做了很多减法,毕竟我不是要设计成一个非常通用的mq。 名词解释 publisher,消息生产者consumer,消息消费者broker,消息中转站queue,消息存储队列 publisher给一个命名的queue发送消息msg,broker负责将msg存放在queue里面。 consumer可以关注自己感兴趣的queue,这样当queue里面有消息的时候,broker就会将该消息推送给该consumer。 推拉模型 在rocketmq里面,支持的是pull msg,而rabbitmq则是支持push...阅读全文

博文 2015-06-18 18:07:58 siddontang

分布式后台任务队列模拟(Golang)

最近研究了下gowoker,这东西代码少而精,Golang真是很适合实现这类东西。 我去掉参数配置,JSON,Redis这些东西,用goworker的方式做了个最简单的实现。 实现如下功能: 1. worker向JobServer注册可执行的功能 2. JobServer轮询,有job就执行,没有则继续轮询 3. client向JobServer提出任务请求,并传入参数 4. JobServer依请求丢给worker执行(可并发或串行执行) 5. JobServer继续轮询 我弄的这个代码很少,其中队列用数组代替,同时省掉了很多东西, 但保留了其goroutine与channel最基础的实现。 如果想看goworker的,可以参考下我这个,应当可以更快的弄明白goworker。 演示例子及运...阅读全文

博文 2015-06-17 20:03:48 xcltapestry

golang轮询机制select的理解

func main() { c := make(chan int) quit := make(chan int) go func() { for i := 0; i < 10; i++ { fmt.Println(<-c) } quit <- 0 }() fibonacci(c, quit) } //select的轮询机制 func fibonacci(c chan int, quit chan int) { x, y := 0, 1 for { select { // select轮询机制 case c <- x: x, y = y, x+y case <-quit: fmt.Println("quit") return } } } main中执行fibonacci函数时候,select有...阅读全文

博文 2015-07-24 16:00:01 webyh

[更新] 深圳羚羊极速科技有限公司招聘golang开发工程师

golang语言开发工程师 岗位职责: 1. 负责分布式系统设计与实现 2. 负责云存储系统的维护和优化 任职要求: 1. 3年以上 Linux 操作系统下的 GO项目的开发经验; 2. 有分布式存储开发、设计、架构经验,深刻理解分布式存储原理,有海量非结构化数据存储设计经验的优先考虑; 3. 精通linux IO系统、网络系统,精通高性能系统者优先; 4. 有RabbitMQ开发经验者优先; 5. 熟悉MongoDB、LevelDB数据库; 6. 具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力; 7. 有良好的团队合作能力,富有工作激情,善于沟通,热爱开发事业。 上班地点:深圳市...阅读全文

Golang控制goroutine的启动与关闭

最近在用golang做项目的时候,使用到了goroutine。在golang中启动协程非常方便,只需要加一个go关键字: go myfunc(){ //do something }() 但是对于一些长时间执行的任务,例如: go loopfunc(){ for{ //do something repeat } }() 在某些情况下,需要退出时候却有些不方便。举个例子,你启动了一个协程,长时间轮询处理一些任务。当某种情况下,需要外部通知,主动结束这个循环。发现,golang并没有像java那样中断或者关闭线程的interrupt,stop方法。于是就想到了channel,通过类似信号的方式来控制goroutine的关闭退出(实际上并不是真的直接关闭goroutine,只是把一些长时间循环的阻塞...阅读全文

博文 2015-10-11 04:00:00 vimsk

【杭州互联网金融】数据获取工程师,年薪15-30W+期权

【岗位信息】 数据获取工程师 工作职责: 1.使用golang进行项目的开发 2.海量数据只能抽取,校对 3.抓取程序及集群只能调度控制 4.Tcp,HTTP数据协议破解,攻防 基础要求: 1.熟悉网络编程(TCP/IP,HTTP),数据结构,通用算法 2.熟悉消息系统及数据存储 3.具有较好的学习与发现问题的能力,同事能独立使用代码解决问题尤佳 优先考虑: 1.不限于golang,有海量数据、高负载产品实际开发经验 2.已有爬虫的开发经验,参与过大规模数据爬取 【工作地点】:杭州西湖区 【公司信息】 有意者QQ2778420498(备注studygolang),产品为理财记账类产品,2014年底B轮,5000w美金,2015年7月B+轮,8000...阅读全文

webhook 是什么以及如何创建

我们在网上做的工作,大部分其实就是事件,webhooks 已经成为了连接系统的主要方式,不管是用户创建、支付成功、DockerHub 镜像推送或者 Git 仓库上的合并请求,这些都是非常有用并且轻量级的共享信息的方式 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/webhook/1.png) 那么,webhook 究竟是什么呢?webhook 是应用给其它应用提供实时信息的一种方式。信息一产生,webhook 就会把它发送给已经注册的应用,这就意味着你能实时得到数据。不像传统的 APIs 方式,你需要用轮询的方式来获得尽可能实时的数据。这一点使得 webhook 不管是在发送端还是接收端都非常高效。由...阅读全文

博文 2018-09-25 10:05:16 jettyhan

基于Redis实现的延迟队列

delay-queue 延迟队列, 参考有赞延迟队列设计实现 项目地址 运行 ./delay-queue -c delay-queue.conf 默认监听0.0.0.0:9277 HTTP接口 请求方法 POST 请求Body及返回值均为json 返回值 { "code": 0, "message": "添加成功", "data": null } 参数名 类型 含义 备注 code int 状态码 0: 成功 非0: 失败 message string 状态描述信息 data object, null 附加信息 添加任务 URL地址 /push { "topic": "order", "id": "15702398321", "delay": 3600, "ttr": 120, "body"...阅读全文

博文 2017-07-04 16:04:57 order_c

创业公司招聘工程师

## 我们是谁 我们的名字叫**年假旅行**--各大应用商店均可下载我们的同名APP 我们是一家做**境外游**的创业公司, 我们是**旅游卫视**[经广电总局批准的中国境内唯一一家以旅游休闲为主要内容的专业化卫星电视频道]和**众信旅游**[中国最大的出境游运营商之一] 合伙投资的 我们马上就A轮融资--赶在A轮之前入职会有更多惊喜 ## 我们需要 **前端工程师** 能独立完成工作 较好的JavaScript&CSS基础 1年以上前端开发经验 **java工程师** 较好的java基础及编程理念 1年以上java编程经验或者实习生 会一门脚本语言 熟悉linux ## 如果你是这样纸我们会更爱你 - **态度认真,做事负责,认为做出最好...阅读全文

(Go语言)Go的网络轮询及IO机制

创文章,转载请注明出处:服务器非业余研究-sunface 简介 这篇介绍了Go的运行时系统——网络I/O部分。 阻塞 Go语言中,所有的I/O都是阻塞的,因此我们在写Go系统的时候要秉持一个思想:不要写阻塞的interface和代码,然后通过goroutines和channels来处理并发,而不是用回调和futures。其中一个例子是“net/http"包中的http服务器,无论何时当http服务器接收一个连接,它都会创建一个新的goroutine处理来自这个连接的所有请求,这样我们就能写出很清晰的代码:先做什么,然后做什么。然而,不幸的是,操作系统提供的阻塞式I/O并不适合构建我们自己的阻塞式I/O接口(interface)。 在我之前有关Go运行时的文章中,其中一篇介绍了Go调度器如何处...阅读全文

博文 2015-06-17 23:01:52 working_brain

Bootstrap导入JavaScript插件

u=2721599714,2937226223&fm=21&gp=0 导入JavaScript插件 Bootstrap除了包含丰富的Web组件之外,如前面介绍的下拉菜单、按钮组、导航、分页等。他还包括一些JavaScript的插件。 Bootstrap的JavaScript插件可以单独导入到页面中,也可以一次性导入到页面中。因为在Bootstrap中的JavaScript插件都是依赖于jQuery库,所以不论是单独导入还一次性导入之前必须先导入jQuery库。 一次性导入: Bootstrap提供了一个单一的文件,这个文件包含了Bootstrap的所有JavaScript插件,即bootstrap.js(压缩版本:bootstrap.min.js)。 具体使用...阅读全文

golang实现权重轮询调度算法(Weighted Round-Robin Scheduling)

最近在看golang连接mysql数据库的例子(Go-MySQL-Driver),但是想到连接数据库肯定会有连接多从库的需求,而且每个从库的权重也会不一样,参考<<权重轮询调度算法(Weighted Round-Robin Scheduling)>>这篇文章写了一个golang版本的权重轮询调度算法,请大家指教,不多说了直接上代码: package main import ( "fmt" "time" ) var slaveDns = map[int]map[string]interface{}{ 0: {"connectstring": "root@tcp(172.16.0.164:3306)/shiqu_tools?charset=utf8", "weight": 2}, 1: {"co...阅读全文

博文 2016-11-03 02:00:03 Lancerio

筑巢新游招聘Go语言开发工程师/北京望京soho/15-25k

岗位职责: 移动互联网服务器端开发。 任职要求: 1、热爱互联网,对探索未知领域有浓厚的兴趣 2、优秀的分析问题和解决问题的能力,对解决具有挑战性问题充满激情 3、精通C++/Java/PHP/Python/Golang任意2种语言编程,熟悉linux平台 4、对数据结构和算法设计有较为深刻的理解 5、具有良好的沟通能力,和良好的团队合作精神 优先条件: 1. 有广告平台工作经验 2. 有运营数据平台经验 3. 有大数据处理经验 4. 有大并发处理经验 5. 能独立处理Web前端相关工作 6. 能撰写简明易懂的技术文档 7. 能高效的与不同岗位的同事沟通,解释,答疑,获得技术所需资源。 B轮创业公司,位于望京soho,纯纯的...阅读全文

资深GOLANG 开发工程师

招聘PHP工程师和C++ 工程师,15K, B轮、双休、golang熟练, 工作地点深圳南山科技园,地铁高新园B出口。有意者15002093278,或者chenrs@welearn.com . 在线辅导第一品牌。公司的核心团队来自腾讯、阿里、迅雷、华为、快播、新东方。是一个混搭型的团队,公司管理的核心理念是“以人为本,让工作成为实现个人价值的最佳途径”,在管理模式上,采取基于信任的管理...阅读全文

【探探】知名社交 招聘 高级GO语言开发

联系方式: QQ:405121666 Email:king@fengqihr.com 薪资面议 职责: 探探后台服务的研发 项目管理 带新人 要求: 两年以上工作经验 在一线的互联网公司工作过。 参与过百万级日活以上产品的研发。 熟悉Go语言或者至少精通其他一门语言并且愿意转go 善于沟通协作 公司简介 探探,2016年最具成长力产品奖。 探探,2015年“最受女性欢迎的社交app”奖项获得者。 探探,2015年拉勾“社交领域最佳雇主”奖项获得者。 探探,2015年百度“年度创新应用”奖项获得者。 探探,2015年中国互联网大会“最具行业先锋奖”奖项获得者。 探探,2015年中国互联网大会授予探探团队行业先锋人物获得者。 截至到...阅读全文

IO模型

一:IO简介Unix(like)中,一切皆文件。Socket、FIFO、管道、终端都是文件,一切都是流。在信息交换的过程中,实际都是对这些流进行的数据收发操作,简称I/O操作(系统调用read、write)。而流有很多,于是就用文件描述符(fd)来区分具体是哪个流。For example,我们创建了一个socket,系统调用会返回一个fd,对socket的任何操作都是对这个fd的操作(隐隐包含着一种分层与抽象的思想)。 二:同步异步、阻塞非阻塞同步与异步是一种通信机制,涉及到调用方和被调用方(针对应用程序与内核而言)。同步过程中,进程触发IO操作并等待(阻塞)或者轮询的(非阻塞)去查看IO操作是否完成;异步过程中,进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通...阅读全文

博文 2018-04-08 18:34:39 this_HD

Gogs - 基于 Go 语言的自助 Git 服务

Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务。Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X 以及 Windows。 在线演示 源码下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果【附源码】 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果【源码下载】 12款经典的白富美型 jQuery 图片轮播插件 本文链接:Gogs - 媲美 Gitlab,基于 Go 语言的自助 Git 服务...阅读全文

博文 2015-03-24 03:00:01 lhb25

Golang 网络爬虫框架gocolly/colly 四

Golang 网络爬虫框架gocolly/colly 四 爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、土豆、校内网、web版qq、网页邮箱等等也都爬过;那时候先用C#写demo,项目是C++的,所以还要转换成托管C++的代码。第一阶段的主要心得是cookie管理,比较难搞的cookie就借助于webbrowser控件。 第二阶段是13年左右,...阅读全文

博文 2018-01-10 16:30:03 majianguo

Go 实现的负载均衡服务器goproxy-server

goproxy是使用golang实现的一个基本的负载均衡服务器,支持缓存(使用redis);反向代理,目前支持6种模式: 随机分发; IP HASH两种模式; 轮询(Round Robin)法; 加权轮询(Weight Round Robin)法; Power of Two Choices (P2C)算法; 边界一致性哈希算法(Consistent Hashing with Bounded Loads)。 另外,对转发的请求有较大的控制度,可以控制代理特定的请求,屏蔽特定的请求,甚至可以重写特定的请求。 另外,有时候项目需要用到第三方的服务并对返回的数据进行自定义修改,调用第三方的API,利用proxy server可以很容易的控制第三方API返回的数据并进行自定义修改...阅读全文

开源项目 2018-07-02 13:30:01 网友

【北京-美餐】『Web 开发工程师( Go 语言)』 15-30 K

工作职责: 1. 熟悉 Linux 系统和运维工具使用,MySQL/PostgreSqL 数据库操作; 2. 熟悉 Docker 及相关生态工具优先; 3. 创造自动化工具,帮助工作伙伴提升运营效率; 4. DevOps 方向,负责公司项目基础平台服务开发运维; 5. 熟悉 AWS。 任职要求: 1. 统招大学本科及以上学历; 2. 包括且不限于:服务治理平台、应用基础框架、基础中间件、CI/CD 系统; 3. 基本功扎实,能够写清晰的代码,对代码质量有很高的追求; 4. 思路清晰,有很好的团队协作能力,乐于分享; 5. 爱折腾,对新技术充满好奇心; 6. 对良好代码风格具有强迫症。 优先条件: 1. 有 Go 开发经验优先; 2. 玩儿过以下语言中的至...阅读全文

istio1.0安装教程,快速入门

广告 | kubernetes各版本离线安装包 祝贺istio1.0发布, 在此献上教程一份 安装 安装k8s 强势插播广告 三步安装,不多说 安装helm, 推荐生产环境用helm安装,可以调参 release地址 如我使用的2.9.1版本 yum install -y socat # 这个不装会报错 [root@istiohost ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz [root@istiohost ~]# tar zxvf helm-v2.9.1-linux-amd64.tar.gz [root@istiohost ~]# cp linux-amd64...阅读全文

博文 2018-08-01 19:34:52 fanux

Go语言 Go的网络轮询及IO机制

创文章,转载请注明出处:服务器非业余研究-sunface 简介 这篇介绍了Go的运行时系统——网络I/O部分。 阻塞 Go语言中,所有的I/O都是阻塞的,因此我们在写Go系统的时候要秉持一个思想:不要写阻塞的interface和代码,然后通过goroutines和channels来处理并发,而不是用回调和futures。其中一个例子是“net/http"包中的http服务器,无论何时当http服务器接收一个连接,它都会创建一个新的goroutine处理来自这个连接的所有请求,这样我们就能写出很清晰的代码:先做什么,然后做什么。然而,不幸的是,操作系统提供的阻塞式I/O并不适合构建我们自己的阻塞式I/O接口(interface)。 在我之前有关Go运行时的文章中,其中一篇介绍了Go调度器如何处...阅读全文

博文 2015-06-17 23:01:53 abv123456789

【武汉】做贪吃蛇大作战的公司 武汉微派 急招golang服务器开发工程师

不知道微派是哪家公司,那你总知道贪吃蛇大作战、谁是卧底online、微派桌游助手吧,专注在游戏&社交两个领域;营收很好 ,数轮融资,比较低调。目前是B轮融资,巨人网络投资 公司简介: 公司16年的明星产品为贪吃蛇大作站和谁是卧底。贪吃蛇目前3亿多用户,16年77天在app store上霸榜,风靡全国,是现在休闲游戏的代表;谁是卧底也是一款十分经典的社交游戏。 1)贪吃蛇大作站,日活千万,于2016.8月-10月在app store免费榜连续70多天排名第一,是app store有史以来霸榜时间最长的APP。 目前用户3亿多,17年盈利8000W-1亿; 2)谁是卧底是top1的卧底游戏,多次进入app store免费榜单前30强,千万级用户,年收入千万; 因业务发展迅猛...阅读全文

【互联网早报】2017.10.27

## ??国内新闻?? 1. 孙正义: AI 将大量需求半导体,希望控制 90% 芯片市场; http://dwz.cn/6JmoUZ 2. 迎战天猫双11 菜鸟联合日日顺为大件物流提速; http://dwz.cn/6Jmed9 3. 价值8位数,weixin.com域名被腾讯成功仲裁; http://dwz.cn/6Jmf26 4. 中小学教育机构平行线教育完成8000万元A轮融资。 http://dwz.cn/6JmcyF ## ? 国际新闻? 1. LinkedIn 成立人工智能学院,内部孵化 AI 工程师; http://dwz.cn/6JmmF3 2. 知名游戏出版商Gameloft:WP,再见; http:/...阅读全文

【互联网早报】2017.11.20

## 国内新闻 1. 线上线下一哥终牵手,阿里巴巴224亿港元入股高鑫零售 http://www.iyiou.com/p/60281 2. 小米新总部正式落户武汉 总投资230亿 http://tech.sina.com.cn/mobile/n/n/2017-11-20/doc-ifynwnty5533829.shtml 3. 人脸识别公司云从科技完成B轮融资,总计获25亿元资金支持 http://www.iheima.com/zixun/2017/1120/166068.shtml 4. 捌捌玖玖智能获100万融资,资金用于产品升级 http://www.ebrun.com/20171117/255591.shtml 5. 四...阅读全文

golang实现权重轮询调度算法

package main import ( "fmt" "time" ) var slaveDns = map[int]map[string]interface{}{ 0: {"connectstring": "root@tcp(172.16.0.164:3306)/shiqu_tools?charset=utf8", "weight": 2}, 1: {"connectstring": "root@tcp(172.16.0.165:3306)/shiqu_tools?charset=utf8", "weight": 4}, 2: {"connectstring": "root@tcp(172.16.0.166:3306)/shiqu_tools?charset=utf8", "weight...阅读全文

博文 2017-09-04 16:00:03 zhangboyu

【互联网早报】2017.11.28

## 国内新闻 1.用游戏化教学实现“零成本”获客,「编玩边学」获数千万元Pre-A轮融资 http://36kr.com/p/5104910.html 2.21个月之后,聚美优品宣布撤回私有化,股价上涨13% http://www.donews.com/news/detail/3/2976627.html 3.十分到家获国美1.05亿投资 并达成战略合作 http://www.pintu360.com/a40418.html 4.支付宝推免押金出海 芝麻分700以上可境外免押租车 http://www.donews.com/news/detail/3/2976616.html 5.一嗨租车接到私有化要约 较上周收盘价溢...阅读全文

Golang - 调度剖析【第二部分】

回顾本系列的第一部分,重点讲述了操作系统调度器的各个方面,这些知识对于理解和分析 Go 调度器的语义是非常重要的。在本文中,我将从语义层面解析 Go 调度器是如何工作的,并重点介绍其高级特性。Go 调度器是一个非常复杂的系统,我们不会过分关注一些细节,而是侧重于剖析它的设计模型和工作方式。我们通过学习它的优点以便够做出更好的工程决策。 开始 当 Go 程序启动时,它会为主机上标识的每个虚拟核心提供一个逻辑处理器(P)。如果处理器每个物理核心可以提供多个硬件线程(超线程),那么每个硬件线程都将作为虚拟核心呈现给 Go 程序。为了更好地理解这一点,下面实验都基于如下配置的 MacBook Pro 的系统。 可以看到它是一个 4 核 8 线程的处理器。这将告诉 Go 程序有 8 个虚拟核心可用于并...阅读全文

【互联网早报】2017.11.09

## ??国内新闻?? 1. 小电成为腾讯全球伙伴大会独家共享充电服务商; http://dwz.cn/6OMUqO 2. 腾讯车联平台布局“AI in car”多家A股公司入围; http://dwz.cn/6OMPvi 3. 芝麻信用接入海外租车品牌「惠租车」,国外自驾游也可以衍生系列服务; http://dwz.cn/6ONbM9 4. 「木鸟短租」宣布完成 B + 轮融资,重点打造卫生、安全、服务有保障的四木房源。 http://dwz.cn/6ON3JC ## ? 国际新闻? 1. iOS 11.2 公测版推出个人转账功能 iPhone 6 以上设备可用; http://dwz.cn/6ONaEc 2. 谷歌首款真正无...阅读全文

【互联网早报】2017.12.07

## 国内新闻 1.定了!微信公众平台全面开放原创和留言功能 http://www.ebrun.com/20171206/258077.shtml 2.新零售解决方案提供商「企加云」完成A轮融资,阿里巴巴领投 http://36kr.com/p/5096162.html ## 国际新闻 1.比特币突破13000美元,加密货币市场估值超摩根大通 http://tech.sina.com.cn/i/2017-12-06/doc-ifypnyqi1262086.shtml 2.六家公司接洽万达旗下连锁影院AMC,有意投资或收购影院 http://36kr.com/p/5106705.html 3.App...阅读全文

深圳羚羊极速科技有限公司 招聘golang开发工程师

go语言开发工程师 岗位职责: 1. 负责分布式系统设计与实现 2. 负责云存储系统的维护和优化 任职要求: 1. 3年以上 Linux 操作系统下的 C/C++项目的开发经验 2. 有分布式存储开发、设计、架构经验,深刻理解分布式存储原理 3. 精通linux IO系统、网络系统,精通高性能系统者优先 4. 有RabbitMQ开发经验者优先 5. 有go语言开发经验者优先 6. 具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力 7. 有良好的团队合作能力,富有工作激情,善于沟通,热爱开发事业 工作地址 深圳市南山区软件产业基地后海大道2388号怡化金融科技大厦1301 联系电话: 0755-26651282 kelly.wa...阅读全文

平滑的基于权重的轮询算法

轮询算法是非常常用的一种调度/负载均衡的算法。依照百度百科上的解释: Round-Robin,轮询调度,通信中信道调度的一种策略,该调度策略使用户轮流使用共享资源,不会考虑瞬时信道条件。从相同数量无线资源(相同调度时间段)被分配给每条通信链路的角度讲,轮询调度可以被视为公平调度。然而,从提供相同服务质量给所有通信链路的角度而言,轮询调度是不公平的,此时,必须为带有较差信道条件的通信链路分配更多无线资源(更多时间)。此外,由于轮询调度在调度过程中不考虑瞬时信道条件,因此它将导致较低的整体系统性能,但与最大载干比调度相比,在各通信链路间具有更为均衡的服务质量。 更广泛的轮询调度应用在广度的服务调度上面,尤其在面向服务或者是面向微服务的架构中,比可以在很多知名的软件中看到它的身影,比如LVS、Ng...阅读全文

博文 2017-02-08 12:53:44 smallnest

Golang之实现一个负载均衡算法(随机,轮询)

代码记录 程序结构目录 --------程序包 package balance type Balancer interface { DoBalance([]*Instance, ...string) (*Instance, error) } balance.go package balance import ( "strconv" ) type Instance struct { host string port int } func NewInstance(host string, port int) *Instance { return &Instance{ host: host, port: port, } } //定义Instance结构体的方法GetHost() func (p *...阅读全文

golang grpc 负载均衡

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问。 grpc 在客户端提供了负载均衡的实现,并提供了服务地址解析和更新的接口(默认提供了 DNS 域名解析的支持),方便不同服务的集成 使用示例 conn, err := grpc.Dial( "", grpc.WithInsecure(), // 负载均衡,使用 consul 作服务发现 grpc.WithBalancer(grpc.RoundRobin(grpclb.NewConsulResolver( "127.0.0.1:8500", "grpc.health.v1.add", ))), ) 创建连接的时候可以使...阅读全文

博文 2018-07-11 03:35:42 xjtuhit

golang grpc 负载均衡

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问 grpc 在客户端提供了负载均衡的实现,并提供了服务地址解析和更新的接口(默认提供了 DNS 域名解析的支持),方便不同服务的集成 使用示例 conn, err := grpc.Dial( "", grpc.WithInsecure(), // 负载均衡,使用 consul 作服务发现 grpc.WithBalancer(grpc.RoundRobin(grpclb.NewConsulResolver( "127.0.0.1:8500", "grpc.health.v1.add", ))), ) 创建连接的时候可以使用...阅读全文

博文 2018-06-24 05:34:43 hatlonely

Go调用SDL2的C语言动态库

# Go调用SDL2的C语言动态库 在网上找到go的GUI项目基本都需要安装额外软件库,尝试了一下使用go调用dll库的,有所收获,抛砖引玉,留个记录怕以后忘了。 ## 1.目录结构 ``` └─libtest │ main.go │ sdl.go └─ lib SDL2.dll ``` ## 2. 库函数封装(sdl.go) ``` package main import ( "syscall" "unsafe" ) //SDL_INIT_Flag 初始化标志 const ( SDL_INIT_TIMER = 0x00000001 SDL_INIT_AUDIO = 0x00000010 SDL_INIT_VIDEO = 0x00000020 /**< SDL_INIT_VIDEO impl...阅读全文

博文 2019-06-01 17:31:33 weiwg521

go-channel-goroutine实践2

需求:获取数组数据,对数据的原始数据逐个进行处理,后返回处理完的数据 目标:对列表数据进行逐个goroutine并发处理,再用select整合,返回数据 type money_per struct{ id int name string money float64 } type MoneyHandler interface { BatchDeal(m money_per) } type MoneyHandlerImpl struct { } func getMoneyHandler() MoneyHandler { return &MoneyHandlerImpl{} } var moneyPers = make([]money_per, 10) var mchan = make(chan ...阅读全文

博文 2016-10-17 03:00:03 niyuelin1990

济南Gopher看过来

[拉勾链接](https://www.lagou.com/jobs/1991966.html),薪资5k-10k 职位诱惑: 互联网产品 已经上线 用户量15万 职位描述: 1. 负责B/S后端业务逻辑的开发和优化; 1. 对负责的相应模块进行单元测试,并编写相应技术文档; 1. 积极参与系统架构和核心组件的设计并对用到的技术、算法和产品功能提出意见和建议; 职位要求: 1. 两年以上B/S后端开发经验; 1. 1年以上Golang开发经验或2年以上PHP/Python/Java Web开发经验有意向转Golang者,有Golang实际项目开发经验者优先; 1. 有一年以上类Unix系统使用经验; 1. 具备良好的代码风格; 1. 熟练掌握MySQL...阅读全文

Channels in Go range and select

这是Channels in go的第二篇,这篇主要讲range and select ,第一篇可以打开这个链接https://xiequan.info/channels-in-go/。 接收Channle的数据的时候我们会遇到,什么时候需要停止等待数据。有更多数据,还是已经全部完成?我们是继续等待还是继续?一种方法就是不断的轮询和检查通道是否已经关闭,但是这种方法并不是特别有效。 Channels and range Go提供了range关键词,当它与Channel 一起使用的时候他会等待channel的关闭。 package main import ( "fmt" "time" "strconv" ) func makeCakeAndSend(cs chan string, count i...阅读全文

博文 2017-02-10 12:27:16 谢权

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

LVS负载均衡(LVS简介、三种工作模式、十种调度算法 一、LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都...阅读全文

博文 2019-01-09 22:34:42 Golang语言社区

golang grpc 负载均衡

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问 grpc 在客户端提供了负载均衡的实现,并提供了服务地址解析和更新的接口(默认提供了 DNS 域名解析的支持),方便不同服务的集成 使用示例 conn, err := grpc.Dial( "", grpc.WithInsecure(), // 负载均衡,使用 consul 作服务发现 grpc.WithBalancer(grpc.RoundRobin(grpclb.NewConsulResolver( "127.0.0.1:8500", "grpc.health.v1.add", ))), ) 创建连接的时候可以使用...阅读全文

博文 2018-06-24 03:34:45 hatlonely

深入浅出Rust Future Part-3

译自Rust futures: an uneducated, short and hopefully not boring tutorial - Part 3 - The reactor本文时间:2018-12-03,译者:motecshine, 简介:motecshine 欢迎向Rust中文社区投稿,投稿地址 ,好文将在以下地方直接展示 Rust中文社区首页 Rust中文社区Rust文章栏目 知乎专栏Rust语言 sf.gg专栏Rust语言 微博Rustlang-cn Intro 在这篇文章中我们将会讨论和阐释Reactor是如何工作的.在上篇文章中我们,我们频繁的使用Reactor来执行我们的Future,但是并没有阐述它是如何工作的。现在是时候阐明它了。 Reactor? Loop? ...阅读全文

博文 2018-12-05 08:34:47 krircc

长连接、短连接、长轮询、短轮询、WebSocket释疑

看到一篇不错的文章,特意转载过来,原文地址:长连接、短连接、长轮询、短轮询、WebSocket 一、短连接和长连接 短连接:每次Http请求都会建立Tcp连接,管理容易 长连接:只需要建立一次Tcp连接,以后Http请求重复使用同一个Tcp连接,管理难 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次挥手),等待在同域名下继续用这个通道传输数据;相反的就是短连接如果服务器没有告诉客户端超时时间也没关系,服务端可能主动发起四次挥手断开TCP连接,客户端能够知道该TCP连接已经无效;另外TCP还有心跳包来检测当前连接是否还活着,方法很多,避免浪费资源。 在长连接的应用场景下,...阅读全文

博文 2019-09-19 10:02:49 Corwien

Go语言实现本地脚本功能,带服务器功能

大家好,我是你们的老朋友彬哥,今天给大家贡献之前项目用到的本地脚本服务器,简单的说就是服务器实现win平台下的操作,包括注册表修改、启动本地exe等 部分代码 如下: package main import ( "encoding/base64" "encoding/json" "flag" "fmt" "glog-master" "golangltd/go-concurrentMap-master" "io" "io/ioutil" "net/http" "os" "os/exec" "strconv" "strings" "time" ) //dim fso,file,read,string_arr(),count,string_finally //Set shell = Wscript...阅读全文

博文 2018-12-28 13:34:44 Golang语言社区

Go之一步步学习RabbitMQ(一)

本文来自公众号“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/YDtJzDYn7EMeoupRFwrulg写在前面的话:最近笔者在学习RabbitMQ,便尝试着通过下面的学习过程,来尽量还原RabbitMQ为什么如此设计,以及它是如何解决这些问题的。当中如有不对或者理解偏差的地方,还请大家不吝赐教,多多留言。如果你觉得这篇文章真的帮到了你,还请你顺手转发下。背景知识:在学习RabbitMQ之前,我们需要对下面的知识有些概念,生产者(producer):产生并发送消息的程序。队列(queue):存在RabbitMQ中的邮筒,虽然消息是在应用程序和RabbitMQ中进行传递,但队列才是唯一能够存储消息的地方。队列的大小取决于宿主机器的内存和磁盘容量,它本质上是一个...阅读全文

博文 2019-11-04 08:47:02 ZhDavis

使用 Go 添加 Nginx 代理

简介 反向代理 负载均衡 轮询 加权轮询 最少连接 iphash 通用 hash 总结 当前部分的代码 简介 Nginx 是一个高性能的 HTTP 服务器和反向代理服务器. 最常用的两个功能是反向代理和负载均衡. 反向代理 反向代理是正向代理的反面. 普通的代理服务器是需要用户主动去设置的, 用户在自己的电脑上设置并连接代理服务器,从而可以隐藏自己的 IP, 使得应用服务器不知道客户端的 IP 地址. 而反向代理是作为应用服务器的代理, 安装在服务器上. 客户端实际上访问的反向代理服务器,反向代理服务器再去访问实际的应用服务器, 然后将获取到的响应传送给客户端. 使用 Nginx 配置反向代理非常简单, 基础配置如下: upstream web { server 127.0.0.1:8081...阅读全文

博文 2019-11-05 09:02:39 帅气猫咪

兄弟连区块链培训分享Go语言-写并发注意事项

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。写go语言并发需要注意的几点:1. golang 1.2版本 goroutine的runtime.GOMAXPROCS 如果没有被定义,默认是1,从1.5之后改为默认是runtime.CpuNum(),go底层其实是并发GOMAXP...阅读全文

博文 2018-08-21 15:35:16 兄弟连区块链培训

一种基于AliOS Things的uData感知设备软件框架

摘要:   uData框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架。 **点此查看原文**:http://click.aliyun.com/m/40592/ **uData诞生背景**   uData框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架。uData的主要目的是为了解决IoT端侧设备传感器开发的周期长、应用算法缺少和无云端数据一体化等痛点问题。 **uData概要介绍**   uData设计之初是遵循分层解耦...阅读全文