经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
 Go语言

微服务过载保护原理与实战

在微服务中由于服务间相互依赖很容易出现连锁故障,连锁故障可能是由于整个服务链路中的某一个服务出现故障,进而导致系统的其他部分也出现故障。例如某个服务的某个实例由于过载出现故障,导致其他实例负载升高,从而导致这些实例像多米诺骨牌一样一个个全部出现故障,这种连锁故障就是所谓的雪崩现象 比如...[2020/12/21]

我用go-zero开发了第一个线上项目

我用go-zero开发了第一个线上项目

作者:结冰 前言 ? 说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己...[2020/12/21]

基于消息传递的并发模型:Actor和CSP的区别

An object oriented language is a language with good support for objects. A concurrency oriented language has good support for concurrency. --Joe ...[2020/12/21]

Goproxy.cn 核心代码探究;https://github.com/goproxy/goproxy 开源模块分析;

文章背景: 之前曾写过《GO语言环境探究与配置;1.14.5》一文;在文中,我提到了环境变量的GOPROXY的配置。国内,因为存在着防火墙的原因,很多国外的网站都需要特殊渠道访问。 然而,我们在go开发的时候,需要依赖国外很多服务来进行辅助开发,如各种开源的go模块。从GO1.11开...[2020/12/21]

我用 go-zero 一周实现了一个中台系统,已开源!

作者:Jack 最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚,还没有在项目中,真正的玩过,我看了一下官方提供的工具真的很好用,只需要定...[2020/12/21]

[GO]go redis实现滑动窗口限流-redis版

[GO]go redis实现滑动窗口限流-redis版

