锅锅来了
运维工程师,全栈开发,后端使用过C#,PHP,Python,Golang,前端使用JQuery,Vue,微信小程序。乐于分享一些运维和开发,Linux性能优化思路和工具等相关的内容。
展开
-
Golang Web开发- Gin不使用Nginx部署Vue项目
当我们应用后端用Gin框架,前端使用Vue开发,那么在最后部署上线的时候,一般是前端Vue构建的dist目录的文件部署在Nginx上,Nginx反向代理到Gin后端代码。但是这样的部署方式略微繁琐,尤其只是临时启动下应用的时候,没必要再部署一个Nginx。下面我们将前端部署项目使用较多的结合Gin 框架实现前端构建产物和Gin打一个包部署。vue已经是目前最流行的前端开发方式了,对于Jquery,Layui这类对于小功能可以使用,稍微复杂的还是考虑使用vue进行前端开发。原创 2024-05-26 21:30:40 · 157 阅读 · 0 评论 -
Golang并发编程-协程goroutine任务取消(Context)
在实际的业务种,我们可能会有这么一种场景:需要我们主动的通知某一个goroutine结束。比如我们开启一个后台goroutine一直做事情,比如监控,现在不需要了,就需要通知这个监控goroutine结束,不然它会一直跑,就泄漏了。我们都知道一个goroutine启动后,我们是无法控制他的,大部分情况是等待它自己结束,那么如果这个goroutine是一个不会自己结束的后台goroutine呢?比如监控等,会一直运行的。原创 2024-05-25 21:40:00 · 717 阅读 · 0 评论 -
Golang并发编程-协程goroutine的信道(channel)
Goroutine的开发,当遇到生产者消费者场景的时候,离不开 channel(信道)的使用。信道,就是一个管道,连接多个goroutine程序 ,它是一种队列式的数据结构,遵循先入先出的规则。// 先声明再初始化var 信道实例 chan 信道类型信道实例 = make(chan 信道类型)// 上面两句合并信道实例 := make(chan 信道类型)关闭一个未初始化的 channel 会产生 panic重复关闭同一个 channel 会产生 panic。原创 2024-05-25 15:20:18 · 869 阅读 · 0 评论 -
第二节:kafka golang sarama的ClusterAdmin类操作
上一节,我们已经简单接触了sarama包的使用,通过Client类型操作,获取了kafka的元数据信息,如果我们需要获取kafka,topic详情信息呢,下面我们使用ClusterAdmin类的使用ClusterAdmin是Kafka的管理客户端,支持管理和检查主题、代理、配置和ACL。所需的最低代理版本为0.10.0.0。具有更严格要求的方法将指定所需的最低代理版本。您必须在客户端上调用Close()以避免泄漏import ("fmt""log"if err!原创 2024-02-20 16:30:17 · 285 阅读 · 0 评论 -
第三节:kafka sarama 遇到Bug?
前面两节,我们已经简单应用了sarama的两个类型Client和ClusterAdmin,其中有一个案例是获取集群的ControllerId,但是在后面的测试过程过程中,发现一个问题,返回的ControllerID是随机的,这个是什么原因呢,我们下面分析下sarama本身也是遵循了kafka kraft版本的代码行为,就使用来说,对客户端是无所谓的,有人相应就好,但是作为运维和排查问题角度,还是需要一个方法,获取到目前集群的Controler的Leader具体是哪个节点。我们可以继续关注这个问题。原创 2024-02-22 12:26:47 · 554 阅读 · 0 评论 -
第一节:kafka golang sarama初体验
关于Kafka的开发库,以Java的居多,Golang语言的开发库,主要推荐的是sarama项目地址:这个项目之前地址是https://github.com/Shopify/sarama 通过源地址也可以访问本节,我们简单通过golang语言,操作sarama.NewClient对象,查询了kafka集群的topic列表,brokers列表,控制器ID。希望大家对sarama有了初步认识。原创 2024-02-20 16:05:03 · 448 阅读 · 0 评论 -
Golang并发编程-协程goroutine初体验
学习Golang一段时间了,一直没有使用过goroutine来提高程序执行效率,在一些特殊场景下,还是有必须开启协程提升体验的,打算整理几篇关于协程的原理的文章和案例,结合工作场景将协程使用起来。本节内容,介绍了Goroutine的使用,为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出,我们又学习了WaitGroup。目前呢,因为我们没有任何的数据交换,仅仅是开启协程执行并发的任务,因此没有用到信道。原创 2024-05-24 21:57:16 · 902 阅读 · 0 评论 -
Golang案例开发之gopacket抓包三次握手四次分手(3)
TCP通讯的三次握手和四次分手,有很多文章都在介绍了,当我们了解了gopacket这个工具的时候,我们当然是用代码实践一下,我们的理论。本节内容就是好的实践。相信,通过今天的实践,你一定和我一样对TCP的协议的理解更加深刻。原创 2024-03-22 22:25:06 · 1707 阅读 · 3 评论 -
Golang案例开发之gopacket监听网卡抓包(2)
本节实战,监听指定网卡,进行网络抓包,根据分层,解析不同分层包的内容。本节内容,对gopacket抓包有了一个初步的认识,后期我们需要优化工具。原创 2024-03-19 13:51:55 · 745 阅读 · 2 评论 -
Golang案例开发之gopacket抓包入门(1)
说起网络抓包,我们一定听过大名鼎鼎的Tcpdump和WireShark。他们分别是Linux平台和Windows平台的抓包工具。Wireshark抓包工具,其底层抓包库是npcap(以前是winpcap);Tcpdump,其抓包库是libpcap;本节,主要是搭建下开发环境,尝试获取网络设备的接口。下一节,尝试在一个网络设备上抓包。原创 2024-03-18 14:26:20 · 916 阅读 · 0 评论