client-go 之 DeltaFIFO 实现原理

前文我们讲到 Reflector 中通过 ListAndWatch 获取到数据后传入到了本地的存储中,也就是 DeltaFIFO 中。从 DeltaFIFO 的名字可以看出它是一个 FIFO,也就是一个先进先出的队列,而 Delta 表示的是变化的资源对象存储,包含操作资源对象的类型和数据,Reflector 就是这个队列的生产者。Delta在了解 DeltaFIFO 之前我们需要先具体了解下什么是 Delta,我们先来看看 client-go 中是如何定义的,Delta 的数据结构定义位于st...阅读全文

51CTO博客 2021-01-07 16:10:56 mb5ff5930cde1cd

client-go 之 Reflector 源码分析

图片来源:https://unsplash.com/photos/mFl5WwGJnTs 前面我们说了 Informer 通过对 APIServer 的资源对象执行 List 和 Watch 操作,把获取到的数据存储在本地的缓存中,其中实现这个的核心功能就是 Reflector,我们可以称其为反射器,从名字我们可以看出来它的主要功能就是反射,就是将 Etcd 里面的数据反射到本地存储(DeltaFIFO)中。Reflector 首先通过 List 操作获取所有的资源对象数据,保存到本地存储,然后...阅读全文

51CTO博客 2021-01-07 16:04:30 mb5ff5930cde1cd

Openresty协程调度对比Go协程调度

在web编程领域,Openresty与Go均有十分优秀的处理能力,在面对高并发的web编程,两者一般都是首选的技术方案。这两者我也一直使用,而且两者均有协程,现总结下,留个备忘。Openresty及其工作流程基于Openresty 1.18版本将Lua集成到Nginx中,而Nginx,更是高性能HTTP服务器的代表。Nginx是多进程单线程:一个master进程和多个worker进程,处理请求的是worker进程。启动流程Openresty是在master进程创建时通过ngx_http_lua_...阅读全文

Segmentfault 2021-01-11 23:32:40 .container .car 等

百度网盘开放平台 Go SDK

# Pan Go Sdk 该代码库为百度网盘开放平台Go语言的SDK,详细请参考官方技术文档<https://pan.baidu.com/union/document/entrance> ## github地址 [https://github.com/jsyzchen/pan](https://github.com/jsyzchen/pan) 欢迎star&issue ## 下载 ### 使用Go mod 在您的项目中的`go.mod`文件内添加这行代码 ```bash ...阅读全文

Go语言中文网 2021-01-07 17:22:10 jsyzchen

Golang调度与MPG

本文转自:https://studygolang.com/articles/01855。原文图碎了,这里补充上图片。 我们都知道Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine。goroutine就是Go语言提供的一种用户态线程,当然这种用户态线程是跑在内核级线程之上的。当我们创建了很多的goroutine,并且它们都是跑在同一个内核线程之上的时候,就需要一个调度器来维护这些goroutine,确保所有的goroutine都使用cpu,并且是尽可能公平的使用cpu资源...阅读全文

简书 2021-01-07 14:33:12 WTIFS

Golang实现http server提供压缩文件下载功能

最近遇到了一个下载静态html报表的需求,需要以提供压缩包的形式完成下载功能,实现的过程中发现相关文档非常杂,故总结一下自己的实现。开发环境:系统环境:MacOS + Chrome框架:beego压缩功能:tar + gzip目标压缩文件:自带数据和全部包的静态html文件 首先先提一下http server文件下载的实现,其实就是在后端返回前端的数据包中,将数据头设置为下载文件的格式,这样前端收到返回的响应时,会直接触发下载功能(就像时平时我们在chrome中点击下载那样)数据头设置格式如下:...阅读全文

Segmentfault 2021-01-11 20:32:41 .container .car 等

金九银十:一年前端的字节三面面经

背景 最近裸辞也写了一篇金九银十:一年前端的面试分享,时隔多日,终于鼓起勇气复盘字节的面试,之所以把字节的面经单独写一遍出来,是因为面试大厂真的需要提前知道一些大厂面试经验,这次出现的问题还是在于缺少或者说没有大厂面试经验,所以借此单独总结出一遍,避免以后再重复犯这样的错误 过程 接下来我们尽可能详细的描述当时一二三面的面试场景,对于缺少大厂面试经验的同学做一个借鉴 面试周期 听别人说字节的面试效率挺高的,但是我遇到的情况却是不同,一二三面大概花了一个月左右,二面结束的时候我知道自己应该过了,然...阅读全文

简书 2021-01-07 05:32:46 落落落洛克

《go语言圣经》+《Mastering.GO-cn》+《go语言高级编程》PDF下载

公众号【爱吃橙子的搬砖小徐】开通啦,后续将会同步更新,欢迎订阅 回复【java面试】获得两套面试宝典 回复【golang】获得go语言学习三部曲 《go语言圣经》+《Mastering.GO-cn》+《go语言高级编程》 回复【数据结构】获得完整学习视频阅读全文

简书 2021-01-07 05:32:43 书生也爱羊

golang 1.16beta1尝鲜

