- 博客(278)
- 资源 (11)
- 收藏
- 关注

原创 client-go源码分析--Indexer, cache, threadSafeMap
前言本文主要聚焦client-go controller框架的Indexer对象,分析Indexer的实现。1 cache - indexer对象关系golang的struct和interface之间是弱耦合关系,即struct只需要实现了某个interface的所有方法,就认为该struct实现了该interface。cache和Store对象关系如下:从类的实现、组合关系上可见,...
2019-11-18 11:37:26
539

原创 golang结构体匿名字段的妙用
先看一段简单的代码:package mainimport ( "fmt")type A struct { B m int}type B struct { n int}func (b *B) my_print() { fmt.Printf("print B.n=%d\n", b.n)}func main() { a := &A{B{2}, 3}...
2019-01-22 16:18:31
4287
1
转载 K8S 性能优化 - K8S APIServer 调优
-watch-cache-sizes: 系统根据环境启发式的设定;用于 pods/nodes/endpoints 等核心资源,其他资源参考 default-watch-cache-size 的设定;--max-mutating-requests-inflight: 默认值 200;建议 800 或更高;--delete-collection-workers:默认值 1;--default-watch-cache-size:默认值 100;--max-requests-inflight: 默认值 400;
2023-07-07 11:14:41
148
转载 IDEA的debug调试技巧详解
debug调试也叫断点调试在程序的某一行打上断点,则在debug模式下运行到断点位置时会暂停,便于程序员观察代码的执行情况学会debug,有助于在程序运行未达到理想情况时,对程序的各个流程进行分析本文只详细描述了debug的一些基本的常用操作,如果有缺漏欢迎评论区留言~
2023-04-12 11:42:31
436
转载 MySQL的MVCC实现原理
MVCC全称是Multi-Version Concurrency Control(多版本并发控制),是一种并发控制的方法,通过维护一个数据的多个版本,减少读写操作的冲突。如果没有MVCC,想要实现同一条数据的并发读写,还要保证数据的安全性,就需要操作数据的时候加读锁和写锁,这样就降低了数据库的并发性能。有了MVCC,就相当于把同一份数据生成了多个版本,在操作的开始各生成一个快照,读写操作互不影响。无需加锁,也实现数据的安全性和事务的隔离性。事务的四大特性中隔离性就是基于MVCC实现的。
2023-03-27 16:53:13
227
转载 Mysql-详解脏读、不可重复读、幻读
Mysql有四种事务隔离级别,这四种隔离级别代表当存在多个事务并发冲突时,可能出现的脏读、不可重复读、幻读的问题。
2023-03-27 16:21:21
110
转载 MySQL-如何分库分表?一看就懂
分库分表方案是对关系型数据库数据存储和访问机制的一种补充。分库:将一个库的数据拆分到多个相同的库中,访问的时候访问一个库分表:把一个表的数据放到多个表中,操作对应的某个表就行。
2023-03-22 16:46:39
176
转载 阅读 Go 源码,你需要了解这几个编译器指示
编译器接受注释形式的指示。比如我们常见的//go:xxx的形式出现在方法前面上方。为了将其与非指示注释区分开,编译器指示要求在注释开头和指示名称之间不需要空格。但是由于它们是注释,故而不了解指示约定或特定指示的工具可以像其他注释一样跳过指示。以// line或/ * line开头的行指示行指示有如下几种形式:为了被识别为行指示,注释必须以// line或/ * line开头,后跟一个空格,并且必须至少包含一个冒号。
2023-02-08 10:21:39
159
转载 为高效 Ops 和 SRE 团队准备的 10 个开源 k8s 工具
日志查看器你可以基于标准的标签选择器匹配,通过名字,通过服务,通过部署,等等。除了拓扑视图,Weave Scope也提供了一个深入视图,比如节点和进程之间的任何事情,包括部署,服务,副本集,pods 和容器。Kube-ops-view为多个Kubernetes集群提供了一个通用的操作视图,对于SRE和Ops团队来说这是一个方便的工具,Kube-ops-view提供只读的系统仪表。它为你的应用自动的构建逻辑拓扑以及基础设施,以便你的SRE和Ops团队可以直观的明白,监控,控制你的容器,基于应用的微服务。
2023-01-31 16:26:57
387
转载 Go gcflags/ldflags 的说明
通常一起使用,用来减少可执行文件的体积。但删除了调试信息后,可执行文件将无法使用 gdb/dlv 调试。arg list 是空格分割的编译选项,如果编译选项中含有空格,可以使用引号包起来。调试,因为找不到代码的符号信息。go build 时可以使用。更多的模式的说明请参考。运行的进程,也无法用。
2023-01-16 19:54:38
1311
转载 Go 函数调用 ━ 栈和寄存器视角
Go 语言完全使用栈来传递参数和返回值并由调用者负责清栈,通过栈传递返回值使得Go函数能支持多返回值,调用者清栈则可以实现可变参数的函数.Go 使用值传递的模式传递参数,因此传递数组和结构体时,应该尽量使用指针作为参数来避免大量数据拷贝从而提升性能.Go 方法调用的时候是将接收者作为参数传递给了callee,接收者分值接收者和指针接收者.
2023-01-06 15:08:09
261
翻译 深入 net/http:看一下 http.RoundTripper
Github 的 api 的某些部分需要对请求进行身份验证,有些则不需要。默认情况下,该库不处理身份验证,它使用默认的 HTTP 客户端,如果您需要能够访问 api 的经过身份验证的部分,您可以携带自己的 HTTP 客户端,例如。中总是相同的,并且考虑到 API 调用是有速率限制的,并且由于您的应用程序的高使用率,您几乎总是达到/超过限制。. 我们将创建一个只响应一个路由的服务器,然后创建一个连接到该服务器的客户端包。另一件需要注意的事情是,无论我们是否访问服务器,响应的主体都会保持不变。
2022-11-24 19:15:30
207
原创 fission使用指南
Fission 是由私有云服务提供商Platform9领导开源的 serverless 产品,它借助 kubernetes 灵活强大的编排能力完成容器的管理调度工作,而将重心投入到 FaaS 功能的开发上,其发展目标是成为 AWS lambda 的开源替代品。从 CNCF 视角,fission 属于 serverless 平台型产品。
2022-11-11 16:43:27
467
转载 UML建模--用例图
包含是用来把一个复杂的用例表示为一个功能分解的较小步骤,包含关系典型的应用就是复用,也就是定义中说的情景,但是有时候当某个用例的事件流太过于复杂时,我们也可以把一段事件流抽象成一个被包含的用例;条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
2022-11-03 11:36:42
585
原创 关于dapr跨k8s集群服务调用的可行性方案
命名解析器提供了一种与不同命名解析器互动的通用方法,这些解析器用于返回你的应用程序可能要连接到的其他服务的地址或IP。兼容的名称解析器需要实现 nameresolution.go 文件中的 Resolver 接口。// Resolver是命名解析器的接口。}// ResolveRequest 表示服务发现解析器请求。}本文的思路只针对k8s环境,且要求多个集群ip互通,只支持dapr的服务调用,其他功能不支持。条件比较严格,思路未经实现仅供参考。
2022-10-27 20:37:57
1099
原创 dapr源码分析--服务调用
Service Invocation 是 dapr 对外提供的最基础功能, 也就是服务间调用. 另外别的一些功能也会间接使用它.本文不会介绍功能如何使用, 相关资料请查看官方文档.官方文档给出来 Service Invocation 服务间调用的示意图, 已经是非常清晰了. 因为 dapr 是 sidecar 模式运行在业务 APP 旁边, 所以我们服务间调用也是通过 dapr 做的转发, dapr 也就是在这一步做了监控, 追踪, mTLS 等功能.
2022-10-27 19:57:57
1358
转载 一文读懂 Kubernetes APIServer 原理
整个Kubernetes技术体系由声明式API以及Controller构成,而kube-apiserver是Kubernetes的声明式api server,并为其它组件交互提供了桥梁。因此加深对kube-apiserver的理解就显得至关重要了。
2022-10-25 11:25:45
580
原创 k8s crd和API Aggregation的区别
尽管添加新的 CRD 不会自动带来新的失效点(Point of Failure),例如导致第三方代码被在 API 服务器上运行, 类似 Helm Charts 这种软件包或者其他安装包通常在提供 CRD 的同时还包含带有第三方代码的 Deployment,负责实现新的定制资源的业务逻辑。定义 CRD 对象的操作会使用你所设定的名字和模式定义(Schema)创建一个新的定制资源, Kubernetes API 负责为你的定制资源提供存储和访问服务。就是将定制资源与定制控制器相结合的。
2022-10-25 11:24:19
472
转载 图解kubernetes中api聚合与CRD概要设计
kubernetes中apiserver的设计无疑是复杂的,其自身内部就包含了三种角色的api服务,今天我们一起来臆测下其内部的设计,搞明白aggregator、apiserver、apiExtensionsServer(crd server)的设计精要。
2022-10-25 10:48:11
394
Go并发编程实战 第2版 .pdf
2018-10-25
《http权威指南》高清中文
2018-09-27
visual studio code
2018-09-03
TCP-IP详解
2018-04-13
算法导论_中文版_第三版
2018-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人