技术分享 | kubernetes operator 简介

作者:沈亚军 爱可生研发团队成员,负责公司 DMP 产品的后端开发,爱好太广,三天三夜都说不完,低调低调... 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 k8s operator 介绍 k8s Operator 是一种用于特定应用的控制器,可扩展 Kubernetes API 的功能,来代表 k8s 用户创建、配置和管理复杂应用的实例,它基于基本 k8s 资源和控制器概念构建,但又涵盖了特定领域或应用的知识,用于实现其所管理的应用生命周期...阅读全文

简书 2021-07-08 03:32:42 爱可生开源社区

如何在容器debug?

前言 之前搬运了一个youtube视频,学习了一波大佬讲解的用vscode来debug容器的技巧,yyds! 视频链接:https://www.zhihu.com/zvideo/1384611505288044544 本篇来做个简单的记录,希望集成至少三篇以上的vscode debug技巧,包括并不限于: 编程语言debug 容器debug k8s debug 废话不多说,直接从第二篇开始,有空了更新其他的debug技巧! 准备 dockerfile和python脚本(PS:看看这发量,肯定值得...阅读全文

简书 2021-07-08 03:32:41 zhu733756

grpc 简单使用

参考:golang grpc 快速开始 以 windows 平台为例: 下载 安装 go —— 略 下载 protoc 参考:https://grpc.io/docs/protoc-installation/ win平台直接到 github 下载 zip 防盗本地目录解压即可 下载 地址 https://github.com/protocolbuffers/protobuf/releases 把 解压后的 bin 目录加到环境变量,以便控制台找到 protoc 命令 把这个bin 目录加到环境变...阅读全文

简书 2021-07-08 03:32:33 天空蓝雨

GRPC协议 Mock Server服务

PowerMock是一个Mock Server的实现,它同时支持HTTP与gRPC协议接口的Mock,并提供了灵活的插件功能。 这个工具面向于前后端、测试等对有接口Mock需求的开发人员,也可以作为一个通用的Mock服务,部署在网关架构或API管理平台中,实现降级、接口Mock等功能。功能作为一个Mock Server,PowerMock具有以下的核心功能:支持HTTP协议与gRPC协议接口的Mock。支持配置Javascript等脚本语言来动态生成响应。支持对一个接口配置多种响应,并按照条件进...阅读全文

简书 2021-07-08 03:32:32 秃头老码农

Go语言缓存穿透解题思路(singleflight)

缓存穿透: 指用户请求的资源在缓存(redis等缓存中间件)中未命中,按照正常的逻辑,未命中的数据会去持久层(mysql/pg等)去查询并获取返回。 但是一半持久层能承载的访问量非常有限(如果没有按照索引查找或需要很多字段时)。 当一个缓存未命中,用户体量足够大的情况下,一瞬间会有大量的请求直接打到持久层,导致超时甚至崩溃。 这就需要一个可行的方案来处理类似的突发情况,当然,超时控制也是必要的。如果出现超时需要及时返回,否则超时也会造成整条业务线阻塞崩溃。 超时需要考虑三大层级的超时,大家熟知的...阅读全文

简书 2021-07-08 03:32:31 Casso_W

使用 mix/vega + mix/db 进行现代化的原生 PHP 开发

最近几年在 javascript、golang 生态中游走,发现很多 npm、go mod 的优点。最近回过头开发 MixPHP V3 ,发现 composer 其实一直都是一个非常优秀的工具,但是 phper 们对 composer 的用法很多都不是很深入,今天我就采用 composer 手撸一个原生项目,帮助大家理解现代化的原生 PHP 开发流程。 PHP 的开发者可能是所有语言里被惯坏的最厉害的,因为几乎每个框架都提供了脚手架,像这样: composer create-project 这个...阅读全文

简书 2021-07-08 03:32:31 撸代码的乡下人

golang-chan block 内存OOM(线上问题)

1、定义一个没有buffer的chan,但是go routine里面可能出现两次write,导致此routine block,线上高并非压力之下,随着内存不断增加,最后OOM,代码示例如下:func main() { a := make(chan int) go getValueRoutine(a) b := <-a fmt.Println(b)}func getValueRoutine(a chan int) { if err!=nil{ a <- kongStr } a <- realStr...阅读全文

简书 2021-07-08 03:32:31 Awhipltz

Cento8安装Golang及配置

1.检查软件安装情况 rpm -qa|grep wget // 下载工具 rpm -qa|grep gcc // 编译工具 rpm -qa|grep tar // 解压工具2.下载Golang安装包 下载页面:Golang下载 选择Linux版本,并复制下载地址 进入/usr/local目录下,并下载压缩包 wget https://golang.google.cn/dl/go1.16.5.linux-amd64.tar.gz3.解压文件 在/usr/local目录下直接解压,解压完成后目录下会...阅读全文

简书 2021-07-08 03:32:31 ElvisChiu

Go go.mod详解

Go go.mod详解 SanfordZhu 2019-07-29 14:20:32 45358 收藏 103 分类专栏: Go 版权 什么是go.mod? Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 Go.mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括...阅读全文

Go语言中文网 2021-07-07 20:48:19 xiaojun1195

必须掌握的Golang23种设计模式之简单工厂模式

go 语言没有构造函数一说,所以一般会定义NewXXX函数来初始化相关类。NewXXX 函数返回接口时就是简单工厂模式,也就是说Golang的一般推荐做法就是简单工厂。在这个simplefactory包中只有API 接口和NewAPI函数为包外可见,封装了实现细节。查看全部设计模式:http://www.golang.ren/article/6477simple.go代码package simplefactoryimport "fmt"//API is interfacetype API int...阅读全文

简书 2021-07-07 14:32:31 bladeIII

必须掌握的Golang23种设计模式之工厂方法模式

工厂方法模式使用子类的方式延迟生成对象到子类中实现。Go中不存在继承 所以使用匿名组合来实现查看全部设计模式:http://www.golang.ren/article/6477factorymethod.gopackage factorymethod//Operator 是被封装的实际类接口type Operator interface { SetA(int) SetB(int) Result() int}//OperatorFactory 是工厂接口type OperatorFactory ...阅读全文

简书 2021-07-07 14:32:31 bladeIII

golang开发中包的使用

在golang中,所有源文件都属于一个包,golang的包具有以下特性: 包可以被其他包引用 每个golang程序只有一个main包 包的主要用途是提高代码的可复用性 本节,我们将介绍包的相关概念以及使用方法,如果你还没有阅读过前面的文章,可以通过以下链接进行阅读 怎样搭建golang开发环境 - 简书 (jianshu.com) 一. GOPATH 环境变量 1. 什么是GOPATH? golang包的使用依赖一个重要的环境变量:GOPATH,无论是自己的代码还是第三方代码,都以GOPATH作...阅读全文

简书 2021-07-07 14:32:31 极客开发者