golang 1.16beta1发布了,按照golang github(https://github.com/golang/go/milestones),应该在本年2月1日正式发布,不过个人感觉应该会跳票。 尝试用golang 1.16beta1编译了一下原来的一个简单的项目,生成的可执行文件比golang 1.15.6小了1.4M左右 docker run --rm -v "$PWD":/usr/src/myapp -v /Users/liangtianyu/work/golang/pkg/m...阅读全文

简书 2021-01-07 05:32:43 EasyNetCN

API网关(什么是API网关、如何设计统一网关?)

一、背景 1.什么是API网关 API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。 2.为什么需要API网关 RPC协议转成HTTP。 由于在内部开发中我们都是以RPC协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将RPC协议转换成HTTP协议。 请求路由 在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。 统一鉴权 对...阅读全文

简书 2021-01-07 05:32:43 架构小菜

GO语言字符串有哪些?详细分类

编程语言有很多,而每个编程语言都离不开字符串,那么你知道GO语言字符串有哪些吗?我们一起来看看吧。 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 。 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。可使用 []byte() 获取字节,使用 []rune()获取字符,可对中文进行转换。 定义字符串 第一种,双引号,用来创建可解析的字符串字面量 (支持转义,但不能用来引用多行); str := "Go语言字符串\n不能跨行...阅读全文

简书 2021-01-07 05:32:41 老男孩IT教育1

通过 Orange 框架快速搭建一个 Web 服务

Orange 框架是一款国人开发的 Web 开发框架,结构清晰,功能多样。同时它基于 Golang 语言开发,保证了程序的运行速度,能满足国内中小企业各类业务需求。无论是用来学习 Golang 还是进行业务开发,Orange 都是一款值得学习的框架工具。它有以下主要特性: 基于 golang 性能不凡; MVC 分层设计,逻辑清晰; 核心功能短小精悍,灵活度高; 丰富的工具包,有 图片验证码,本地缓存,发送邮件,http 请求客户端,日志 等常用工具包; 持续更新,框架应用再多个线上成熟项目,为...阅读全文

简书 2021-01-07 05:32:41 实验楼

2020年总结

生活 之前在成都的时候偶尔还会和同学一起出去转转,看个电影,抽空也会在KTV放飞一下自我,虽然唱得确实一般。成都的室友做得一手好菜,很会生活,隔三差五我们会在家里做点好吃的,有时也会找其他同学自驾游一波。 来深圳也有10个月左右了,除了前两个月会到周边走走,再之后就基本没怎么出过门了,社交,基本也没什么社交了。 学习 在公司主要负责量化部分的开发,零零散散地学到一些金融方面的知识,但不系统。了解了 k8s 的简单应用,不过 yaml 文件还是不会写。。同事离职后接手了几个用 FastAPI 写的...阅读全文

简书 2021-01-07 05:32:39 Ginta

Linux下安装Go环境

新建目录两个mkdir work 安装目录mkdir code 代码目录安装 下载工具yum -y install wget下载安装包进入 work 目录 输入 (下载列表 Go下载 - Go语言中文网 - Golang中文社区)wget https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz下载后解压到当前目录tar -C /work -zxvf go1.15.6.linux-amd64.tar.gz接下来设置环境变量 (安...阅读全文

Go语言中文网 2021-01-06 19:50:48 jwcode

iris.Django模板引擎的语法格式和语法标签使用方法,include标签传递变量方法

基础配置篇:博客模板的格式语法和后端如何传递数据到模板逻辑前面的章节中,我们选择了使用iris.Django作为我们前端使用的模板引擎,因此我们这里只介绍它的相关语法。在网络上,关于Django模板的标签和语法教程少之又少,并且很多都是不全面的,要么就是抄来抄去的无用文章,要么就是简单寥寥几个标签,很多时候,都不能满足使用。比如include引入模板后,如何传递变量、如何在页面声明一个临时变量等问题。为了解决网络上缺少介绍内容的问题,我特意翻读了iris.Django的源码,并将大部分常用到的标...阅读全文

Segmentfault 2021-01-11 09:32:33 .container .car 等

Go语言分布式系统配置管理实践--go archaius

【摘要】 https://github.com/go-chassis...,而微服务开发框架带来的其中一个课题就是:当单体应用向微服务转型后,有大量的配置需要管理,而你并不希望登录到远端机器去更改配置,并重启应用,尤其是现在已经是容器的时代了,也不希望因为一个配置的变更,而发布一个新的软件包。那么分布式系统中每个进程的动态配置管理及运行时热加载就成为了一个亟待解决的问题。引言https://github.com/go-chassis/ 微服务开发框架是一个微服务开发框架,而微服务开发框架带来的其...阅读全文

Segmentfault 2021-01-10 23:32:34 .container .car 等

go-ovn源码阅读思考

go-ovn源码阅读思考最近在学习ovn相关的内容,需要通过go-ovn库实现向ovn写入信息。go-ovn的源码实现大致实现功能简单梳理一下:go-ovn 代码的核心思想就是封装了libovsdb库,将rpc接口修改为了api接口,定义了marshal unmarshal的转换。而libovsdb则基于RFC7047协议实现了RPC接口的基本功能,包括双方通信的方法。底层思想:需要理解ovsdb manager protocol协议的内容,即协议中定义了操作的方法包括update、notify...阅读全文

Segmentfault 2021-01-10 22:32:33 .container .car 等