上一篇是单机当前进程的滑动窗口限流 , 这一个是使用go redis list结构实现的滑动窗口限流 , 原理都一样 , 但是支持分布式 原理可以参考上一篇介绍 func LimitFreqs(queueName string, count uint, timeWindow int...[2020/12/14]

Go微服务实践之增删改查

从此篇文章开始,我们来陆续介绍 go-zero 开发一个项目所需要的组件和开发实践。 首先我们从 model 层开始,来说说go-zero 的API以及封装细节。首先 model 层连接的API集中在core tores。我们先来看看操作 mysql 这类数据库,API方法我们来到...[2020/12/14]

[Go]字符串转int64数值型

一般想到的strconv.Atoi()转成的是int型的 下面这种是转成int64型的 strconv.ParseInt("111", 10, 64)   func ParseInt(s string, base int, bitSize int) (i int64...[2020/12/14]

[Go] 获取当前时间戳和时间戳单位转换

1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒 fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) fmt.Printf("时间戳(纳秒):%v;\n",time.Now().UnixNano()) fmt.Printf...[2020/12/14]

[Go] redis分布式锁的go-redis实现

在分布式的业务中 , 如果有的共享资源需要安全的被访问和处理 , 那就需要分布式锁 分布式锁的几个原则; 1.「锁的互斥性」:在分布式集群应用中,共享资源的锁在同一时间只能被一个对象获取。 2. 「可重入」:为了避免死锁,这把锁是可以重入的,并且可以设置超时。 3. 「高效的加锁...[2020/12/14]

最简单的Go Dockerfile编写姿势,没有之一!

1. Dockerfile一些额外注意点 选择最简单的镜像 比如alpine,整个镜像5M左右 设置镜像时区 RUN apk add --no-cache tzdata ENV TZ Asia/Shanghai 2. 多阶段构建 第一阶段构建否则构建出可执行文件,确...[2020/12/14]

手把手教你用notepad++搭建golang开发环境实战教程

Notepad++ 配置 Golang 开发环境 Notepad++小而轻便,对电脑配置要求低,下午详细讲述,如何用用notepad++搭建golang开发环境 注:本机安装都是win10,64位环境下进行的,网上看了很多文章,都讲解的很局限,步骤不详细,缺少截图及安装文件下载路径 ...[2020/12/14]

goland2020.1中文破解版 附安装教程免激活码

goland2020.1中文破解版 附安装教程免激活码

下载地址:http: www.ddooo.com oftdown/167216.htm#dltab 都2020了还在用2019版本的软件?小编今天为大家带来了jetbrains goland 2020.1,这是专为Go开发人员构建的跨平台 IDE 工具,拥有强大的内置工具可轻松帮助您运...[2020/12/14]

最简单的 K8S 部署文件编写姿势,没有之一!

1. 头疼编写K8S部署文件? K8S yaml 参数很多,需要边写边查? 保留回滚版本数怎么设? 如何探测启动成功,如何探活? 如何分配和限制资源? 如何设置时区?否则打印日志是GMT标准时间 如何暴露服务供其它服务调用? 如何根据CPU和内存使用率来配置水平伸缩? 首先,你需要知...[2020/12/14]

golang API开发过程的中的自动重启(基于gin框架)

概要 实现方式 补充 syscall.Exec 概要 基于 golang Gin 框架开发 web 服务时, 需要时不时的 go build , 然后重启服务查看运行结果. go build 的过程集成在编辑器中(emacs), 可以通过快捷键迅速完成, 但是每次重启服务都切...[2020/12/14]

[Go]GO实现滑动窗口限流算法-单机版

本代码基于原博客java版本的GO实现 , 原文解释也比较详细 , 这里也放上原文链接:https: www.cnblogs.com/dijia478/p/13807826.html 具体解释如下 , 代码在最下面 1.10秒内通过5次 , 这条线就是队列list,当第一个事件进来,...[2020/12/14]

Web基础_0x02_Go如何使得Web工作

Web基础_0x02_Go如何使得Web工作

前面介绍了如果通过Go搭建一个web服务,我们可以看到简单应用一个net/http包就方便的搭建起来了。那么Go在底层到底是怎么做的呢? Web工作方式的几个概念   以下均是服务器端的几个概念 Request:用户请求的信息,用来解析用户的请求信息,包括post,g...[2020/12/8]

[Go]Go语言实战-jwt-go会把存储的数值型转成float64

[Go]Go语言实战-jwt-go会把存储的数值型转成float64

在jwt-go里存储一个map[string]interface{} 比如 info["id"]=10 解析出来的时候 info["id"]断言的时候 , 应该用float64断言 , info["id"].(float64)  然后再去强转   Go语言提供...[2020/12/8]

[Go] GO语言实战-使用append函数要重新赋值

使用append函数的时候 , 要把扩展后的新slice重新赋值给原变量名 , 因为当底层数组的空间不足的时候 , 会扩充内存空间 ,内存空间会重新分配 通常我们并不知道append调用是否导致了内存的重新分配,因此我们也不能确认新的slice和原始的slice是否引用的是相同的底层数...[2020/12/8]

[Go] GO语言实战-slice的初始化影响转换成json后的数据结构

1. 切片slice的声明和初始化 , 如果只是单纯的声明 var list []string  , 那么list现在是nil  , 转换成json会变成null   2. 声明后使用了append函数增加了数据  , 那么就是正常的列表了&n...[2020/12/8]

go-zero 如何扛住流量冲击(二)

go-zero 如何扛住流量冲击(二)

本篇文章承接上一篇go-zero 如何扛住流量冲击(一)。 上一篇介绍的是 go-zero 中滑动窗口限流,本篇介绍另外一个 tokenlimit ,令牌桶限流。 使用 const ( burst = 100 rate = 100 seconds = 5 ) sto...[2020/12/8]

合并2个数组为1个无重复元素的有序数组--Go对比Python

Go实现: 1 package main 2 3 import ( 4 "fmt" 5 "sort" 6 ) 7 8 func main() { 9 var a = []int{1, 6, 45, 2, 9, 15, 7} 10 ...[2020/12/8]

Go 大数据生态迎来重要产品 CDS

项目地址:https: github.com/tal-tech/cds ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它有着优异的性能,可以快速部署和运行。 不过要想使用ClickHouse搭建起数仓用于数据分析,一个重要的问题就是数据如何进...[2020/12/8]

通过Consul Raft库打造自己的分布式系统

  通用的CP系统有etcd和consul, 通用的对立面就是专用系统. 所以在某些场合是有这种需求的. 然而etcd embed的可用性极差, Windows上面跑会出现各种问题, 而且不能定制协议, 你必须得用etcd定义好的协议和客户端来和etcd集群通讯. 所以这时...[2020/12/8]

我的go练手项目--使用go实现“删除sql里面的注释和字符串”功能

我的go练手项目--使用go实现“删除sql里面的注释和字符串”功能

项目里面有一个需求,要对sql进行简单的语法分析 为了避免sql里面的字符串和注释对语法分析做干扰,我写了一个java函数,对sql进行修剪,删除里面字符串和注释,用空格代替 周末闲着没事,我用go重新实现了这个功能,感觉应该会有后来人可以用上 说明: sql里面的注释有两种单行...[2020/12/8]

密码学:一.异或加密

异或加密是密码学中一种简单的加密算法,常作为更为复杂的加密算法的组成部分。 原理 异或运算:首先异或表示当两个数用二进制表示,进行异或运算时,当前位的两个二进制不同则为1相同则为0。 A ⊕ 0 = A A ⊕ A = 0 A ⊕ B ⊕ B = A 文本的每个字符可以通过与...[2020/12/8]

Golang性能分析与优化

在公司的分享,去除了相关的敏感信息。 (完) 朋友们可以关注下我的公众号,获得最及时的更新: 原文链接:http: www.cnblogs.com/zhangya...[2020/12/8]

Go 数组合并去重和排序

博客原文链接:http: www.zhoubotong.site/post/15.html      Sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。 但是这四种排序方法是不公开的,它们只被用于sort包内部使用。所以在对数...[2020/12/8]

发现了一个关于 gin 1.3.0 框架的 bug

gin 1.3.0 框架 http 响应数据错乱问题排查 问题概述 客户端同时发起多个http请求,gin接受到请求后,其中一个接口响应内容为空,另外一个接口响应内容包含接口1,接口2的响应内容,导致响应数据错乱(偶现问题) 图1红框标注部分为正常请求响应 图1蓝框标注部分为异常请求响...[2020/12/8]

【Go语言学习笔记一】基础语法

Go学习笔记 Go语言基础语法 行分隔行 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾, 但是可以使用分号;结尾,如果当你将多个语句写在同一行时,则必须使用分号; 一、变量 1.1 变量的声明 功能:存储用户的数据 注意: 变量...[2020/12/8]

golang拾遗:嵌入类型

这里是golang拾遗系列的第三篇,前两篇可以点击此处链接跳转: golang拾遗:为什么我们需要泛型 golang拾遗:指针和接口 今天我们要讨论的是golang中的嵌入类型(embedding types),有时候也被叫做嵌入式字段(embedding fields)。 我们...[2020/12/8]

基于gRPC的注册发现与负载均衡的原理和实战

基于gRPC的注册发现与负载均衡的原理和实战

gRPC是一个现代的、高性能、开源的和语言无关的通用RPC框架,基于HTTP2协议设计,序列化使用PB(Protocol Buffer),PB是一种语言无关的高性能序列化框架,基于HTTP2+PB保证了的高性能。go-zero是一个开源的微服务框架,支持http和rpc协议,其中rpc底...[2020/12/8]

go-zero 如何扛住流量冲击(一)

go-zero 如何扛住流量冲击(一)

不管是在单体服务中还是在微服务中,开发者为前端提供的API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性。即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪。 go-zero 集成了开箱即用的 限...[2020/11/23]

没有真实串口设备时使用"虚拟串口驱动"调试你的串口代码

目录前言示例代码总结 前言 很多时候需要编写串口代码,但是又没有真实串口设备来调试代码。以及本身就是要操作2个串口的情况,可以使用“虚拟串口驱动”工具方便的调试代码。 使用方法就是点击添加端口,此时“COM1 <-> COM2”是一组,即对COM1写数据会让COM2读...[2020/11/23]

go-zero之web框架

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,其中rest是web框架模块,基于Go语言原生的http包进行构建,是一个轻量的,高性能的,功能完整的,简单易用的web框架 服务创建 go-zero中创建http服务非常简单,官方推荐使用goctl工具来生成。为了...[2020/11/23]

[Go] gin框架中增加pprof分析性能

gofly客服websocket部分存在groutine泄露 , 在每次连接ws的时候都开启了groutine , 但是没有关闭 pprof是go标准库自带的功能 , 引进去就能分析程序中的性能问题 , 在gin框架下可以使用第三方的"github.com/gin-contrib/pp...[2020/11/23]

[Go]GO语言实战-类型声明语句

先来看一下概念: 一个类型声明语句创建了一个新的类型名称,和现有类型具有相同的底层结构。 type 类型名字 底层类型 gin框架中的实例: type H map[string]interface{} 类型声明语句一般出现在包一级,因此如果新创建的类型名字的首字符大...[2020/11/23]

Go学习之mod的使用

一、Go mod 的使用 1、开启GO111MODULE Go mod 的三种开启模式(GO111MODULE): on:支持Go mod模式 off:不支持Go mod模式 auto (默认模式):如果代码在gopath下,则自动使用gopath模式;如果代码不...[2020/11/16]

端口重用

目录前言SO_REUSEADDR简介Python中的用法golang用法其他学习总结 前言 服务器重启进程时总会提示端口已经被绑定的报错,直到重试好几次才能重启成功。 这是因为端口尚未完全关闭的情况,这时如果不设置端口重用,则无法完成绑定,因为端口还处于被别的套接口绑定的状态之中...[2020/11/16]

Go安装OpenCV库(gocv)常见问题

gocv是OpenCV4在Go中的绑定,使用它可以在Go里做图像处理。  Windows安装官方介绍:https: gocv.io/getting-started/window 其中gocv库提供的win_build_opencv.cmd为安装过程命令: 下载openc...[2020/11/16]

Golang websocket 实现消息推送

服务端实现 package main import ( "encoding/json" "fmt" "log" "net/http" "golang.org/x/net/websocket" ) func add(ws *websocket.Conn) { msg :...[2020/11/16]

使用邮箱验证登录后台ssh,再也不怕被人攻击服务器了!

目录前言安装教程 前言 之前写过使用用户名密码,以及扫描二维码方式验证后台登录 h的文章:【点击跳转】。 但是这样还是不太保险,也存在被人利用的情况,因为别人破解你的后台你压根不知道。因此想到使用邮件验证码来提高验证服务器登录 h的安全性。 如果有人破解了你 h的用户名和密码,...[2020/11/16]

如何高效定义和验证restful请求的参数

go-zero针对文本的序列化和反序列化主要在三个地方使用 http api请求体的反序列化 http api返回体的序列化 配置文件的反序列化 完整示例可参照下面这篇文章: 快速构建高并发微服务 1. http api请求体的反序列化 在反序列化的过程中的针对请求数据的数据...[2020/11/9]

[GO] gin 框架gorm下使用logrus记录sql语句

使用gin gorm时 , 默认sql语句是打印在终端的 ,想要记录到文件中 , 可以使用logrus来记录到文件 先把logrus的一些配置做好 package tools import ( "fmt" "github.com/gin-gonic/gin" ...[2020/11/9]

企业级RPC框架zRPC

近期比较火的开源项目go-zero是一个集成了各种工程实践的包含了Web和RPC协议的功能完善的微服务框架,今天我们就一起来分析一下其中的RPC部分zRPC。 zRPC底层依赖gRPC,内置了服务注册、负载均衡、拦截器等模块,其中还包括自适应降载,自适应熔断,限流等微服务治理方案,是一...[2020/11/9]

[GO]解决request origin not allowed by Upgrader.CheckOrigin websocket跨域

在gin框架下使用websocket , 如果是跨域请求的时候会报这个错误 request origin not allowed by Upgrader.CheckOrigin   使用的websocket库是 "github.com/gorilla/webso...[2020/11/9]

如何让服务在流量暴增的情况下保持稳定输出

如何让服务在流量暴增的情况下保持稳定输出

服务自适应降载保护设计 设计目的 保证系统不被过量请求拖垮 在保证系统稳定的前提下,尽可能提供更高的吞吐量 设计考虑因素 如何衡量系统负载 是否处于虚机或容器内,需要读取cgroup相关负载 用1000m表示100%CPU,推荐使用800m表示系统高负载 尽可能小的Overhe...[2020/11/9]

如何利用go-zero在Go中快速实现JWT认证

关于JWT是什么,大家可以看看官网,一句话介绍下:是可以实现服务器无状态的鉴权认证方案,也是目前最流行的跨域认证解决方案。 要实现JWT认证,我们需要分成如下两个步骤 客户端获取JWT token。 服务器对客户端带来的JWT token认证。 1. 客户端获取JWT Token...[2020/11/9]

[Go] 类型断言和类型判断 if 和 type-switch两种形式

[Go] 类型断言和类型判断 if 和 type-switch两种形式

使用类型断言断定某个接口是否是指定的类型 if这种简化形式: if _,ok:=x.(T);ok{ } type-switch 类型判断形式 switch t := x.(type) { case int: fmt.Printf(1) case nil: f...[2020/11/9]

go语言reflect包最佳实践之struct操作(遍历、赋值与方法调用)

go语言reflect包最佳实践之struct操作(遍历、赋值与方法调用) 1. 反射基本概念 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序...[2020/11/9]

347
11
记录数:1098 页数:10/22首页上一页567891011121314下一页尾页
 友情链接:直通硅谷  点职佳  北美留学生论坛
加载更多

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号