做完这次golang项目后,最大的体验是从php转go是真的头皮发麻,原因大于强类型语言到处类型需要关注,但是习惯了就好了
这次做的项目主要是异构mysql数据库到clickhouse进行数据分析统计
golang之canal知识点
https://github.com/withlin/canal-go //客户端golang-canal包
怎样确保数据的一致性,此时应该使用golang-canal包中的一个commit功能和rollback的功能,需要注意的是rollback实际是生效的但是bachId是不体现在这里,打印数据就知道了
golang 之kafka功能
- 使用segmentio/kafka-go包处理同时实现了消费确认和sasl功能,在这次开发中差点载跟斗了,因为临时上线才说要用阿里云此时用的是公网ip【而阿里云的golang-kafka-sdk一言难尽各种坑爹】,因此需要验证权限,官网在这个描述得不太明晰因此在github找到了解决方案,
dialer := &kafka.Dialer{
Timeout: 10 * time.Second,
DualStack: true,
TLS: &tls.Config{
InsecureSkipVerify: true,
},
SASLMechanism: plain.Mechanism{
Username: "xxxx",
Password: "xxx",
},
}
//核心代码就是这段来验证阿里云的kafka
- kafka消费确认是需要group id的如果本地没有配置那么消费确认则会报错,如果要成功 必须要在create topic时候带上topic
- 这里描述docker容器带topic的方法
- 找到kafka的容器,进入/opt/bitnami/kafka/bin
- kafka-console-consumer.sh --bootstrap-server 容器ip:端口 --topic mytopic --consumer-property group.id=mygroup
但是如果买阿里云其实是不存在配group id那么麻烦,因此根据自己测试的来
golang之clickhouse
起初用的不是gorm那操作入库那是特别的麻烦
后来引入clickhouse-gorm妈妈再也不担心我
clickhouse使用的mergetree是不会对数据进行删除的而是修改sign为-1,当执行Final后则会自动折叠-1的只保留1的