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

go-kit 上手之example stringsvc3 通过代理实现分布式处理

使用的包 创建到特定地址代理服务器的client 定义使用了代理机制的新服务 根据用户输入的代理服务器地址生成对应的代理服务器中间件 main 运行结果 代理中间件 stringsvc3没有完全按照官网中stringsvc3的写法,而是在stringsvc2的基础上增加了proxy.go 主要就是给uppercase增加了代理中间件,主要步骤分三步: 1)向特定地址代理服务器发送请求的client的编码和解码函数。 2)生成向特定地址代理服务器发送请求的client。 3)用client配合load balancer构建代理服务器中间件。 使用的包 package main import ( "bytes" "context" "encoding/json" "errors" "fmt" "...阅读全文

博文 2017-12-13 10:01:02 KingEasternSun

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

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

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

容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛

摘要: 通过阿里云Kubernetes容器服务,开启你的数据服务之旅 (一)云上运维自建数据库之痛,使用容器服务自动恢复数据库postgresql实例 概述 本文为大家介绍一种容器化的数据服务 posgresql db on ACK,通过使用云盘自动挂载实现的块存储PVC来做到数据库的免运维恢复。 **容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛** **概述** 本文为大家介绍一种容器化的数据服务 posgresql db on ACK,通过使用云盘自动挂载实现的块存储PVC来做到数据库的免运维恢复。借助阿里云Kubernetes服务与阿里云存储资源的深度整合,打造数据库实例的免运维异地(ECS)恢复的不死神话。 **先...阅读全文

Golang 心跳的实现

自: https://blog.csdn.net/lengyuezuixue/article/details/79235850 在多客户端同时访问服务器的工作模式下,首先要保证服务器的运行正常。因此,Server和Client建立通讯后,确保连接的及时断开就非常重要。否则,多个客户端长时间占用着连接不关闭,是非常可怕的服务器资源浪费。会使得服务器可服务的客户端数量大幅度减少。 因此,针对短链接和长连接,根据业务的需求,配套不同的处理机制。 短连接 一般建立完连接,就立刻传输数据。传输完数据,连接就关闭。服务端根据需要,设定连接的时长。超过时间长度,就算客户端超时。立刻关闭连接。 长连接 建立连接后,传输数据,然后要保持连接,然后再次传输数据。直到连接关闭。 socket读写可以通过 SetD...阅读全文

博文 2019-05-05 03:31:34 Jailman

http协议

### 前言 #### 概述 * 什么是协议? 我们都知道协议是一种规范,是双方定义的一种规范,达到双方能够更好的交流。 * 什么是http协议 http是超文本传输协议(Hypertext Transfer Protocol ),是建立在TCP上的无状态连接,整个基本工作流程是客户端浏览器发起一个Http请求,客户端浏览器需要请求资源访问。服务端收到客户端浏览器请求后,服务端开始处理请求,根据请求作出对应的动作,处理服务器端的相关资源,最后将以Http响应的返回给客户端浏览器。 #### Http请求 http请求包含 请求行、请求头、请求体三部分。 ##### 请求行(Request Line) 请求行格式 方法+空格+URI+空格+版本+回车换行 例如: ```html GET /to...阅读全文

搭建基于Vim的Go IDE

第一步当然是安装Go的编译环境了:http://golang.org/doc/install.html 安装好之后复制官方支持的脚本:go/misc/src/vim下的文件到$VIMRUNTIME,也可以从这里获取最新版本:https://github.com/jnwhiteh/vim-golang 这样基本就能高亮语法和自动完成了,如果想要更多的自动完成功能,可以安装这个基于服务器和客户端的自动完成程序,据说速度很快: https://github.com/nsf/gocode 如果遇到错误需要打补丁:https://github.com/nsf/gocode/issues/6...阅读全文

博文 2015-06-17 20:12:40 richardsa

微服务指南走北(一):微服务是什么

微服务“Microservices”已经成为软件架构最流行的热词之一。网络上看到很多关于微服务的文章,但是感觉很多离我们还很遥远,并且没有找到多少真正在企业场景中应用的实例。此处省略一万字~~~~于是想要将自己最近一段时间使用微服务以及通过看大师们的文章的所思所想梳理出来,分享出来,以供大家参考(热切欢迎大家拍砖,头破血流最好)。 一、什么是微服务 记得刚看到微服务的时候,注意点在微字上,然后才是服务,初步理解为:将整块儿的服务拆分成多个类似工具类的微小web服务,供其他服务调用,每个服务应该是极其微小的,就像各个零件一样,各司其职,拼装成一个伟大的服务群 由于自己是技术出身,对理论并不是很重视,于是基于初期的理解,就向着“微服务”(这里要打引号,不然会被拍板砖)迈进。先是实现了微服务的多种...阅读全文

博文 2017-03-15 04:01:04 刘迎光

分享一个让我进入阿里中间件的个人项目

作者: vangoleo官网: http://www.vangoleo.com/iris-java/ 背景 时光荏苒,进入阿里中间件团队已经快两年时间了。这期间,有幸参与了第四届中间件性能挑战赛的题目组,筹备了以“Dubbo Mesh”为主题的初赛题;和团队一起开展了Dubbo线下meetup活动;将阿里多年双11积累的中间件基础设施最佳实践和方法论,通过阿里云的商业化产品,为广大开发者和企业提供服务。很庆幸能有这样一段难忘的经历。回想起来,能进入中间件团队,和我当初的一个Github项目还有关系。今天把该项目分享给大家。 Q: 什么是中间件团队?A: 阿里巴巴中间件技术部,是世界顶尖的Java技术团队之一,起源于淘宝平台架构组,是跟随着阿里电商业务和双十一成长起来的技术团队,解决复杂的业务...阅读全文

博文 2019-11-12 10:02:43 vangoleo

如何优雅的落地一个微型分布式架构

设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景):​图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowait变高、回源带...阅读全文

