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

使用go reflect实现一套简易的rpc框架

go jsonrpc 在实际项目中,我们经常会碰到服务之间交互的情况,如何方便的与远端服务进行交互,就是一个需要我们考虑的问题。 通常,我们可以采用restful的编程方式,各个服务提供相应的web接口,相互之间通过http方式进行调用。或者采用rpc方式,约定json格式进行数据交互。 在我们的项目中,服务端对用户客户端提供的是restful的接口方式,而在服务器内部,我们则采用rpc方式进行服务之间的交互。 go语言本来就提供了jsonrpc的支持,所以自然开始我们就直接使用jsonrpc。jsonrpc的使用非常简单,对于调用端来说,就如同一个函数调用,如下: args := &Args{7, 8} reply := new(Reply) err := client.Call("Ari...阅读全文

博文 2014-10-04 19:25:56 siddontang

Google 发布 gRPC 云微服务, - a HTTP/2 RPC

gRPC 是谷歌提供的一套 RPC 框架支持10种语言( C, C++, C#, Go,Java, Node.js, Objective-C, PHP, Python, Ruby)为手机应用提供后台云服务。 gRPC 语言是跨平台的RPC系统开发,并且在google内部的很多区域得到了应用其中包括云计算服务。并且提供公共的API gRPC 特点:低cpu开销,快速开发分布式系统(包括手机应用)和即时通讯等。 本人英语火候欠佳,只能简单概括一下 。文章摘自:http://www.infoq.com/news/2015/02/grpc 本人强烈推荐: http://www.infoq.co...阅读全文

博文 2015-03-01 03:00:01 summer-arvin

GO 编写的进程管理工具 Gosuv

Gosuv是一个进程管理工具,使用Go语言编写。受python-supervisor启发,学习了很多其中的功能和用法。 至于为什么要写一个go的进程管理工具,主要还是因为感觉python-supervisor不是很好用(毕竟我也用了这玩意好几年了,又爱又恨)。因此gosuv对其不易用的部分重点加强了下。 Web控制台部分做了重点加强,因为使用频率太高了。在网页上也可以直接添加先的应用,网页查看日志的部分也做了优化,查看起来没有这么费劲了。使用了websocket连接后端,状态一有变化,前台就能立刻看到变化。 命令行做了部分修改,通常来说reload是热加载的命令,可是python-supervisor的reload命令是重启后台主进程,用起来显然很不习惯,顺手改掉。 配置文件也被我全...阅读全文

Go 在 Windows 上用户图形界面 GUI 解决方案Go-WinGUI

Go 在服务端的优势不容置疑,但是在桌面应用上却没有好的 GUI 支持,本项目是 Go 语言在 Windows 上的用户图形界面 GUI 解决方案。 本项目可以不用对你的 Go 写的网站程序做任何修改,就可以实现本地化,使用 go+html+css+js 写 Windows 本地应用。 **原理介绍** 本项目原理是写了一个本地应用,使用 cef 谷歌浏览器内核框架嵌入到应用里面实现了一个“浏览器”,然后“浏览器”里面打开 go 网站,这样就实现了一个不依赖系统浏览器的独立 gui 本地应用程序。我们可以使用方便强大的 html+css+js 完成优美的应用界面,功能可以通过 RPC,ajax 调用后端 Go Web 服务实现...阅读全文

Golang 1.4 net/rpc server源码解析

上一篇文章我们讲了net/rpc中client部分的实现,我本机源码安装路径在/usr/local/go,这net/rpc(golang 1.4版本)涉及到的相关代码主要有: server.go 方法注册: 因为从client我们知道是复用的socket来实现并发调用rpc方法,我们先从方法注册来看源码部分: // Server对象大都是保存方法存根,保证对象互斥的 type Server struct { mu sync.RWMutex // protects the serviceMap serviceMap map[string]*service reqLock sync.Mutex // protects freeReq freeReq *Request respLock sync....阅读全文

博文 2015-03-23 14:54:19 毛, 剑

golang消息队列实现用什么比较好?

项目开始需要与其他语言开发的项目通信,http请求比较损耗性能,但短时间内不太可能要求其他平台改成rpc通信。所以打算先用消息队列实现,网上搜了一下,好像golang用redis作消息队列比较少。 请问大家,golang 开发的项目还有什么其他的消息队列吗?如果是用redis做消息队列,会有什么问题吗...阅读全文

在VSCode中成功安装Go相关插件问题:tools failed to install.

一、介绍 目的:本文将主要介绍在windows使用VSCode配置Go语言环境 软件:VSCode 二、安装出现的问题 完整信息如下 Installing 8 tools at D:\GoPath\bin go-outline go-symbols guru gorename dlv godef goreturns golint Installing golang.org/x/tools/cmd/guru FAILED Installing github.com/ramya-rao-a/go-outline FAILED Installing golang.org/x/tools/cmd/gorename FAILED Installing github.com/derekparker/de...阅读全文

博文 2018-07-23 00:30:00 OctoptusLian

分布式系统的架构思路

一、前言在计算机领域,当单机性能达到瓶颈时,有两种方式可以解决性能问题,一是堆硬件,进一步提升配置,二是分布式,水平扩展。当然,两者都是一样的烧钱。今天聊聊我所理解的分布式系统的架构思路。 二、分布式系统的两种方式平时接触到的分布式系统有很多种,比如分布式文件系统,分布式数据库,分布式WebService,分布式计算等等,面向的情景不同,但分布式的思路是否是一样的呢? 1.简单的例子假设我们有一台服务器,它可以承担1百万/秒的请求,这个请求可以的是通过http访问网页,通过tcp下载文件,jdbc执行sql,RPC调用接口…,现在我们有一条数据的请求是2百万/秒,很显然服务器hold不住了,会各种拒绝访问,甚至崩溃,宕机,怎么办呢。一台机器解决不了的问题,那就两台。所以我们加一台机器,每台承...阅读全文

博文 2018-04-13 16:09:36 chulung

grpc golang学习心得(1)----安装与测试

go语言小白,最近开始接触grpc,特此记录一下。 1.grpc安装 GRPC是一个高性能、开源、通用的RPC框架,面向移动和HTTP/2设计,是由谷歌发布的首款基于Protocol Buffers的RPC框架。 目前grpc提供C、JAVA、GO语言版本,其代码都托管于github上,分别是:grpc, grpc-java, grpc-go。其中C版本支持C,C++,Node.js,Python,Ruby,Objective-C,PHP 和 C#。 本文只介绍grpc-go的安装及使用。 1.1 检查go语言版本 $go version go version go1.6.3 linux/amd64 grpc要求go语言版本至少为1.5+,版本过低的请先更新go语言版本:Getting St...阅读全文

博文 2016-09-08 11:00:01 xylin821

Go语言的RPC介绍(含Protobuf-RPC)

标准库的RPC RPC是远程调用的简称, 简单的说就是要像调用本地函数一样调用服务器的函数. Go语言的标准库已经提供了RPC框架和不同的RPC实现. 下面是一个服务器的例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 type Echo int func (t *Echo) Hi(args string, reply *string) error { *reply = "echo:" + args return nil } func main() { rpc.Register(new(Echo)) rpc.HandleHTTP() l, e := net.Listen("tcp", ":1234") if e != nil { log.Fatal("...阅读全文

博文 2015-08-25 16:00:01 wkyb608

【滴滴出行】邀请Go大牛加入

滴滴出行诚邀有技术、有热血的golang大牛加入~ 坐标西二旗 有意者请将简历发送至 wangweiyu@didichuxing.com 职位要求 1. 熟练掌握C、C++、java、python等语言,熟悉golang将是很大的加分项,我们未来的开发将以golang为主; 2. 有丰富的工作经验,能够独立主导要求对自己做的项目有自己深入的理解,并能持续的关注和优化自己做的项目,研究过优秀开源软件的源码并有心得者优先; 3. 精通 MySQL 应用开发,熟悉数据库原理和常用性能优化技术,以及 NoSQL原理、使用场景以及限制; 4. 熟悉常用的互联网技术,包括但不限于RPC、MQ、缓存技术、调用策略等; 5. 参与过大型复杂分布式互联网系统的设计、架构者优先...阅读全文

golang http日志跟踪 根据协程ID

最近接手一份代码,是使用golang revel web框架,不停的有运营,测试来骚扰,新手必须要老实,有问必答,来一个我就去日志文查看一下,“尼玛,不停的刷屏,怎么看,大概什么时间,给个订单号呗”,这是我做的最多的事情。实在是看的心累,日志记录内容太少,关键字太少,并发请求太多,分不清是不是一个请求的。程序员得用程序解放劳动力,怎么能浪费在看日志的时间上。有了需求点,那么对日志的记录就得规范。总结几个记日志的关键点。1. 入口打印请求参数,出口打印返回值。--便于和前后端扯皮,什么参数传错了,没返回等等2.日志关键字明确,时间,级别,行号函数名。--便于grep 各种搜索,随时定位代码3.一个请求有一个唯一请求ID ,一路追踪,无论多少次rpc,或者函数调用1.2 这两个问题很好解决,第3...阅读全文

博文 2017-05-09 09:50:38 cout_helloworld

GoLang之网络

GoLang之网络 Go语言标准库里提供的net包,支持基于IP层、TCP/UDP层及更高层面(如HTTP、FTP、SMTP)的网络操作,其中用于IP层的称为Raw Socket。 net包的Dial()函数用于创建网络连接,函数原型如下: func Dial(net, addr string) (Conn, error) 其中net参数是网络协议的名字,addr参数是IP地址或域名;如果连接成功,返回连接对象,否则返回error。 目前,Dial()函数支持如下几种网络协议:"tcp"、"udp"、"ip"、"ip6"等,例如: conn, err := net.Dial("tcp", "192.168.0.10:2100") // TCP连接 conn, err := net.Dial(...阅读全文

博文 2015-05-16 03:00:15 chenny7

在 Go 1.11 下调试延迟问题

诊断和调试复杂系统是一件复杂的事。经常需要多个层次的诊断数据来弄清楚延迟问题可能的原因。 一个分布式系统由多个服务器组成,这些服务器互相依赖,共同完成对用户请求的服务。在任何时候, - 系统中的一个进程可能会处理大量的请求。 - 在高并发的服务器中,没有容易的途径能将一个请求生命周期内的各个事件分离出来。 - 在高并发的服务器中,对于响应一个请求所发生的事件,我们没有很好的可见性。 随着 Go 在近些年来变成编写服务器的一门流行语言,我们意识到理解 Go 进程在一个请求的生命周期内发生了什么事的必要性。 在程序执行过程中会发生许多运行时活动:调度、内存分配、垃圾回收等等。但是要将用户代码与运行时事件关联起来,并帮助用户分析运行时事件如何影响他们的性能,这在过去是不可能的。 网站可靠工程师(S...阅读全文

博文 2018-05-27 22:22:43 krystollia

技术分享 《分布式一致性raft算法实现原理》

这段时间跟同事聊了不少分布式系统中的常用算法协议,中间有聊到分布式一致性的话题,当然我们对一致性理解都是那种介绍的层次。 哈哈 , 后来用了心思去学习分布式一致性协议 raft, 现在有些心得,就拿出来给同事分享下。 先简单聊下什么是raft协议. 他用来做什么的? 分布式存储系统通常会维护多个副本,这样不仅能提高系统的可用性,因为有多个副本所以性能也有提高。但是多副本带来的代价就是分布式存储系统的核心问题之一: 需要维护多个副本的数据一致性。 Raft一致性协议就是用来干这事的,即使在部分副本宕机的情况下,只要符合raft的原则,照样可以对外提供服务。 Raft是一种较容易理解的一致性协议。 我曾经也写过工夫去学习paxos, 结果…. 我想大家都懂的,没搞明白。 学习paxos的过程是有...阅读全文

博文 2017-04-04 19:32:07 rfyiamcool

Go语言中的RPC调用

首先,说一下目录结构: 一、HttpRPC 1、建立服务文件 /*Go RPC的函数只有符合下面的条件才能被远程访问,不然会被忽略,详细的要求如下: 函数必须是导出的(首字母大写) 必须有两个导出类型的参数, 第一个参数是接收的参数,第二个参数是返回给客户端的参数,第二个参数必须是指针类型的 函数还要有一个返回值error 举个例子,正确的RPC函数格式如下: func (t *T) MethodName(argType T1, replyType *T2) error */ package common import ( "errors" ) type Args struct { A, B float32 } type Result struct { Value float32 } typ...阅读全文

博文 2016-03-10 09:00:01 songxingzhu

RPCX: 一个用Go实现的类似Dubbo的分布式RPC框架

[RPCX](https://github.com/smallnest/rpcx) : 一个用Go实现的类似Dubbo的分布式RPC框架。 * 基于net/rpc,可以将net/rpc实现的RPC项目轻松的转换为分布式的RPC * 插件式设计,可以配置所需的插件,比如服务发现、日志、统计分析等 * 基于TCP长连接,只需很小的额外的消息头 * 支持多种编解码协议,如Gob、Json、MessagePack、gencode、ProtoBuf等 * 服务发现:服务发布、订阅、通知等,支持多种发现方式如ZooKeeper、Etcd等 * 高可用策略:失败重试(Failover)、快速失败(Failfast) * 负载均衡:支持随机请求、轮询、低并发优先、一致性 Hash等 * ...阅读全文

高性能异步RPC框架 kiss-rpc介绍和测试

kiss-rpc简介: 特性:模拟堆栈式调用方式,支持多值返回,调用简单安全, 服务器采用多线程异步模式,挖掘服务器性能。客户端支持多线程同步和异步模式,超时机制,linux下支持 epoll网络模型,类比grpc,thrift,dubbo快几倍甚至 几十倍。 环境: linux, unix, windows, macOS 传输协议:capnproto 开发语言:dlang 编译器: dmd github:https://github.com/huntlabs/kiss-rpc 开发者笔记:开发笔记 kiss rpc 同步和异步测试: 环境:ubuntu 16.04 lts(64位) 硬件:xeon cpu e3-1230@3.3GHz x 8 内存:8G 网络:localhost(本地环回...阅读全文

博文 2017-06-08 03:06:53 jasonsalex

分布式游戏服务器引擎GoWorld

**GoWorld是一个使用Golang实现的可扩展的分布式游戏服务器引擎,并支持游戏逻辑的热更新。** ![image](http://goworldgs.com/static/goworld_arch.png) GoWorld架构图 一个GoWorld系统包括一个dispatcher进程、一个或者多个game进程以及一个或者多个gate进程。dispatcher负责game之间以及gate和game之间的消息转发,并对一些基础功能提供支持。Game进程负责Entity对象的管理和所有游戏逻辑的运行,Gate进程负责管理客户端连接,并将客户端请求通过dispatcher转发到game进程。Gate还需要负责对客户端数据进行压缩和加解密(尚未实现)。GoWorld可以通过增加更多的...阅读全文

开源项目 2017-07-29 01:00:04 网友

gopush-cluster 架构

前言 gopush-cluster是一套golang开发的实时消息推送集群,主要分享一下开发这套系统的想法和思路。 架构 主要分为三个模块来开发,comet/web/message。 comet 主要负责消息排队、消息推送以及和客户端的连接维护;整套系统依据是消息ID顺序原则获取消息(客户端本地获取最大的消息是1,那么之后获取的消息就是大于1的,获取离线消息的时候也要从上次最大消息ID来获取),因此消息推送以后需要在comet中排队然后发起RPC给message实现存储。 message 主要负责消息的存储和读写;接受来自comet模块的消息进行持久化,或者接受web模块的读取消息请求获取离线消息。message是可以部署多个节点来负载来自大量comet的推送压力,比如不同的comet使用不...阅读全文

博文 2014-10-04 19:26:28 bhtfg538

golang grpc thrift with aerospike

面对着数百G的数据,数万的TPS,一直在找合适的数据库及RPC框架。最近对aerospike和google grpc、apache thrift进行了简单的测试。 测试的内容比较简单,就是客户端根据KEY到服务端进行查找,返回value。为了测试简单,数据库中只有一对key_value。数据库用的aerospike,RPC框架分别用grpc\thrift,客户端、服务端都用GO语言开发。 grpc定义如下: syntax = "proto3"; package inf; message AuthRq { string clientId = 1; string token = 2; } message AuthRp { string token = 1; } message DataTypeR...阅读全文

博文 2015-10-17 22:00:02 dazheng

小而美基于graphql的微服务基础框架

[基于graphql的小而美业务框架](https://github.com/microsvs/base) base是一个小而美的业务基础框架,它使用graphql作为api通信协议基础。然后提供了一些可以直接使用的后端存储服务。 ![tiny-base](https://gewuwei.oss-cn-shanghai.aliyuncs.com/tracelearning/base.png) ## 基础特性 1. 只支持graphql协议通信;提供了graphql-ui;UI即接口。并提供了一些与该协议进行数据转化的API列表; 2. 提供数据访问层DAL,使用`upper/db`库,该库支持:PostgreSQL, MySQL, SQLite, MSSQL, QL...阅读全文

如何实现支持数亿用户的长连消息系统 | Golang高并发案例

此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....360消息系统介绍360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机,甚至是智能硬件上的360产品的pu...阅读全文

博文 2015-10-24 11:38:56 周洋

golang高性能RPC:Apache Thrift安装使用完全攻略

在企业应用中RPC的使用可以说是十分的广泛,使用该技术可以方便的与各种程序交互而不用考虑其编写使用的语言。 如果你对RPC的概念还不太清楚,可以点击这里。 现今市面上已经有许多应用广泛的RPC框架,比如GRPC,而今天我们要介绍的是同样使用广泛的Apache Thrift。这篇文章将带你安全越过所有坑点,请放心食用。 Thrift简介 Thrift是Facebook的一个开源项目,后来进入Apache进行孵化。Thrift也是支持跨语言的,所以它有自己的一套IDL。目前它支持几乎所有主流的编程语言:C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OC...阅读全文

博文 2018-08-05 03:30:01 apocelipes

纯golang im即时通讯系统(支持分布式)

简介 纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 总分三层,github地址 https://github.com/Terry-Ye/im comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息 job(任务推送层)通过redsi 订阅发布功能进行推送到comet层。 时序图 以下Comet 层,Logic 层,Job层都可以灵活扩展机器 特性 分布式,可拓扑的架构 支持单个,房间推送 心跳支持(gorilla/websocket内置) 基于redis 做消息推送 轻量级 持续迭代... 部署...阅读全文

博文 2018-12-19 09:34:47 大呜

Qihoo 360 and Go

自:http://blog.golang.org/qihoo Qihoo 360 and Go This guest blog post was written by Yang Zhou, Software Engineer at Qihoo 360. Qihoo 360 is a major provider of Internet and mobile security products and services in China, and operates a major Android-based mobile distribution platform. At the end of June 2014, Qihoo had about 500 million monthly act...阅读全文

博文 2015-07-10 03:00:06 leonzhouwei

golang rpc的两种调用方法

golang的rpc有两种方法进行调用,一种是rpc例子中给的:package main import ( "net/rpc" "net/http" "log" "net" "time" ) type Args struct { A, B int } type Arith int func (t *Arith) Multiply(args *Args, reply *([]string)) error { *reply = append(*reply, "test") return nil } func main() { arith := new(Arith) rpc.Register(arith) rpc.HandleHTTP() l, e := net.Listen("tcp", ":1...阅读全文

博文 2014-10-04 19:26:03 yjf512

金融级分布式架构SOFAStack

SOFAStack™(Scalable Open Financial Architecture Stack)是一套用于快速构建金融级分布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。 **项目官网:[https://www.sofastack.tech](https://www.sofastack.tech/)** ![image](https://static.oschina.net/uploads/space/2019/0709/163750_2OA0_3820517.png) 特性包括: * 开放:技术栈全面开源共建、保存社区中立、兼容社区 兼容开源生态,组件可插拔, SOFAStack 组件与其它开源组件可相互集成或替换。 * 金融级:包含构建金融级云原生架构所...阅读全文

开源项目 2019-07-09 17:30:02 sofastack

奇虎360 和 go

This guest blog post was written by Yang Zhou, Software Engineer at Qihoo 360. Qihoo 360 is a major provider of Internet and mobile security products and services in China, and operates a major Android-based mobile distribution platform. At the end of June 2014, Qihoo had about 500 million monthly active PC Internet users and over 640 million mobil...阅读全文

博文 2015-07-09 15:00:01 尹绵绵, 肖邦也没谱, zypy333

gRPC

简介 gRPC是一个高性能、开源和通用的RPC框架,面向移动和HTTP/2设计。 目前提供C、Java和Go语言版本,分别是grpc、grpc-java、grpc-go。 gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。 这些特性使得其在移动设备上表现更好,更省电和节省空间占用。 gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统。 gRPC是什么 在gRPC里客户端应用可以像调用本地对象一样直接调用另一台不同机器上服务端应用的方法, 使得你能够更容易地创建分布式应用和服务。与许多RPC系统类似,gRPC也是基于以下理念: 定义一个服务,指定其能够被远程调用的方法(包括参数和返回类型)。 在服务端实现这个接口,并运...阅读全文

博文 2017-10-11 19:04:55 莫名FCJ

高性能跨语言 RPC Hprose

_Hprose_ 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写 —— 微服务首选引擎。 它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。 它提供了高效的序列化和反序列化库,并在此基础上提供了方便灵活的 RPC 引擎。 _Hprose_ 支持众多编程语言,例如: * AAuto Quicker * ActionScript * ASP * C++ * Dart * Delphi/Free Pascal * dotNE...阅读全文

开源项目 2012-12-26 16:00:00 andot

滴滴招golang开发工程师(长期有效)

职位描述: 1. 参与滴滴基础架构业务系统的设计、研发工作,提升滴滴产品稳定性; 2. 有良好的拆解需求,分析问题能力; 3. 进行相关产品的技术文档编写,方案设计; 4. 学习研究业界先进技术,保持技术进步。 任职要求: 1. 本科及以上学历,计算机相关专业,两年以上服务端研发经验; 2. 深入理解计算机原理,有扎实的数据结构和算法基础; 3. 深入理解linux系统及其原理,熟悉TCP/IP、HTTP协议以及网络编程; 4. 良好的编码和文档习惯,对代码美感的追求孜孜不倦,并能持续的关注和优化自己做的项目; 5. 精通Go/C/C++/Python等至少一门语言,有Go开发经验者优先; 6. 熟悉常用的互联网技术,包括但不限于MySQL,NoSQL,RPC、MQ...阅读全文

Git RPC 服务Gitaly

Gitaly是一个Git RPC服务,用于处理GitLab发出的所有git调用。目前Gitaly仍在发展。 我们期望它成为一个标准组件,并在2017年第三季度达到全覆盖。 **项目目标:** 制作大型GitLab实例的git数据存储层,特别是GitLab.com,速度快。 **这将通过关注两个领域(按此顺序)来实现:** 允许高效缓存 GitLab的Git数据层的弹性水平缩放 **由来:** 对于GitLab.com git访问很慢。 当查看Rugged :: Repository.new性能数据时,我们可以看到我们的P99峰值高达30壁秒,而CPU时间保持在15毫秒的范围内。 指向文件系统访问是罪魁祸首。 ![rugged.new timings](https://sta...阅读全文

开源项目 2017-03-06 18:01:11 网友

HTTP接口 Micro_SideCar

# Micro SideCar SideCar 提供了一个 集成应用程序到微型 生态系统 的HTTP接口 。 它类似于 Netflix 称为Prana 的SideCar。 ** 特性 ** * 登记 发现系统 * 主机 的 其他 服务发现 * 健康检查服务 * HTTP API 和负载平衡 要求 * 通过 PubSub的 的WebSockets ** 入门 ** **安装**

go get github.com/micro/micro
**运行** ...阅读全文

golang中使用消息名称创建protobuf消息

golang 中根据 protobuf message name 动态实例化 protobuf 消息,消息内容通过输入 json 文件指定 背景: 项目中使用 protobuf 作为 rpc 调用协议,计划用 golang 实现一个压测工具,希望能够指定 message name 和 json 动态的构建 protobuf 消息;从 json 解析到 golang protobuf message 可以用 jsonpb,这里使用 UnmarshalString,函数签名 func UnmarshalString(str string, pb proto.Message) error str 是 json 字符串,message 是自定义的 proto messgae 接口。于是剩下需要做的是...阅读全文

博文 2017-10-30 00:00:01 wertyd

图形 API 调试工具GAPID

GAPID 是一个工具合集,允许检查、调整和重复从应用程序到 Graphics 驱动之间的调用。 GAPID 采用 Go 语言编写,目前仍在开发中,但已经可以用于调试许多 Android OpenGL ES 和 Vulkan 应用。 GAPID 由以下子工具/组件构成: [`gapii`](https://github.com/google/gapid/blob/master/gapii):**Graphics API 拦截器**——****位于应用程序/游戏和 GPU 驱动程序之间的一层,记录所有调用和内存访问。 [`gapis`](https://github.com/google/gapid/blob/master/gapis):**Graphics API 服务器**——**...阅读全文

在go语言里使用thrift做远程通讯

一.准备和编写IDL thrift的介绍和安装见上文 thrift支持的数据类型 基本类型 bool: A boolean value (true or false) byte: An 8-bit signed integer i16: A 16-bit signed integer i32: A 32-bit signed integer i64: A 64-bit signed integer double: A 64-bit floating point number string: A text string encoded using UTF-8 encoding Struct 包含其他数据类型的结构体,与c语言的struct类同 Containers 容器 list set ma...阅读全文

博文 2014-10-04 19:26:21 ananclub

带入gRPC:gRPC Streaming, Client and Server

带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRPC 的流式,分为三种类型: Server-side streaming RPC:服务器端流式 RPC Client-side streaming RPC:客户端流式 RPC Bidirectional streaming RPC:双向流式 RPC 流 任何技术,因为有痛点,所以才有了存在的必要性。如果您想要了解 gRPC 的流式调用,请继续 图 gRPC Streaming 是基于 HTTP/2 的,后续章节再进行详细讲解 为什么不用 Simple RPC 流式为什么要存在呢,是 Simple ...阅读全文

博文 2018-09-24 22:34:39 煎鱼

Go语言的RPC介绍(含Protobuf-RPC)

本文在 Golang中国博客 的地址: http://blog.go-china.org/09-protorpc 标准库的RPC RPC是远程调用的简称, 简单的说就是要像调用本地函数一样调用服务器的函数. Go语言的标准库已经提供了RPC框架和不同的RPC实现. 下面是一个服务器的例子: type Echo int func (t *Echo) Hi(args string, reply *string) error { *reply = "echo:" + args return nil } func main() { rpc.Register(new(Echo)) rpc.HandleHTTP() l, e := net.Listen("tcp", ":1234") if e != n...阅读全文

博文 2015-06-16 08:50:36 chai2010

一个Go推送服务器集群:gopush-cluster

Terry-Mao/gopush-cluster 是一个支持集群的comet服务(支持websocket,和tcp协议)。 特性 轻量级高性能纯Golang实现支持消息过期支持离线消息存储支持单个以及多个私信推送支持单个Key多个订阅者(可限制订阅者最大人数)心跳支持(应用心跳和tcp keepalive)支持安全验证(未授权用户不能订阅)多协议支持(websocket,tcp)详细的统计信息可拓扑的架构(支持增加和删除comet节点,web节点,message节点)利用Zookeeper支持故障转移 安装(版本1.0.5) 一、安装依赖 $ yum -y install java-1.7.0-openjdk $ yum -y install gcc-c++ 二、搭建zookeeper 1....阅读全文

博文 2016-05-06 16:00:00 qq_19697705

怎样从头制作一个实时 pokemon go 地图?

Posted 3 months ago by Di Chen “Go catch em all! ” 本文作者Di Chen,原博客链接 How to create a pokemon map? 前言 在一个月前,Pokemon Go 成了新一轮现象级手游。基于 LBS (Location Based Service) 的设计给社交带来了更多可能。 从最早玩游戏的时候,我就不甘于受限于游戏的世界,探索各种 “作弊” 的方式。既然是基于位置的游戏,那么制作一个 “地图” 也成了顺其自然的想法。 这篇文章就记录了我从反向工程解构 Pokemon Go 架构,到建立一个实时 Pokemon 地图的过程。 成品: mypokemon.io 探索 对网络安全有一些了解的同学大概都知道,要 hack 某...阅读全文

博文 2016-11-16 05:00:01 u010963246

奇虎360 和 Go

在中国,奇虎 360 是一个互联网和手机安全产品及服务的主要供应商,截止到 2014 年 6 月,奇虎拥有 5 亿的 PC 活跃用户以及超过 6.4 亿移动用户。奇虎还运营着中国最受欢迎的网络浏览器和 PC 搜索引擎(原文如此)。 我的团队,推送服务团队(Push Service Team),为超过 50 个公司的产品提供服务(PC 和移动),包括成千上万放在我们的开放平台的应用程序。 我们对Go的青睐要从2012年第一次尝试为奇虎的一个产品提供推送功能开始。最初的nginx + lua + redis方案因为负载过大没能满足我们对实时性能的需求。在这种情况下,最新发布的1.0.3版Go引起了我们的注意,借助它提供的goroutine和channel特性,我们在几周之内开发完成了一个原型。我...阅读全文

博文 2015-09-08 15:00:00 ak619

GroupCache:Go 语言实现的 memcached

memcached作者Brad Fitzpatrick用Go语言重新实现了memcached,新的项目名称为groupcache,现已在Google多个生产环境中投入使用。对比老版本memcached,groupcache去掉了缓存有效期及缓存回收机制,随之而来的是通过自动备份来均衡负载。项目地址:https://github.com/golang/groupcache国内镜像地址:https://code.csdn.net/OS_Mirror/groupcache对比原始memcached首先,groupcache与memcached的相似之处:通过key分片,并且通过key来查询响应的peer。其次,groupcache与memcached的不同之处:不需要对服务器进行单独的设置,这将大...阅读全文

博文 2015-06-17 20:06:15 heiyeshuwu

golang rpc

rpc server端(golang版本): package main import ( "errors" "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) const ( URL = "127.0.0.1:5001" ) type Args struct { A, B int } type Arith int func (t *Arith) Add(args []Args, reply *int) error { for i := 0; i < len(args); i++ { *reply += args[i].A *reply += args[i].B } return nil } func main() { arith := new(Arith) r...阅读全文

博文 2015-10-26 18:00:11 webyh

rpc、sync.Pool学习

前段时间,因为rpc使用的conn阻塞,导致了一个非常意外的问题,静下心来学习了go的rpc包的代码。梳理了一下运行逻辑: 1. 客户端Client执行Call发出请求(内部为Call-》Go-》send)将请求向服务端打包。每次请求,都写入一个Request头,而具体业务则作为Body。 2. 服务端Server得到数据,先读取Request,并根据Request中的ServiceMethod属性,寻找之前注册的Service方法,并运行。 3. 得到的结果后,server调用call,将数据回传。数据写入之前,会根据Request对应给出Response来作为消息头。 在了解代码的过程中,发现server的代码或许是为了减少request、response头的内存GC,通过指...阅读全文

Go语言构建千万级在线的高并发消息推送系统实践(来自360公司)-推送开发/专项技术区

1、前言 Go语言的渗透率越来越高,同时大家对Go语言实战经验的关注度也越来越高。Go语言在高并发、通信交互复杂、重业务逻辑的分布式系统中非常适用,具有开发体验好、一定量级下服务稳定、性能满足需要等优势。 本文内容整理自奇虎360公司的周洋在 Gopher China 2015 大会上的分享(演讲PPT下载:《Go语言构建高并发消息推送系统实践PPT(来自奇虎360)[附件下载] 》),该次分享以360海量在线的消息推送系统为例,来探讨使用Go语言构建高并发消息推送系统时所遇到的问题以及总结出的各种实践技巧。 2、Go语言在基础服务开发领域的优势 Go语言在高并发、通信交互复杂、重业务逻辑的分布式系统中非常适用,具有开发体验好、一定量级下服务稳定、性能满足需要等优势。以360消息推送系统为例...阅读全文

博文 2017-12-13 11:16:33 即时通讯开发者社区!

Micro 一个用Go语言实现的微服务框架

https://micro.github.io/micro/ 概要 Micro的目标是提供一种用于微服务的开发和管理的工具包 特性 Feature Description Discovery Find running services Client Query services via RPC Server Listen and serve RPC requests Pub/Sub Publish and subscribe to events API Gateway Lightweight gateway/proxy. Convert http requests to rpc CLI Command line interface Sidecar Integrate any applicat...阅读全文

博文 2017-02-10 12:26:18 谢权

[golang note] 网络编程 - RPC编程

net包 • 官方文档 http://godoc.golangtc.com/pkg/net/ Package net provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets. net包中提供了一系列可移植的网络I/O接口,其中包含了TCP/IP、UDP、域名解析和Unix域套接字。 RPC • RPC定义 RPC,Remote Procedure Call Protocol,远程过程调用协议。RPC是一种通过网络从远程计算机程序上请求服务,但不需要了解底层网络技术的一种协议。RPC协议基于某些传输协议(如TCP和U...阅读全文

博文 2016-05-31 11:00:01 heartchord