- 博客(83)
- 资源 (1)
- 收藏
- 关注
原创 【GoLang】记录在Go中使用robfig/cron来做定时任务
依赖官方文档注意引用的时候需要像下面这样,加上版本和标签,否则会报404 Not Foundgo get github.com/robfig/cron/v3@v3.0.0简单使用package mainimport ( "fmt" "github.com/robfig/cron/v3")func main() { c := newWithSeconds() spec := "*/5 * * * * ?" _, e := c.AddFunc(spec, func() { f
2021-12-06 16:52:57
1900
3
原创 【GoLang】记录一次使用Go实现微信小程序一键登录操作
文章目录需求实现整体流程微信登陆流程Go后端实现code2sessionAES解密接口部分需求PC端一个B/S应用,登陆时支持微信扫码登陆,微信扫码后,会跳转到一个小程序,通过该小程序进行授权登陆,用小程序的原因是只有小程序能获取到用户的手机号,效果如下实现整体流程首先页面需要生成一个二维码:后端需要提供一个唯一的code,使用uuid即可,然后再拼接为小程序页面的url,二维码由前端根据url生成即可将code存入缓存,设置状态为:1-初始状态前端不断扫描该code的状态,用以更新二维
2021-11-30 16:38:58
7953
3
原创 【GoLang】《GORM实战》第三篇:关联与预加载
文章目录关联分类重写外键、引用多态关联外键约束关联操作自动添加关联关联模式查询关联添加关联替换关联删除关联级联删除清空关联关联计数批量处理数据预加载Preload带条件的预加载预加载全部自定义预加载 SQL嵌套预加载Joins预加载关联分类belongs to:会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。比如:一个学员属于一个门派has one:与另一个模型建立一对一的关联,但它和一对一关系有些许不同。 这种关联表明一个模型的每个实例都包含或拥有另一个模
2021-11-23 15:51:45
3931
原创 【GoLang】《GORM实战》第二篇:CRUD之路
文章目录创建创建记录默认值扩展创建选项钩子方法Upsert 及冲突查询一般查询Where 条件普通SQL查询Struct & Map查询Not 条件Or条件内联条件额外查询选项FirstOrInitAttrsAssignFirstOrCreateAttrsAssign高级查询子查询选择字段排序数量偏移总数Group & Having连接Pluck扫描Scopes更新更新所有字段更新修改字段更新选定字段无Hooks更新批量更新使用SQL表达式更新修改Hooks中的值其它更新选项删除删除记录批量
2021-11-23 15:49:08
2876
原创 【GoLang】《GORM实战》第一篇:初识GORM框架
文章目录概述特性安装连接到数据库数据库配置自定义驱动现有的数据库连接连接池快速入门模型gorm.Model模型定义嵌入结构体字段级权限控制时间追踪结构体标签字段标签关联标签示例约定主键表名列名时间戳跟踪CreatedAtUpdatedAtDeletedAtGorm方法分类链式方法Finisher Method新建会话模式概述The fantastic ORM library for Golang aims to be developer friendly.一个致力于开发者友好、极好的Golang OR
2021-11-23 15:44:18
4421
原创 【GoLang】记录一些开发过程中的业务SQL及对应的Gorm实现
文章目录记录1背景需求1:按题目分组查询用户提交数SQLGorm写法需求2:按题目分组查询,并统计count,获取最新的时间SQLGorm写法需求3:在需求2的基础上,按时间倒序排序SQLGorm写法需求4:同时查询多个不同条件count值SQLGorm写法记录1背景表1:problems(习题表,存放习题的基本信息)表2:submissions(提交记录表,用户对习题的提交记录,包含提交内容、提交结果、时间等信息)开发语言是Go,使用的ORM框架是Gorm需求1:按题目分组查询用户提交数SQ
2021-11-12 14:02:56
1120
原创 【RocketMQ】记录一次广播模式消费遇到的问题
文章目录问题详情问题定位问题解决问题详情业务团队反馈使用RocketMQ时,消费失败,报如下的错误:错误1:java.io.FileNotFoundException: C:\Users\zhangzhen16\.rocketmq_offsets\10.201.241.170@172.24.140.45:9876;172.24.130.73:9876@12188\sas_rule_event_consumer\offsets.json.tmp (文件名、目录名或卷标语法不正确。) at java
2021-11-05 19:20:41
2275
3
原创 【RocketMQ】使用Prometheus + AlertManager制作RocketMQ告警
文章目录安装AlertManager编写告警规则文件配置PrometheusWebhook接口安装AlertManager下载地址:https://prometheus.io/download/解压:tar -zxvf alertmanager-0.23.0.linux.amd64.tar.gz修改alertmanager.yml配置文件,添加webhookroute: group_wait: 30s group_interval: 5m repeat_interval: 1h
2021-09-02 15:35:54
15154
原创 【RocketMQ】服务端错误排查:RemotingTooMuchRequestException/sendSelectImpl call timeout
由异常的字面信息,怀疑是并发过高,导致服务端负载太大,导致请求处理不过来了,但是细想,RocketMQ的TPS单机是几万,集群是3主6从,也就是TPS可以达到10w左右,不可能业务团队可以承受的TPS,到RocketMQ端处理不过来,所以问题没那么简单,于是打开源码看一下问题出现的原因。也就是说,确实是服务端处理不过来了,有的文章说需要把超时时间设置长一点,但是这治标不治本,并且官方的压测代码,用的都是默认的配置,所以问题并不是修改配置那么简单,还需要进一步探究。难道真的被打满了吗?
2021-08-18 18:02:09
6557
原创 【RocketMQ】从零搭建一套RocketMQ监控(rocketmq-exporter + Prometheus + Grafana)
前言研究RocketMQ的同学都知道,RocketMQ的生态目前并不是很完善,包括官方的文档资料也有限,官方的Console存在一些Bug,页面的样式有的也有问题,但是正是由于这些原因,我们针对RocketMQ能做的事有很多,不像Kafka,生态已经很完善,一些企业也对Kafka做了开源的产品,最近开始做基于K8S的RocketMQ管理控制台,需要对每个集群有完善的监控告警,接下来就简单说明一下做RocketMQ的监控有哪些步骤。部署rocketmq-exporter以下操作基于Linux系统。首先
2021-08-18 16:25:09
5683
2
原创 【RocketMQ】消息过滤机制介绍及实践(TAG、SQL92、FilterServer)
文章目录表达式过滤TAG使用原理SQL92使用原理类过滤使用原理RocketMQ支持表达式过滤与类过滤两种模式 。表达式过滤其中表达式模式分为 TAG和SQL92表达式两种。TAG顾名思义,TAG 模式就是简单地为消息定义标签,根据消息的标签进行匹配。使用1、在消息发送时,我们可以为每一条消息设置一个TAG标签,消息消费者订阅自己感兴趣的TAG, 一般使用的场景是,对于同一类的功能(如:数据同步)创建一个主题,但对于该主题下的数据,可能不同的系统关心的数据不一样,基础数据各个系统都需要同步,设
2021-08-02 14:14:11
2228
1
原创 【RocketMQ】多方位测试开启消息追踪对集群性能的损耗
测试信息集群信息:集群1:版本4.7.1,3m-6s,单Broker8G内存,异步复制,异步刷盘,开启了消息追踪集群2:所有配置一样,不同点是未开启消息追踪功能备注:集群1的机器性能好,配置为104c、700g;集群2为8c、32g,所以理论上配置相同的情况下,集群2的性能要比测试的结果略高测试维度:服务端开启消息追踪功能,客户端使用和不使用消息追踪的性能差别服务端开启和不开启消息追踪功能,对客户端的性能影响测试参数:线程数:128消息大小:128byte集群开启消息追踪客户端使
2021-06-18 14:58:21
495
1
原创 【RocketMQ】客户端报大量warn日志:No topic route info in name server for the topic:RMQ_SYS_TRACE_TOPIC、TBW102
背景业务团队使用的集群是我们中间件组搭建的,使用的客户端是微服务组基于原生的客户端封装的xcloud-rocketmq业务团队在项目上线之后,反馈线上程序一直报错:问题分析1、看到业务团队这个表述,让我理解为线上集群存在问题,业务方topic在console创建成功了,但是发送消息时失败了,为了确保线上集群没问题,我先创建了一个测试的topic,写一个Java客户端进行发送消息,发现一切正常;2、怀疑是客户端的问题,因为我使用的是原生的生产者,业务方使用的是微服务组封装的xcloud
2021-05-27 20:07:48
17824
5
原创 【RocketMQ】测试RocketMQ对CPU的消耗情况
集群信息版本:4.7.1规模:3主6从刷盘方式:异步刷盘主从复制:异步复制压测参数工具:官方benchmark脚本线程数:200消息大小:128byte压测结果集群TPS最高能到10W,平稳后集群TPS有7W+,单机有2W+CPU消耗情况BrokerBroker的CPU消耗大部分时间平稳保持在4c以下,时偶尔会升到10c左右,升高时TPS会下降,猜测是因为GC导致NameServernameserver对CPU几乎无消耗...
2021-05-26 18:50:42
1177
原创 【RocketMQ】开启DLedger高可用之后的坑:性能骤降30倍
最近在做性能测试的时候发现,当集群开启了DLedger高可用之后,性能很差,详细过程如下:集群信息集群1:版本4.7.1,3Master,每个Master两个Slave,单Broker8G内存,异步复制,异步刷盘集群2:所有配置一样,不同点是开启了DLedger压测结果使用相同参数进行压测:线程数:128,消息大小:128byte,压测结果对比如下:集群1:集群2:可以看到,开启DLedger之后,性能骤降30倍,TPS只有3000+,有点懵,于是怀疑是否是集群2的配置错了,检查了一下集
2021-05-26 16:20:42
1692
原创 【RocketMQ】如何定制化开发官方Console自带的消费告警功能
文章目录背景需求构建源码修改源码打开页面按钮修改弹出框修改js传参修改接口方法编写告警逻辑测试背景 业务团队希望对消费者的健康状态有感知,在消费发生延迟时能收到告警通知,可以通过RocketMQ提供的的SDK:MQAdminExt写一个定时的程序,扫描消费者的状态,并通过比较配置的阈值,来判断是否需要发告警通知,还有一种方法就是直接使用RocketMQ官方提供的console来做,只不过该功能需要动手打开。需求 不同的消费组可以配置不同的告警规则,并且可以配置邮箱,进行邮件发送,邮件内容包含
2021-05-20 18:45:54
1260
3
原创 【RocketMQ】测试RocketMQ主从切换对客户端的影响
文章目录测试ProducerConsumerPUSH模式PULL模式总结遇到的问题测试当前集群状态:3主6从,启动DLedger测试方案:运行客户端Producer和Consumer程序稳定运行后,将broker的Leader通过脚本停止观察客户端程序日志为了方便日志查看,生产者速率为每秒100条,单线程客户端平稳运行之后,停掉指定broker的Leader,观察客户端程序日志Producer有两种情况:1、如果挂掉的broker当前无客户端在提交消息,则无影响可以看到,
2021-05-13 14:10:40
1091
3
原创 【RocketMQ】RocketMQ自动容灾切换DLedger集群实践
文章目录DLedger配置介绍新建DLedger集群机器规划BrokernameserverconsoleBroker配置broker-abroker-a-s1broker-a-s2broker-bbroker-b-s1broker-b-s2broker-cbroker-c-s1broker-c-s2验证旧集群升级杀掉旧的 Broker检查旧的 Commitlog修改配置重新启动 BrokerTips本文主要演示如何搭建一个多主多从的自动容灾切换的RocketMQ集群,以及如何把现有普通的Master/S
2021-04-30 14:32:06
1977
2
原创 【RocketMQ】RocketMQ ACL动手实践与踩坑记录
介绍什么是ACLRocketMQ在4.4.0版本开始支持ACL。ACL是Access Control List的简称,俗称访问控制列表。访问控制,基本上会涉及到用户、资源、权限、角色等概念,那在RocketMQ中上述会对应哪些对象呢?用户:用户是访问控制的基础要素,也不难理解,RocketMQ ACL必然也会引入用户的概念,即支持用户名、密码资源:资源,需要保护的对象,在RocketMQ中,消息发送涉及的Topic、消息消费涉及的消费组,应该进行保护,故可以抽象成资源权限:针对资源,能进行的操作
2021-04-30 14:16:22
7273
原创 【RocketMQ】写了个自动创建RocketMQ集群的shell脚本,再也不用重复造轮子了
文章目录背景准备工作下载二进制包NameServerBroker脚本文件NameServerBroker如何使用上传文件部署背景 最近公司很多业务需要使用RocketMQ,阿里的云服务昂贵且运维不及时,所以业务团队找到我们部门,由我们部门负责RocketMQ集群的技术支持,每个业务都需要使用独立的集群,而且开发、测试、线上三个环境都需要搭建,靠“人工智能”确实有点太重复造轮子了,K8S环境的话,Operator我们还没开始弄成熟,着急上线的话,也担心出问题,于是决定写个自动部署RocketMQ集群的
2021-04-23 18:16:03
863
1
原创 【RocketMQ】学习RocketMQ必须要知道的主从同步原理
[TOC]RocketMQ的Broker分为Master和Slave两个角色,为了保证高可用性(HA), Master角色的机器接收到消息后,要把内容同步到Slave机器上,这样一旦Master宕机,Slave机器依然可以提供服务。 下面介绍Master和Slave角色机器间同步功能实现的源码。同步元数据 Slave需要和Master同步的不只是消息本身,一些元数据信息也需要同步,比如TopicConfig信息、ConsumerOffset信息、DelayOffset和Subscription
2021-04-21 18:44:30
3419
原创 【Jenkins】记录第一次使用Docker+K8S+Jenkins做CI/CD
文章目录编写Docker文件Linux安装Docker创建Deployment配置Jenkins构建项目新建Service测试编写Docker文件创建DockerFile文件DockerFile:FROM java:8WORKDIR /ADD shortUrl-service-api/target/shortUrl-service-api.jar app.jarRUN bash -c 'cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &
2021-03-05 18:14:34
683
原创 【问题记录】面试官经常问:你在工作中遇到过什么比较难问题吗?(持续更新)
面试的时候,经常会有面试官会问道:你在工作中遇到的比较有挑战的问题是什么?这时候大脑就飞速运转,从大脑随机持久化的记忆库(MemoryDB)中查询出经手过的大大中中小小项目,遍历,最后冥思苦想,发现好多已经记不起来了,有些问题,当时解决的时候可能很有成就感,但是,最后在MemoryDB中只会有些许碎片被持久化下来,甚至更糟。SO,好记性不如烂笔头,从现在开始,把问题记录于此。...
2021-03-05 15:50:31
3219
原创 【工具类】AOP记录接口访问日志
虽然容器都有记录接口的访问日志,但是毕竟不是自己程序记录的,由于各种原因,也会出现偏差,再者,容器记录的访问日志,不一定满足自己的需求,所以,这时就需要用到AOP,针对接口层做日志记录具体代码如下:package cn.xdf.xadd.aop;import cn.xdf.xadd.context.UserInfoContext;import cn.xdf.xadd.lang.util.Result;import cn.xdf.xadd.util.RealIpUtils;...
2021-02-05 18:09:38
376
原创 【工具类】计算机字节数转换为人类可读的大小
最近公司要做对象存储平台,从MINIO拿到的文件大小都是long类型的byte,于是,需要如下工具类package cn.xdf.xadd.utils;import java.math.BigDecimal;/** * 计算文件大小工具类 * * @author zhurunhua * @since 2020-11-03 17:04 */public enum FileSizeUtil { /** * 单例 */ SINGLETON;
2021-02-05 17:23:58
275
原创 【Kafka】从安装到配置再到监控,教你搭建一套sasl/scram类型的Kafka集群
文章目录准备工作修改配置文件创建初始用户创建jaas文件修改启动脚本启动Kafka添加SystemdKafka监控部署jmx_exporter配置Prometheus配置Grafana后记本文的主要内容是讲解一个4个broker,SASL/SCRAM类型的Kafka集群搭建过程。准备工作安装jdk安装Zookeeper和kafka之前,需要先安装java环境,并配置环境变量,推荐Java 8。安装zookeeperKafka依赖zookeeper,安装Kafka之前需要安装zk。搭建过程参考:
2021-02-05 17:07:46
1201
原创 【zookeeper】如何快速搭建一个zookeeper集群
zookeeper集群搭建本文主要讲解一个3节点的zookeeper集群搭建过程,相比其他的中间件,zk搭建方便很多,需要修改的地方也很少,欢迎参考。准备工作下载zookeeper官网下载地址:http://mirror.bit.edu.cn/apache/zookeeper/安装JDK由于zookeeper集群的运行需要Java运行环境,所以需要首先安装 JDK。解压zookeeper压缩包由于每台机器的操作,有很多是重复的,所以可以同时操作三台机器,方法如下:SecureCRT:先
2021-02-05 16:57:24
341
原创 【Kafka】记录一次K8环境下不同存储的Kafka benchmark测试
本次主要针对k8s环境下不同的存储openebs和ceph进行benchmark测试集群环境两个集群环境出了存储不同,broker、topic信息均相同kafka Info:5个brokerTopic Info:副本数3;分区30kafka server version:2.6.0生产者测试消息数:100w;每条消息大小:10byte 存储类型 每秒发送消息数 (records/sec) 发送速率 (MB/sec) .
2020-12-29 17:54:34
658
原创 【Kafka】记录一次虚拟机环境Kafka benchmark测试
注意此性能测试在虚拟机上测试! kafka基准测试,消息发送,消息消费 集群规模为三个broker 此测试对topic不同分区进行测试 2.1版本kafka已经取消了多少线程发送的测试,所以不对发送线程进行归类测试集群环境机器:测试机器163,164,165kafka Info:3节点broker,jvm 1g,日志168小时(测试时,单独对topic进行了日志存储时间的设置,为的是自动清除数据,测试机器硬盘小)kafka version:2.1.1虚拟机配置:8 Int...
2020-12-29 17:50:17
528
原创 【Kafka】动手实践之Kafka运维脚本系列(持续更新)
文章目录kafka-delete-records.shkafka-log-dirs.shkafka-preferred-replica-election.shkafka-delete-records.sh作用:删除topic指定partition的指定offset之前的数据用法:参数是否必须备注–bootstrap-server REQUIRED设置连接的Kafka服务地址,多个以英文逗号分隔–command-config 包含需要传递给Admin Client的
2020-12-24 15:28:04
750
原创 【Linux】记录人生第一次LVM操作全过程:新建LV、扩容LV
本篇文章主要给需要对指定文件目录进行扩容或者创建LV的小白提供参考。 最近测试环境的RocketMQ总是报磁盘不足,测试环境的机器是我们自己玩的,运维不管,业务团队每次找我解决,我就使用du -h --max-depth=1尝试着删除一些无用的大文件,但是治标不治本,于是,不懂运维的开发,不是好的产品,我决定来一次扩容! 经过一阵子在知识的海洋里扑腾之后,初步了解了LVM(Logical Volume Manager)相关的一些知识:磁盘(Disk)、分区(Parti
2020-12-22 17:50:07
1588
原创 【Kafka】测试集群中Broker故障对客户端的影响
本文主要测试Partition的Leader所在Broker节点故障之后,对客户端的影响。测试信息:Topic信息:3个副本,3个分区;Producer:多线程,100条/秒、10条/秒;Consumer:不间断poll消息;测试客户端:原生的KafkaConsumer/KafkaProducer、Spring的KafkaTemplete;测试场景:Producer和Consumer运行过程中,通过K8Sdashboard删除Partition所在Leader对应的Pod;测试.
2020-12-18 11:09:21
9191
原创 【Kafka】在Kafka和ZK“分手”之前,来看看Kafka在ZK中到底保存了什么
Kafka将broker、topic、config等元数据信息存放在zookeeper中,详细的结构如下:(基于Kafka2.1.1)
2020-12-03 18:55:27
1306
原创 【Jenkins】一条简单的“java -jar jenkins.war“,轻松实现Jenkins部署
文章目录准备工作部署上传文件启动脚本启动修改文件文件路径修改内容重启准备工作下载war包:下载地址[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dbq6Jx3P-1601626184981)(/Users/xdf/Library/Application Support/typora-user-images/image-20200928150607810.png)]安装jdk1.8+部署 部署过程很简单,当作一个java程序部署即可,可以使用Tomca
2020-10-02 16:13:41
5822
原创 【RocketMQ】详解如何搭建一个多主多从的RocketMQ集群
下载二进制包下载链接:RocketMQ官网注:二进制包是编译好的,拿来可以直接用,如果不需要定制化,改动源码,可选择二进制包机器准备准备三台机器,每台机器需要安装好jdk,1.8以上版本;集群使用交叉部署:三台机器,每台各自装一个nameserver,三个broker:一个master,两个其他master的slave;目录结构:机器1:namesever-1、master-a、b-slave1、c-slave1机器2:namesever-2、master-b、a-slave1、c-sl
2020-09-03 19:37:09
3864
4
原创 【Redis】Redis4.0、5.0、6.0版本特性明细整理
本文详细整理了redis4、5、6三个版本的重要特性及功能更新,附带详细讲解及演示
2020-08-31 17:49:26
59193
2
原创 【Redis】浅谈INFO replication中的两个master_replid
首先说一下含义:master_replid是master启动时生成的40位16进制的随机字符串,用来标识master节点master_repl_offset是复制流中的一个偏移量,master处理完写入命令后,会把命令的字节长度做累加记录,统计在该字段。该字段也是实现部分复制的关键字段。slave_repl_offset同样也是一个偏移量,从节点收到主节点发送的命令后,累加自身的偏移量,通过比较主从节点的复制偏移量可以判断主从节点数据是否一致。当从实例连接到主实例时,从实例会发送ma
2020-07-24 16:25:02
4864
1
原创 【Redis】做Redis监控必须要了解的INFO命令
文章目录一、初识INFO1.1.INFO命令简介1.2.INFO返回信息二、返回信息详解2.1.Server部分2.2.clients部分2.3.memory部分2.4.persistence部分2.5.stats部分2.6.replication部分2.7.cpu部分2.8.commandstats部分2.9.cluster部分2.10.keyspace部分一、初识INFO1.1.INFO命令简介 根据官网,可总结为一句话:INFO命令以一种易于理解和阅读的格式,返回关于Redis服务器的各种信
2020-07-20 10:37:53
1346
原创 【Redis】千呼万唤始出来,Redis4最详细配置文件讲解
以下内容基于Redis4配置文件整理,基于一千多行配置文件,翻译、理解而作,也参考了一些网上的资料,希望对大家有帮助,并多多支持我~分类 配置项 默认值 是否默认启用 取值说明 备注 INCLUDES 引入/包含 include N 1、假如说你有一个可用于所有的 redis server 的标准配置模板,但针对某些 server 又需要一些个性化的设置,你可以使用include 来引入一些其他的配置文件; 2、incl
2020-07-10 17:55:33
1137
MM2自定义复制策略相关jar文件.zip
2023-12-21
connect-mirror-client-2.6.0.jar
2023-12-21
connect-mirror-2.6.0.jar
2023-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