- 博客(41)
- 收藏
- 关注
原创 【教程】如何编译指定版本Spark
我们目前在K8S集群中使用的spark是,基于kubeflow的来运行的,对应的spark版本: 3.2.1为啥要编译指定版本的Spark?主要是需要读取一个消息队列的数据源, 看到有对应数据源spark读取的实现,有现成的。不过,是基于低版本spark 2.3的实现,想直接拿来用(果然没有现成的馅饼)。结果: 悲剧了, 根本用不上。还遇到一堆问题(不支持 On K8S、 spark operator的兼容性问题)最终: 跑是跑起来了, 只能local模式。On K8S的问题有太多兼容性问题。
2024-12-25 11:22:39
285
原创 【实践】 使用k8s的leader-election来实现多副本应用的选举
如何正确使用 leader-election, leader-election的常见概念和坑
2024-06-11 14:54:23
1227
原创 【实践】给proto的message添加自定义tag
可以使用这个工具来给Field添加# 对应的pb生产文件:可以看到,通过@gotags 自定义的tag声明, 生效了。1. json的tag可以指定新的名称2. 添加了用于映射mongodb中字段的bson tag3. 同时, 还添加了orm组件的字段tag 映射名称是不是很方便, Enjoy ~
2024-05-13 16:27:51
1064
原创 【实践】 基于proto生成对应http的client和server代码, 类似grpc的代码生成功能
想想写grpc的时候, 这些初始化代码是自动生成的(包括: server端和client端代码),你只需要定义对应的proto文件即可, 然后,client引用对应生成的client端代码就能很方便的创建一个client出来。你需要注册http路由,编写对应的handler来处理, 也最多就基于某个web框架,比如: gin, 来写一大堆web服务的初始代码,很难受!之前在B站,就有类似的工具, 当时没太注意,现在回过头来仔细思考一番,这个工具应该挺常用的,为啥不用?那有没有一个类似的工具,在写。
2024-05-11 18:48:20
714
原创 【实践】使用vscode来debug go程序的尝鲜
瞬间解锁新技能, 在之前只能通过打印日志来观察程序行为,变成想看程序中的什么变量就都能看到(前提: 掌握点debug基本知识,包括: 断点、单步执行 ....)首先,当然得配置好vscode 的go环境, 装个go插件就基本满足了。, 可以配置多个环境的程序启动参数(很友好), 位置可以不固定,可以拖动想放到哪里都行。, 直接选择启动就可以debug了。左边可以观察程序的变量、调用栈等信息。其中,每个环境都指定了启动的。中间顶部: 调试的一些控件。
2024-05-11 15:44:12
1414
原创 【问题】go mod依赖库代码一直变, 如何不更新go.mod来得到依赖库的变更代码
不知道你们是否有类似情况?在开发项目中(通常情况会同时修改项目代码:A、B ),A项目go mod依赖B, B可能一直处于变更中,但B的代码不想每次变更都推送到远端,如何让A能正常依赖B的变更呢?: B变更后, 推送到远端仓库, A通过拉取B新的gomod,就能获取B的变更代码依赖。通过上面的命令, A可以获取到了B变更后的代码,这个库的代码依赖在目录:$GOPATH/pkg/mod中但这样有个问题?每次B做了很小的变动,都得推到远端,然后A还得重新拉B最新的代码, 是不是有点烦?
2024-05-10 17:32:58
958
原创 【问题】protobuf中int64类型字段被转成字符串类型
通常使用 jsonpb 的Marshal和Unmarshal,protobuf中int64类型字段会被转成字符串类型。但是, 后来发现,使用最简单json的Marshal和Unmarshal就能避免这个问题,直接蒙了!像使用gin这种Web服务框架,服务接口return proto的message即可。接口请求参数获取,直接使用proto message 定义BindJSON即可。之前没找到解决办法,有点无奈。
2024-05-07 11:52:12
1131
原创 Golang版本管理之Goup
本地管理go的不同版本管理,推荐使用: https://github.com/owenthereal/goup更新PATH执行之后,需要将Goup和Go的bin目录添加到PATH中:Goup相关命令的bin目录:~/.go/binGolang相关命令的bin目录:~/.go/current/bin在 安装了 oh-my-zsh之后,在 ~/.zshrc 中修改PATH之后,新打开的终端,就能正常使用go和goup相关命令了。⚠️如果当前shell也能运行go和goup相关命令,可以执行:
2023-06-07 14:05:25
2356
原创 阅读图书:advanced-go-programming-book 的一些总结
阅读图书advanced-go-programming-book的一些总结
2022-12-12 16:58:09
414
8
原创 Redis和MYSQL双写一致性分析
缓存的问题 缓存雪崩(大量数据集中过期); 缓存击穿(热点数据过期); 缓存穿透(缓存和数据中都不存在该数据) 缓存淘汰volatile-random,volatile-ttl,volatile-lru,volatile-lfuallkeys-random,allkeys-lru,allkeys-lfu读写缓存 同步直写: 写redis,同时也写数据库; 异步写回:先写redis,然后等redis淘汰数据时,同步写回数据到数据库中。 三个经典的缓
2022-05-27 15:37:55
330
原创 事务处理(结合分布式事务)
一般的事务处理,分为一下几种:本地事务 共享事务 全局事务 分布式事务本地事务常见的本地事务,有数据库的事务, redis事务。即是一种单服务,单数据源的提交形式共享事务这是一个伪需求,实际上多服务,单数据源的场景很少见全局事务这是单服务, 多数据源的场景,一种强一致性的事务解决方案有以下实现:2PC: 两阶段提交提交过程: 准备、提交缺点:单点问题, 性能问题(同步阻塞), 一致性风险3PC: 三阶段提交提交过程: CanCommit, PreCom
2022-05-27 15:07:52
861
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人