- 博客(202)
- 资源 (1)
- 收藏
- 关注
原创 Helm 完整学习指南:从入门到实战
Helm 是 Kubernetes 的包管理器,可以理解为 Kubernetes 的 "apt-get" 或 "yum"。service:port: 80ingress:size: 20Giresources:requests:limits:mariadb:auth:primary:size: 10Gi# 创建新的 Chart# 查看生成的文件结构my-webapp/image:service:port: 80ingress:hosts:paths:- path: /
2025-10-16 19:10:42
191
原创 Kubernetes 自定义 CRD 开发完整指南:从零开发 ConfigMap 热更新 Operator
本文介绍了使用Operator SDK和Go语言开发ConfigMap热更新Operator的完整步骤。首先通过operator-sdk初始化项目并创建API/Controller,定义CRD结构包含ConfigMap和工作负载信息。核心控制器逻辑包括:监听ConfigMap变化、计算哈希值、触发关联Deployment滚动重启(通过修改annotation实现)。文章详细展示了代码实现,包括Reconcile逻辑、事件映射和状态更新。最后提供了测试方法:创建示例Deployment、ConfigMap和R
2025-10-15 16:36:24
214
原创 Kubernetes完整工作流程详解:从kubectl提交到Pod运行的奇幻之旅
Kubernetes组件协同工作全流程解析:以音乐会为比喻,系统阐述了从Deployment提交到Pod运行的全过程。1)核心组件角色:kubectl(总指挥)、APIServer(控制室)、ETCD(工作记录板)、ControllerManager(编排系统)、kube-scheduler(座位分配师)、Kubelet(舞台管理员);2)完整工作流:用户提交YAML→APIServer验证→ETCD存储→ControllerManager创建副本→调度器分配节点→Kubelet运行容器;3)关键机制:声明
2025-10-14 17:48:54
424
原创 深入解析 kube-proxy:Kubernetes 服务发现的网络基石
摘要: kube-proxy是Kubernetes集群中实现服务发现与负载均衡的核心组件,通过动态配置Linux内核的iptables/IPVS规则,将Service虚拟IP的请求透明转发到后端Pod。其工作模式经历了从低效的userspace到高性能iptables/IPVS的演进,其中IPVS模式基于哈希表实现L4负载均衡,适合大型集群。以ClusterIP为例,数据包经过PREROUTING链的DNAT转换后,由内核直接路由到目标Pod。NodePort和LoadBalancer类型分别在Cluste
2025-10-14 16:20:05
514
原创 深入浅出 Istio 服务网格:从原理到实践
本文介绍了云原生架构中Istio服务网格的核心原理与应用实践。文章首先阐述了Istio的架构设计,包括控制平面(istiod)和数据平面(Envoy)的协作机制;然后详细说明了使用Helm安装部署Istio的方法;重点解析了Gateway、VirtualService和DestinationRule等关键模块的功能与关系;最后通过Bookinfo示例应用演示了按版本路由、金丝雀发布、A/B测试等流量治理场景。全文系统性地展现了Istio如何通过非侵入式方式简化微服务治理,为构建现代化云原生应用提供强大支持。
2025-10-13 17:39:27
840
原创 基于LangChain的智能体开发实战
工具描述即API文档:精确的description可提升70%以上的路由准确率模块化设计:保持工具功能单一性测试驱动开发:需覆盖边界案例(如模糊指令、异常输入)可扩展架构:预留IoT设备对接接口通过本案例,我们实现了从基础工具封装到智能决策的完整开发链路。随着工具集的丰富,这种模式可扩展至智能家居、工业自动化等复杂场景。
2025-02-27 23:03:28
762
原创 golang http文件上传操作
beego作为服务器 通过post formData的格式上传报文格式如下:package mainimport ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os")func main() { req, _ := newfileUploadRequest("http://192.168.2.144:8956/v1/body-eval/data-info", nil, "file_name"
2021-01-18 15:42:26
2798
原创 操作系统知识整理
一、全局解释器锁(GIL)1、什么是全局解释器锁 每个CPU在同一时间只能执行一个线程,那么其他的线程就必须等待该线程的全局解释器,使用权消失后才能使用全局解释器,即使多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。GIL的设计简化了CPython的实现,使的对象模型包括关键的内建类型,如:字典等,都是隐含的,可以并发访问的,锁住全局解释器使得比较容易的实现对多线程的支持,但也损失了多处理器主机的并行计算能力。2、全局解释器锁的好处1
2021-01-05 22:22:36
349
1
转载 并发环境下,先操作数据库还是先操作缓存?
前言在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。缓存维护方案一假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库。,如下流程图所示:1)线程A发起一个写操作,第一步del cache2)线程A第二步写入新数据到DB3)线程B发起一个读操作,cache miss,4)线程B从DB获取最新数据5)请求B同时set cache这样看,没啥问题。我们再看第二
2020-12-15 10:37:09
278
转载 Linux服务器性能查看分析调优
一 linux服务器性能查看1.1 cpu性能查看1、查看物理cpu个数:cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l2、查看每个物理cpu中的core个数:cat /proc/cpuinfo |grep "cpu cores"|wc -l3、逻辑cpu的个数:cat /proc/cpuinfo |grep "processor"|wc -l物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下
2020-10-28 16:05:09
780
转载 Go orm框架gorm学习
之前咱们学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github.com/go-sql-driver/mysql"MYSQL驱动,通过比较原生的写法去写sql和处理事务。目前开源界也有很多封装好的orm操作框架,帮我们简省一些重复的操作,提高代码可读性。gorm就是这样的一款作品,我们来学习一下gorm的操作流程。安装#go get...
2020-03-31 10:44:27
2282
转载 Linux下查看CPU信息[/proc/cpuinfo]
最近在研究linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下。通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西。在linux操作系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo 查看一下:上图是本人电脑的CPU信息,下面我们来分析其中几个比较重要的指...
2020-03-02 18:33:02
699
原创 问题总结
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用;而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构函数可...
2020-03-02 18:20:57
2444
转载 虚拟地址和物理地址及其映射
前一段时间在面试总监的时候,总监问了我这样的一个问题:你个我说说物理内存和虚拟内存到底是怎么一回事?其实之前我看过这个问题,据我理解的,当时是这么回答的“进程在运行的时候,操作系统都为其分配一个4GB的地址空间,即所谓的虚拟地址空间,一般情况下,当我们的程序很大的时候,实际的物理内存根本不能满足我们的需求的时候,这个时候操作系统就会借助磁盘空间来做虚拟的内存空间,把当前进程不需要的数据放在磁盘上,...
2020-03-02 15:46:55
3301
1
转载 [Linux] 同步异步阻塞非阻塞的区别
第一次有人形容的这么形象同步和异步传统意义上的同步,指的是两种事物一样进行同样的动作或者处于同样的状态。在计算机术语中:同步指的是在一次同步方法调用开始时,调用方必须主动等待被调用对象返回才能进行下一步操作。而异步指的是再一次方法调用开始调用者不必等待调用者返回才能去处理别的事情,而是被调用者主动或者其他方通知调用者被调用对象返回了。举例子:你现在需要照顾一个小宝宝,现在小宝宝睡着了...
2020-02-28 18:35:58
289
转载 分布式事务
前言不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。事务的具体定义事务提供一种机制将一个活动涉及的...
2019-02-21 10:07:36
2219
转载 Golang GC 垃圾回收机制详解
摘要在实际使用 go 语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究。本文对研究的结果进行一下总结。什么是垃圾回收?曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开...
2019-01-29 12:11:35
1210
原创 Linux awk+uniq+sort
需要用到的命令简介cat命令 cat命令主要有三大功能 1.一次显示整个文件 cat filename 2.创建一个文件 cat > fileName 3.将几个文件合并为一个文件 cat file1 file2 > file 参数: -n 或 –number 由 1 开始对所有输出的行数编号 -b 或 –number-nonblank 和 -n...
2019-01-14 15:24:56
659
转载 Sublime text 3搭建Python开发环境及常用插件安装
一、环境准备1、官方网站地址2、Windows 103、Sublime Text 3 + 官网购买license(Just a suggestion,$80) 购买链接,Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued u...
2018-12-22 11:30:39
482
原创 reflect反射机制
1 概述 reflect 实现运行时反射,允许程序使用任意类型操作对象。典型的用法是用静态类型接口{}取值并通过调用返回类型的TypeOf 来提取其动态类型信息。反射是程序执行时检查其所拥有的结构。反射在程序中应用非常多,例如:动态生成数据:json 序列化/反序列化; orm 映射, proxy 透明代理对象 动态调用方法:plugin 实现 框架自动处理程序:...
2018-10-21 15:02:38
1031
原创 go unsafe的用处
解释不为安排指针: unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。 正常的情况来说go语言的中的结构私有变量不能直接被访问或者直接被修改,但是可以通过unsafe的操作来直接对么有变量进入取值...
2018-09-21 19:29:27
860
1
原创 go语言限制Goroutine数量
package mainimport ( _ "ORMTest/routers" "fmt" "runtime" "time")func main() { runtime.GOMAXPROCS(runtime.NumCPU()) c := make(chan bool, 100) t := time.Tick(time.Second) go func() { fo...
2018-09-21 17:02:32
2904
转载 [区块链技术] 吐血推荐!区块链从入门到放弃(区块链入门汇总整理)
一个完整的入门整理帖,所以到处搜罗搬运了一些觉得挺不错的来,直接贴链接应该不算侵权吧 入门介绍与原理: 一、比特币1.比特币白皮书这是一切的开始2.精通比特币讲比特币很详细的一本书,看完基本对比特币的认识就清楚了。3.TheProof-of-Work ConceptPoW机制理论介绍,英文4.比特币的原理及运作机制这篇是新手向,适合向圈外人介绍什么是比...
2018-08-31 21:28:16
530
转载 fastdfs 原理与过程
前言:(1)每次上传文件后都会返回一个地址,用户需要自己保存此地址。(2)为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。 网摘...
2018-07-23 19:06:44
411
转载 beego orm的使用
在使用beego model 去操作数据库时 有一些疑惑 找到了一个比较好的博文 原文地址 : https://my.oschina.net/u/252343/blog/829912 (KelvinQ )侵删 模型定义复杂的模型定义不是必须的,此功能用作数据库数据转换和自动建表默认的表名规则,使用驼峰转蛇形:AuthUser -> auth_userA...
2018-07-22 12:03:27
10228
转载 go-ethereum 部署私有链
go-ethereum 部署私有链说明服务器上传 geth 可执行程序第一台服务器节点创建创世区块配置文件初始化启动节点查看信息第二台服务器节点创建创世区块配置文件初始化启动节点查看信息添加静态节点文件第三台服务器节点挖矿测试go-ethereum 部署私有链说明服务器这里使用 30303 端口,所以需要确定该端口在三台服务器上都打开了,否则不能添加其他服务器节点。代号内网 IP操作目录说明eve...
2018-06-09 21:48:35
1323
转载 只用200行Go代码写一个自己的区块链!
“用不到200行 Go 代码就能实现一个自己的区块链!” 听起来有意思吗?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 因为我们是一家从事医疗健康领域的科技公司,所以我们采用人类平静时的心跳数据(BPM心率)作为这篇文章中的示例数据。让我们先来统计一下你一分钟内的心跳数,然后记下来,这个数字可能会在接下来的内容中用到。通过本文,你将可以做到: 创建自己的区块链理解 h...
2018-02-28 21:26:53
719
转载 深入理解HDFS的架构和原理
(一) HDFS主要是用于做什么的? HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large ...
2018-02-26 12:14:03
720
原创 zookeeper关于go的负载均衡实例
搭建zookeeper的服务就不说,上网一大堆,直接上代码common.gopackage mainimport ( "fmt" "time" "github.com/go-zookeeper/zk")func GetConnect() (conn *zk.Conn, err error) { hosts := []string{"localhost:8090"} conn,...
2018-02-08 17:33:22
2423
转载 RabbitMQ分布式集群架构
RabbitMQ分布式集群架构和高可用性(HA)(一) 功能和原理设计集群的目的允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行通过增加更多的节点来扩展消息通信的吞吐量1 集群配置方式RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovelcluster:不支持跨网段,用于同一个网段内的
2017-11-13 16:19:57
816
转载 nginx如何做到TCP的负载均衡
如有转载,请声明出处: 极致博客: http://blog.csdn.net/u011218159TCP 的 负载均衡这个片段描述了如何通过nginx plus进行负载均衡在版本5中,nginx plus 能够代理和负载均衡通过TCP路径,TCP对于一些流行应用和服务是一个协议:LDAP、MYSQL、RTMPstream 模块TCP
2017-11-13 15:24:39
1841
转载 日志监控filebeat中文指南
Filebeat中文指南翻译自:https://www.elastic.co/guide/en/beats/filebeat/current/index.htmlpower by kerwin一、概述Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到e
2017-11-02 12:10:58
6887
原创 最自恋的golang的time.Format的坑
我想格式化输出日期fmt.Println(time.Now().Format("2010-10-10 15:04:05"))结果输出了9060-60-60 11:11:36这什么鬼百度了一个fmt.Println(time.Now().Format("2006-01-02 15:04:05"))这就输出正确了201
2017-06-09 11:14:00
3366
3
转载 Docker 命令详解
Docker 子命令:attach commit diff export history import insert kill login port pull restart rmi save start tag version build cp ev
2017-05-11 11:46:40
1084
转载 supervisor配置详解(转)
原文:http://lixcto.blog.51cto.com/4834175/1539136 有阵子没写博客了,这段时间一直在研究python django框架和前端相关的东西。楼主学通信的,对web这一块啥也不懂,学了一个礼拜django,接着学了2个礼拜前端,感觉还是做不出来一个好看的页面。周末去了趟上海,蹭大神的讲课,学会了套用bootstrap框架和heighcharts,
2017-05-05 14:48:50
1486
转载 redis3.0.0 集群安装详细步骤
Redis集群部署文档(ubuntu系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005
2017-05-05 10:56:40
497
转载 Goroutine + Channel 实践
背景在最近开发的项目中,后端需要编写许多提供HTTP接口的API,另外技术选型相对宽松,因此选择Golang + Beego框架进行开发。之所以选择Golang,主要是考虑到开发的模块,都需要接受瞬时大并发、请求需要经历多个步骤、处理时间较长、无法同步立即返回结果的场景,Golang的goroutine以及channel所提供的语言层级的特性,正好可以满足这方面的需要。goroutine不
2017-05-02 18:03:09
736
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人