Zhengtianbao's Blog

通过软考高级「系统架构师」的一些经验总结

在 2023 年下半年的时候,我有了参加软考高级「系统架构师」考试的想法。众所周知,软考的证书其实并没有什么用处,并不会因为你有这个证就认为你是架构师了。那我为什么还要考呢,因为考虑到整体的大环境不行,各个公司降息裁员的消息层出不穷,指不定哪天就要面临「毕业」,对未来的预期实在是不容乐观,现实就是那么令人无奈,不管你是如何轻视这个证书,但它却是官方认可的计算机行业资质证书,多一本证书也许就能...

Tauri 集成 Vue 构建跨平台桌面应用

由于云服务器到期,之前开发的项目很快就要面临下线的危机,鉴于目前使用人数也不多,因此考虑将程序改造为桌面应用。 前端是基于 Vue 框架开发的,在改造过程中有以下两点要求: 首先是能够复用代码,不需要大量修改 其次是能够跨平台构建,需要支持 Linux,Mac,Windows 平台运行 因此我首先想到的就是 Electron:内嵌 Chromium 浏览器和 Node.js...

包管理器的依赖管理

设计一个包管理器需要考虑很多方面的问题:如何定义软件包的格式(zip,tar),如何定义软件包的元数据(名称,版本,作者信息,依赖包等),如何在安装包的时候解决依赖关系,如何进行版本管理,如何安装或者卸载软件包,如何进行软件包的存储和分发,如何支持多操作系统等问题。 本文主要针对包管理器在安装软件包过程中是如何解决依赖冲突和循环依赖的问题,用 go 语言进行了简单的描述。 依赖关系描述 ...

Golang HTTP Client 请求 BIG-IP 负载均衡失效问题记录

问题发现 事情是这样的,我们的 prometheus 开启了 remote_write 功能,将指标数据推送到 kafka-adapter,然后转发给 kafka 交由后续服务消费处理。随着接入系统指标的增加,发现 kafka-adapter 负载过高,因此进行横向扩容,通过负载均衡将 prometheus 的请求进行转发。 在测试环境通过 nginx 配置功能测试正常后上生产环境,但是...

2024 年的 vagrant 使用体验

「在我这是好的,不信你来看看」这是个程序员都明白的梗,背后反映出来的其实是软件开发环境与运行环境不一致的问题,基础设施、操作系统、版本、配置的差异都有可能导致异常情况的产生。避免各个环境的差异的关键点在于实现软件交付的可重复性,简单而言就是将每个步骤都像流水线一样记录下来形成脚本,这样无论脚本执行多少次,其结果都是可预测的。那么如何实现这种可重复性呢? 按照我的经验大概总结出以下: ...

博客「装修」小记

有段时间没有更新文章了,打开网站忽然就有了换个主题的念头,当时选择 White-Paper 是因为考虑到它足够简单,毕竟「less is more」,但是在使用过程中发现它对中文的支持有些水土不服,总结来看主要存在以下问题: h2,h3,h4 标题以及正文的中文大小显示差强人意 正文中列表显示效果差 正文中代码部分显示字体过小,且不提供粘贴按钮 文章的标签归档需要手动执行...

kubernetes cookbook 之优雅退出篇

云原生(cloud native)应用其中有一条就是能够快速迭代,应用不断升级过程中不可避免就是启停操作,删除旧版本,更新新版本,如果应用是部署在 kubernetes 上面的,那么 update deployment 过程中 kubelet 会发送 SIGTERM 信号给容器 PID 1 的进程,做为应用程序应当捕获这个信号,可以在真正退出之前做一些清理工作,例如通知注册中心自己已消亡。 ...