博文 2018-09-27 19:17:09 tuomaochengxuyuan

GO随笔-Web简读

Web简读 最近准备看《GO web编程》,想把所思所想写出来,以供参阅。 HTTP请求 关于HTTP的讲解太多,我只说些自己的理解。HTTP是一个请求、响应协议。客户端发起一个请求,服务端响应一个请求。在HTTP中,总是客户端建立一个连接,发起一个请求。服务端不能主动去与客户端联系,也不能给客户端发送一个回调连接。 HTTP请求包(客户端信息) Request请求包分为3部分。Request line(请求行)、Request header(请求头)、body(主体)。header和body之间有个空行。 GET /domains/example/ HTTP/1.1 //请求行: 请求方法 请求URI HTTP协议/协议版本 Host:www.iana.org //服务端的主机名 User...阅读全文

博文 2018-12-01 21:34:41 HammerMax

Go设计模式实例:简单工厂

> > 该系列文章将用简单的例子来介绍Go语言设计模式的实现。 -------- 简单工厂模式定义 -------- * 工厂模式提供创建具体实例的功能,使用者无需关心其具体实现。 ---- 适用场景 ---- * 避免客户端知道内部的具体实现,只有工厂才能接触实现细节。返回的实例可以是接口、具体类型等。 ---- 简单实例 ---- * 利用工厂模式求几何图形的边长和面积。 package main import ( "fmt" "math" ) type GeometryType int const ( GeometryRect GeometryType = iota GeometryCicle ) type Geometry interface { Area () float32 Pe...阅读全文

一个简单的 HTTP 服务器 (一) (go语言)

// http.go package main import ( "fmt" "log" "net/http" ) func main() { fmt.Println("Hello World!") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, this is http server! " + r.URL.String())) }) http.HandleFunc("/bye", sayBye) log.Println("Starting server ...") log.Fatal((http.ListenAndServe(":8888", nil))) ...阅读全文

博文 2017-04-23 13:00:41 痞子汤

Nebula Graph 的数据模型和系统架构设计

本篇主要介绍 Nebula Graph 的数据模型和系统架构设计。 有向属性图 DirectedPropertyGraph Nebula Graph 采用易理解的有向属性图来建模,也就是说,在逻辑上,图由两种图元素构成:顶点和边。 image.png 顶点 Vertex 在 Nebula Graph 中顶点由标签 tag 和对应 tag 的属性组构成, tag 代表顶点的类型,属性组代表 tag 拥有的一种或多种属性。一个顶点必须至少有一种类型,即标签,也可以有多种类型。每种标签有一组相对应的属性,我们称之为 schema 。 如上图所示,有两种 tag 顶点:player 和 team。player 的 schema 有三种属性 ID (vid),Name (sting)和 Age (in...阅读全文

Hyperledger Fabric 命令详解之 down

./bash.sh down a@ubuntu:~/hyfa/fabric-samples/first-network$ sudo ./byfn.sh down [sudo] password for a: Stopping with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds Continue? [Y/n] y proceeding ... 停止客户端 Stopping cli ... done 停止节点,peer和orderer Stopping peer0.org1.example.com ... done Stopping peer1.org1.example.com...阅读全文

博文 2018-08-06 11:34:51 kakushao

使用BSN一天学会区块链开发-golang篇

作者: 时跃堂,曹国波 《使用BSN 一天学会区块链开发》系列文章可以帮助具有一定开发经验的开发者,在不需要学习区块链开发语言的情况下,在区块链服务网络(BSN)上完成区块链应用的开发。本文主要介绍用户如何通过链下业务系统使用golang语言与链上数据进行交互而进行的相关操作流程说明,但在说明链下业务系统与链上进行数据交互之前,首先对用户如何在区块链服务门户注册、应用发布服务、应用服务参与以及应用管理进行一一说明。注册和登录打开区块链服务网络网址:www.bsnbase.com, 点击登录页面中的【内测申请】按钮进入内测申请页:根据页面中的提示填写内测申请信息并提交内测申请,内测申请用户分为 个人用户和 企业用户两种,申请人应根据自己的用户类型任选一种进行申请, 内测申请提交后需等待系统审核...阅读全文

博文 2019-12-11 16:34:46 wx5da979d83cf0a

Linux 入门手册 ——《鸟哥的 Linux 私房菜》

对 Linux 的了解一直停留在简单的 command line 层面,比如 ls 能列出所有当前文件夹下的文件和文件夹,但这个功能是怎么实现的?能不能自己定义命令来简化日常的工作?在安装完一个软件后,安装在里哪里?比如说安装完了 node, 为什么在终端能使用 npm 指令了?在/目录下有 /bin, /var, /etc, /home, /dev 等文件夹,这些文件夹都是做什么用的?为什么要按照这种方式划分?有很多类似于这一类的关于 Linux 操作系统的问题一直得不到解答,有时花了不少时间才能解决一个小问题,所以这段时间就将操作系统的学习提上了议程。 要比较全面的了解新的知识,最好的办法还是读书。因为入门的书籍更侧重的是广度,通常内容不会太难,但是基本能囊括需要了解的知识点,之后如果想...阅读全文

博文 2018-11-22 05:34:40 闭眼卖布

免费分享阿里云负载均衡入门与产品使用指南

课程介绍 负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。 课时列表 • 课时1:负载均衡产品创建与使用限制 • 课时2:负载均衡产品结构 • 课时3:负载均衡管管理控制台基本操作 • 课时4:负载均衡产品优势与定义 • 课时5:负载均衡管理控制台监控指标的介绍 • 课时6:负载均衡管理控制台修改配置监听 • 课时7:负载均衡应用场景与名称解释 • 课时8:负载均衡证书管理常见问题 开始学习http://click.aliyu...阅读全文

把服务端放在linux上,客户端放在windows上,但是windows连不上服务端

可以ping通,并且linux下telnet也是可以通信的,请问这是什么原因呢? 2017/07/19 11:10:11 an error!dial tcp 39.108.236.252:7778: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. exit status ...阅读全文

Golang对接Appsflyer

AppsFlyer:官方文档 我的代码: Appsflyer-go golang请求Appslfyer的接口 常量定义 const ( AppID = "com.your_appid" // 在AppsFlyer上的产品名称 AppsFlyerDevKey = "your_appsflyer_devkey" // AppsFlyer的devKey AppsFlyerUrlFormat = "https://api2.appsflyer.com/inappevent/%s" // Appslfyer事件的url AppsFlyerTimeFormat = "2006-01-02 15:04:05.000" // utc时间格式 ) Event,存储事件相关信息 type Event struc...阅读全文

博文 2019-06-04 21:32:38 GUIN蚂蚁

seelog源码阅读【笔记】

最近被后台日志弄的很烦,看到有个项目简简单单,又能满足需要,顺便试下看看效果,做下记录。只是记录下一部分内容,就不全部读了,关于源码可以去https://github.com/xmge/seelog。 结构设计 // websocket客户端 type client struct { id string socket *websocket.Conn send chan []byte } // 客户端管理 type clientManager struct { clients map[*client]bool broadcast chan []byte register chan *client unregister chan *client } WebSocket 是 HTML5 开始提供的...阅读全文

图片服务器那些处理方案。

现在傻梦兽的服务器架构如下 image.png 看到这里你们会发现一个问题就是,安流量计费。只有两台主机是有宽带,其余都是内网通信。 如果文字传输的话,流量并不算大,可以这么处理。可是图片过多的时候,如果有资本的企业选择肯定是七牛云之类的服务,因为这里服务包含了(分布式、CDN、还有负载等一系列的功能),可是这类服务如果一不小心的话,超出流量那就只能喊爸爸了。 那么我们一般的小企业是如何处理这一个问题的呢?比如我现在的再搞一台固定宽带的服务器做图片服务,然后在第一个代理服务器nginx服务器中配置如下 location ^~ /upload { proxy_pass http://192.168.1.15; proxy_set_header Host $host; proxy_set_hea...阅读全文

博文 2019-12-11 06:32:42 傻梦兽

第一个go语言的网络程序

//服务端 package main import ( "net" "os" ) func serve(s net.Conn) { var buf [1024]byte for { n, err := s.Read(&buf) if err != nil || n == 0 { break; } s.Write(buf[0:n]) } } func main() { l, e := net.Listen("tcp", ":12345") if e != nil { os.Exit(-1) } for { s, e := l.Accept() if e != nil { os.Exit(-1) } go serve(s) } } //客户端 package main import ( "net...阅读全文

博文 2015-06-17 23:02:39 dux003

NSQ的golang客户端简单使用

NSQ的golang客户端简单使用 NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。 获取客户端 nsq的golang客户端是官方版本的 go get github.com/nsqio/go-nsq 即可 简单的消费者和生产者使用 该客户端有原始的command函数用于一些基础操作,也有consumer和producer的封装,我这里是直接使用了封装了。 consumer 消费者比较简单,只要监听队列消息,并处理就可以了,下面是一个简单的例子。 type NSQHandler struct { } func (this *NSQHandler) HandleMessage(message *nsq.Message) ...阅读全文

博文 2016-09-05 08:00:08 sryan

GO随笔-表单输入

表单的处理 对于表单form都不陌生,GO是如何处理表单的呢?先写个例子:

用户名:<input type="text" name="username"> 密码:<input type="password" name="password"> <input type="submit" value="登陆">
文件命名为login.gtpl(与html无异)紧接着,需要有http服务 package main import ( "fmt" "html/template" "log" "n...阅读全文

博文 2018-12-01 21:34:42 HammerMax

golang包time用法详解

在我们编程过程中,经常会用到与时间相关的各种务需求,下面来介绍 golang 中有关时间的一些基本用法,我们从 time 的几种 type 来开始介绍。 时间可分为时间点与时间段,golang 也不例外,提供了以下两种基础类型 时间点(Time) 时间段(Duration) 除此之外 golang 也提供了以下类型,做一些特定的业务 时区(Location) Ticker Timer(定时器) 我们将按以上顺序来介绍 time 包的使用。 时间点(Time) 我们使用的所有与时间相关的业务都是基于点而延伸的,两点组成一个时间段,大多数应用也都是围绕这些点与面去做逻辑处理。 初始化 go 针对不同的参数类型提供了以下初始化的方式 // func Now() Time fmt.Println(t...阅读全文

博文 2019-04-23 04:34:39 佛心看世界

96元购买一年景安快云服务器

96元购买一年景安快云服务器 原价960元一年 刚好 阿里云的活动结束了 景安就接上来了 需要的朋友们可以参加 新用户才可以96元购买 1核CPU 2G内存 1M宽带 50G SSD硬盘服务器 活动链接:https://www.zzidc.com:443/main/huodong/onCloudBuy?groomid=eTGdimieXwM%3D 活动对象是个人实名认证的新用户 新用户:是指账户内没有任何有效订单的个人用...阅读全文

1.golang从零搭建游戏服务器框架 之 实现最简单的回显服务器

写在前面的话 首先,我是一个golang语言的初学者, 这里纯粹是学习笔记,以便以后返回来查找,防止遗忘。文章内容来源于 刘丹兵老师的教程, 大家可以直接去看老师的视频来进行学习。 需求分析 搭建一个最基础的服务器框架,实现客户端向服务器发送一条数据,服务器将该数据返回到客户端 根据需求,对服务器进行如下的设计 图片.png 编码实施 首先,先建立我们的目录结构 在自己golang环境的src目录下 新建文件下 zinx,这是我们游戏框架的名称(沿用了视频中的名称), 然后,在zinx目录下新建ziface目录和znet目录。在ziface目录下新建IServer.go文件,这里写我们的服务器接口。在znet目录下新建server.go文件,在这里写IServer接口的具体实现。 1.首先编...阅读全文

博文 2020-02-20 09:32:44 孟安乐Aaron

如何设计一个微型分布式架构?

序言(初衷)设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景): 图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowait...阅读全文

博文 2018-09-21 16:34:47 Java架构解析

一个简单的 HTTP 服务器 (四) (go语言)

// http.go package main import ( "log" "net/http" "os" "os/signal" "time" ) func main() { quit := make(chan os.Signal) signal.Notify(quit, os.Interrupt) server := &http.Server{ Addr: ":8888", WriteTimeout: 2 * time.Second, } mux := http.NewServeMux() mux.Handle("/", &myHandler{}) mux.HandleFunc("/bye", sayBye) server.Handler = mux go func() { <-qui...阅读全文

博文 2017-04-23 14:00:30 痞子汤

fmt.printf 为什么能输出整个缓冲数据?

> 我尝试使用 net 包的客户端接收服务端的数据。但是我发现 fmt.Printf 和 log.Printf 输出的完全不同。缓冲区我是故意设置为 2 的。我的假设传输的数据为: hello world 求大神指点!感激~ ``` buff := make([]byte, 2) for { count, err := this.conn.Read(buff) if err != nil { return } fmt.Printf("%s", buff[:count]) // hello world log.Printf("%s", buff[:count]) // he ll o wo rl d } ``` ...阅读全文

nginx初学入门

因为前几天加班比较多,人也比较累,不怎么想学习新的知识,周三加班到周四凌晨1点多,周四晚上直接到周五4点钟才睡,上午还要去上班,结果项目线上小问题不断,搞的身心俱疲,副能量爆满!!!周末就想着好好放松下,所以今天来点简单的!nginx,其实自己接触nginx也比较长时间了,上家公司项目使用nginx主要作为的是静态资源服务器,毕竟nginx的性能在业界也是有目共睹的,但是自己并没有怎么学习过nginx,只是懂的一点点配置。这次之所以想起再来看nginx是因为前段时间自己想在自己的服务器上搞一个jet brains的服务器,方便自己使用,其中就用nginx作为反向代理服务器使用,结果呢,搞了半天也没成功,也不知道是哪方面原因。所以自己准备再研究一下,不然以后经常找IDE的破解码也挺麻烦(壕们请...阅读全文

CA,给了数据库,给了机器,为啥也扩不了容?

随着业务越来越复杂,数据量越来越大,并发量越来越大,数据库的性能越来越低。好不容易找运维申请了两台机器,让DBA部署了几个实例,想把一些业务库拆分出来,却发现拆不出来,扩不了容,尴尬! 因为数据库强关联在一起,无法通过增加数据库实例扩容,就是一个耦合的典型案例。 场景还原有一个公共用户数据库DB_USER,里面table_user存放了通用的用户数据:table_user (uid, name, passwd, …) 在数据量比较小,并发量比较小,业务还没有这么复杂的时候,为了提高资源利用率(程序员才没有考虑什么资源利用率,更多的是图方便),业务A把用户个性化的数据也放在这个库里:table_A(uid, A业务的个性化属性) 业务A有一个需求,即要展现用户公共属性,又要展现业务A个性化属性...阅读全文

博文 2017-11-29 02:26:44 58沈剑

看了一定会收藏的海量数据实时在线分析Quick BI

课程介绍 Quick BI 专为云上用户量身打造的新一代智能BI服务平台,本课程主要介绍Quick BI的基础用法。 产品优势如下: • 无缝集成云上数据:支持多种数据源:RDS、ADS、MaxCompute;ECS自建Mysql、SqlServer;本地文件等。 • 快速搭建数据门户:拖拽式操作、强大的数据建模、丰富的可视化图表、快速搭建数据门户。 • 灵活嵌入第三方系统:仪表板可嵌入到自有系统,直接在自有系统访问报表, 并实现免登。 • 安全管控数据权限:内置组织成员管理,支持行级数据权限,满足同一份报表,不同人看不同的数据。 课程目标 • 学习阿里云Quick BI的用法 适合人群 • 大数据分析师 课时列表 ...阅读全文

记录一次windows server上,反向代理服务器的配置和使用

背景 我司的软件在一个客户处测试功能和性能,这个客户比较特殊: 他们客户端是很旧的java代码,且要求不能改动,客户端的主要业务简单说就是上传下载文件 他们提供了客户端demo,http请求是用裸socket手动加http头,写死了http1.1,但又不带'host'这个http header 客户要求中间必须经过一台windows server服务器代理 后端的实际服务器是linux系统,用的是nginx host header问题(此时先直连后端服务,不考虑代理) 最开始是请求直接返400,nginx access log可以看到400但是没有更多信息,error log则没有任何信息打印,一开始另一位同事负责定位,我跟着一起用wireshark抓包看了很久,没得出结论。后来我又看了一下...阅读全文

博文 2019-03-08 20:34:39 nifhlheimr

js 使用golang模板拼接HTML代码

#### *

js 使用golang模板拼接HTML代码* - 功能: post 从服务端获取一个json数据,直接拼接HTML 感觉太乱。希望用go 的HTML模板实现HTML标签和数据的拼接并显示到对应的位置。 - 存在问题:我理解的模板是在服务端返回HTML页面时起作用,现在需要发送post请求获得数据之后再使用模板,初始化页面时模板不执行。需要怎么做...阅读全文

博文 2018-12-12 11:46:40 specialgolanger

服务超时总结

介绍 超时 请求超时,客户端给服务端发送请求时超时,此时服务端没有收到客户端的请求; 服务端内部超时,服务端可能存在DB操作、IO操作、调用其他服务超时; 响应超时,服务端给客户端返回响应时超时,此时服务端已经处理了请求。 超时发生需要客户端和服务端如何处理呢? 客户端最常见方法: 重试(前提是服务端接口支持幂等),重试间隔梯度增大,重试次数阈值最大值 不重试直接去查询请求结果状态,根据结果确认是否请求成功,或者什么都不处理,直接认为失败不做进一步处理 具体接口场景具体对待 服务端: 服务端内部如果超时了,应该尽快给客户端返回,告诉客户端超时失败,这个主要是通过服务端内部超时控制来实现,例如:golang http.TimeoutHandler 幂等性 支持接口无限重试主要靠的就是幂等性,实...阅读全文

博文 2019-08-20 22:02:43 凯文不上班

【golang包管理】 GPROXY使用

&痛点: 使用 go get 命令 自动下载相应的包时,由于国内网络原因会出现各种 类似于 golang.org/x/... 的问题 &解决方案 使用 golang 的 go module 包管理工具(golang版本 >= 1.11),设置 goproxy 即可 &步骤 虽然下面的内容主要是讲解如何设置 GOPROXY,但是我们也推荐你在使用 Go 模块时将 GO111MODULE 设置为 on 而不是 auto。 Go 1.13 及以上(推荐) 打开你的终端并执行: $ go env -w GOPROXY=https://goproxy.cn,direct 完成。 macOS 或 Linux 打开你的终端并执行: $ export GOPROXY=https://goproxy.cn 或...阅读全文

博文 2019-11-03 12:33:13 aside section._1OhGeD

go get 获取被墙依赖包解决方法

##GOPROXY 环境变量 我们知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。 其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这无疑对我等无法科学上网的开发良民来说是最大的福音。 更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了: `go export GOPROXY=https://goproxy.io ` 也可以通过置空这个环境变量来关闭,export GOPROX...阅读全文

【请教】socket客户端conn.Write()发送的内容末尾加上\n就能得到server端回应,否则超时,请帮忙看看是客户端还是server端问题,先谢谢了

客户端建立连接: conn, err := net.DialTimeout("tcp", destIPPort, 3*time.Second) if err != nil { Log(LL_INFO, "tcp connect error bef process log file, please check it.") return err } defer func() { if nil != conn { conn.Close() } }() 客户端发送和接收: scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.T...阅读全文

云服务器 ECS弹性变配能力总览

摘要: 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,充分的助您降低 IT 成本,提升运维效率,使您更专注于自己核心业务创新。它的一个重要优势就是弹性计算,可以在数分钟内创建数千台的云服务器来应对您的业务压力,方便您根据自己的业务的需求从水平和垂直两个维度进行管理。 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,充分的助您降低 IT 成本,提升运维效率,使您更专注于自己核心业务创新。它的一个重要优势就是弹性计算,可以在数分钟内创建数千台的云服务器来应对您的业务压力,方便您根据自己的业务的需求从水平和垂直两个维度进行管理。 下面我们将着重介绍下目前云服务器的弹性能力,也许有您所不知道但是...阅读全文

webSocket原理探索

本文概述 Web Sockets的目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript创建了Web Socket之后,会有一个HTTP请求发送到浏览器以发起连接。在取得服务器响应后,建立的连接会将HTTP升级从HTTP协议交换为WebSocket协议。 由于WebSocket使用自定义的协议,所以URL模式也略有不同。未加密的连接不再是http://,而是ws://;加密的连接也不是https://,而是wss://。在使用WebSocket URL时,必须带着这个模式,因为将来还有可能支持其他的模式。 使用自定义协议而非HTTP协议的好处是,能够在客户端和服务器之间发送非常少量的数据,而不必担心HTTP那样字节级的开销。由于传递的数据包很小,所以WebSocket非常适...阅读全文

快速一键部署测试环境,降低环境配置风险

摘要: 环境部署是软件测试很重要的一个环节,但也是比较耗时间的环节,很多企业经常是项目立项后,开始邮件申请服务器资源,再三催促审批通过后,进行手工部署搭建环境,然后解决各种依赖和修改各种配置文件。如何有效减少环境部署流程,提升环境搭建效率,并且保证环境配置质量安全呢? 环境部署是软件测试很重要的一个环节,但也是比较耗时间的环节,很多企业经常是项目立项后,开始邮件申请服务器资源,再三催促审批通过后,进行手工部署搭建环境,然后解决各种依赖和修改各种配置文件。如何有效减少环境部署流程,提升环境搭建效率,并且保证环境配置质量安全呢?针对这些需求,新型一站式研发效能平台,云效的环境管理系统提供了解决方案。 首先,解决测试服务器资源管理的问题。 云效平台统一对测试服务器资源(包含:测试服务...阅读全文

Spring boot集成Go-FastDFS实现图片上传删除等功能

一.背景工作中接触到需要采集并管理大量图片的需求,本来是用的FastDFS,但是发现实际情况是在项目实施时难以找到linux服务器去安装FastDFS,所以经过调研,选择了可以在windows服务器上安装部署的Go-FastDFS文件服务器二.Go-FastDFS简介go-fastdfs是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。三.安装Go-FastDFS文件服务器1)下载地址:https://github.com/sjqzhang/go-fastdfs/releases2)下载完成直接启动fileserver.exe3)验证是否安装成功,访问localhost:80804)验证...阅读全文

用 Go 来了解一下 Redis 通讯协议

用 Go 来了解一下 Redis 通讯协议 原文地址:煎鱼的迷之传送门 Go、PHP、Java... 都有那么多包来支撑你使用 Redis,那你是否有想过 有了服务端,有了客户端,他们俩是怎样通讯,又是基于什么通讯协议做出交互的呢? 介绍 基于我们的目的,本文主要讲解和实践 Redis 的通讯协议 Redis 的客户端和服务端是通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 客户端和服务器发送的命令或数据一律以 \r\n(CRLF)结尾(这是一条约定) 协议 在 Redis 中分为请求和回复,而请求协议又分为新版和旧版,新版统一请求协议在 Redis 1.2 版本中引入,最终在 Redis 2.0 版本成为 Redis 服务器通信的标准方式 本文是基于新版协议来实现功能,...阅读全文

博文 2018-06-07 21:34:37 煎鱼

Golang语言社区 课程2018年11月19日 更新说明

Golang语言社区 课程2018年11月19日 更新说明 1 从零搭建游戏服务器-第二期: 第二十三节:服务器架构拆分说明 第二十四节:服务器网关说明及实现 第二十五节:服务器架构日志模块 https://study.163.com/course/introduction.htm?courseId=1005743022&share=2&shareId=400000000538037 社区福利: 彬哥笔记 --3 开始学习Go语言需要准备什...阅读全文

博文 2018-11-19 19:34:43 Golang语言社区