- 博客(156)
- 资源 (1)
- 收藏
- 关注
原创 consul服务注册发现与配置中心
Eureka已经停止更新了,consul是独立且和微服务功能解耦的注册中心,而不是单独作为一个独立微服务嵌入到系统中。
2024-09-20 17:15:56 1043
原创 RocketMQ -日志文件路径、级别的配置
1、RocketMQ引入之后,生成和消费数据产生大量日志,导致磁盘内存不足。需要提高日志输出级别2、修改RocketMQ的日志路径。
2024-08-19 16:18:00 1161
原创 RocketMQ-Dashboard 控制台使用详解
RocketMq的,有运维页面,驾驶舱,集群页面,主题页面,消费者页面,生产者页面,发布管理页面,消息查询页面等,为开发和运维提供了强大的监控功能。
2024-05-15 16:15:20 4796
转载 深入理解RocketMQ是如何做到高性能的
对rocketmq稍有了解的同学,都知道它主要由4部分组成,Producer、Consumer、Broker、NameServer。Broker作为Rocket MQ的核心,提供了强大的数据存储能力,可以把亿万级的消息存储在服务器磁盘上。它决定了生产者写入的吞吐量,决定了消息不能丢失,决定了消费者消费消息的吞吐量。
2024-05-06 17:29:28 72
原创 Prometheus通过rocketmq-exporter监控Rocketmq
RocketMQ-Exporter 主要是配合 Prometheus 来做监控,下面来看看当前在 Expoter 中定义了哪些监控指标和告警指标。
2024-04-30 17:31:37 2001
原创 【Mac】mac 安装 prometheus 报错 prometheus: prometheus: cannot execute binary file
这里下载的是。
2024-04-30 16:29:38 985 1
原创 mac安装软件遇到无法验证开发者的解决方法
无法打开“”,因为无法验证开发者。正在安装的软件里面有的包被系统判定为不安全的。2、系统设置-隐私与安全性,点击打开按钮。
2024-04-30 16:04:36 2520
原创 RocketMQ 消息重复消费
触发消息后,在1s内收到了两次消息消费的日志。消息消费日志重复,reconsumeTimes=0,主机实例也不同,说明是同一条消息被消费了两次。
2024-04-26 16:08:16 436
转载 RocketMQ客户端、服务端参数配置表
RocketMQ对于JAVA程序员来说应该都不陌生,RocketMQ是一款由阿里巴巴开源出来的一款消息中间件,各个大厂基本上都在用的这么一个中间件,其优点自不必言说,所以今天就不给大家来剖析RocketMQ了。我们来分享点不一样的,相信大家在用RocketMQ时或多或少都会遇到一些问题,而比较常见的就是当其报错或配置一个参数时,往往一些新手就会懵逼这是啥意思呀,不知道如何处理。所以小编在这里整理了一份《RocketMQ全部参数配置表》,帮助大家来更好的使用RocketMQ。废话不多说直接上干货。
2024-04-23 14:45:21 325
原创 RocketMQ 消息发送system busy、broker busy、RemotingTooMuchRequestException原因分析与解决方案
system busy、broker busy这个错误,其本质是系统的PageCache繁忙,通俗一点讲就是向PageCache追加消息时,单个消息发送占用的时间超过1s了,如果继续往该Broker服务器发送消息并等待,其TPS根本无法满足,哪还是高性能的消息中间了呀。故才会采用快速失败机制,直接给消息发送者返回错误,消息发送者默认情况会重试2次,将消息发往其他Broker,保证其高可用。
2024-04-23 10:59:40 1898
原创 MQ选型?kafka,RocketMQ,rabbitMQ,ActiveMQ对比
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用MySQL作为消息存储媒介,支持水平扩容。为了进一步降低成本,阿里中间件团队认为Notify可进一步优化。2011年初,Linkedin开源了kafka, 阿里中间件团队在对kafka做了充分的review之后,被kafka的无限消息堆积能力、高效的持久化速度深深吸引,但同时发现kafka主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下,还有若干特性不满足。
2024-04-22 17:21:13 1398
原创 RocketMQ消息重试机制
还有另外一种方式,继承RocketMQListener类,增加注解RocketMQMessageListener,通过设置消息的参数来监听消息,maxReconsumeTimes默认为16次,可以通过设置,修改重试的次数。如果严格按照上述重试时间间隔计算,某条消息在一直消费失败的前提下,将会在接下来的 4 小时 46 分钟之内进行 16 次重试,超过这个时间范围消息将不再重试投递。,若达到最大重试次数后消息还没有成功被消费,则消息将被投递至。,即消费失败后,失败消息不再重试,继续消费新的消息。
2024-04-15 17:43:57 2344
原创 RocketMQ从安装、压测到运维一站式文档
SendTPS:生产消息的TPSMax RT:最大响应时间(毫秒)Average RT:平均响应时间(毫秒)Send Failed:发送失败的总请求数Response Failed:返回失败的总响应数TPS: 消费的TPSFAIL:消费失败的总数AVG(B2C):broker到Consumer的平均响应时间(毫秒)AVG(S2C):nameserver到Consumer的平均响应时间(毫秒)MAX(B2C): broker到Consumer的最大响应时间(毫秒)
2024-04-12 17:26:52 2066
转载 Redis实现限流
面对越来越多的高并发场景,限流显示的尤为重要。当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。
2023-11-30 16:38:15 174
转载 Spring Cloud全家桶
创建一个订单后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分针对上述流程,我们需要有订单服务、库存服务、仓储服务、积分服务。用户针对一个订单完成支付之后,就会去找订单服务,更新订单状态订单服务调用库存服务,完成相应功能订单服务调用仓储服务,完成相应功能订单服务调用积分服务,完成相应功能至此,整个支付订单的业务流程结束下图这张图,清晰表明了各服务间的调用过程:好!
2023-11-28 17:05:16 238
转载 阿里开源中间件一览
Tair是阿里巴巴自主研发的高性能、分布式、可扩展、高可靠的 key/value 存储系统。Tair相较于Redis最大的区别是其底层支持多款引擎(MDB、RDB、LDB),不同的引擎工作于不同的场景(这一点有点像MySQL的插件化存储引擎,但是又不是完全像。MySQL对外接口是统一的,Tair的RDB引擎和另外两者数据模型差异较大)。MDB:完全依赖于内存,高读写,不支持持久化缓存,降低对后端数据库的访问压力,所有需要后端有持久化的DB如MySQL。
2023-11-28 16:10:15 1090
原创 Redis常见面试问题
Redis有一些操作的时间复杂度不是O(1),例如,删除List、Hash、Set或ZSet类型的key,其复杂度为O(N),N代表元素个数。这意味着如果要删除的key包含大量元素,那么该操作所需的时间将与元素数量成正比。1、基于List的lpush(生产消息)和rpop(消费消息),利用先进先出的特性。这是将一个值推入列表的命令。例如,你可以使用LPUSH queue_name item将项目放入队列。: 这是从列表中删除并返回一个元素的命令。如果队列为空,这个命令将等待指定的超时时间。
2023-11-26 10:37:47 644
转载 Redis实现分布式锁的7种方案
分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。
2023-11-26 10:27:10 187
原创 Kafka常见面试问题
Apache Kafka是一种分布式流处理平台,它使用分布式复制协议来实现高可用性和容错性。在Kafka中,每个主题(topic)都有一个或多个分区(partition),每个分区都有一组副本(replica),其中一个是主副本(leader),其余的是从副本(follower)。主副本负责处理来自消费者的所有读写请求,而从副本则扮演备份的角色,并在主副本出现故障时接管其职责。
2023-11-24 11:25:34 1088
转载 缓存一致性问题解决方案
通常情况下,我们使用缓存的主要目的是为了提升查询的性能。大多数情况下,是这样使用缓存的:当数据库有数据更新时,在很长的一段时间内(决定于缓存的过期时间),用户请求从缓存中获取到的都可能是旧值,而非数据库的最新值。那么,该如何更新缓存呢?讨论四种方案前先统一两个认知,以便更好理解四种方案:缓存一致性问题没有绝对可靠的方案,我们只能让两者尽量接近,但无论如何也不能百分百达到一致性效果。缓存和数据库,无论先处理谁,只要后者有延迟/失败,都会导致不一致的情况,这也正是缓存不一致的根本原因所在。
2023-11-24 10:19:08 191
转载 MQ的消息的重复消费和丢失问题如何解决?MQ的消息堆积问题如何解决?MQ的消息顺序性如何保证?MQ如何处理生产者和消费者的高并发情况?
消费者在处理消息时,需要保证对同一条消息的多次消费不会产生副作用。可以通过在消费端使用唯一标识来判断消息是否已经被消费过,例如使用数据库的唯一索引、使用分布式锁等方式来保证幂等性。:MQ一般提供消息确认机制,例如ACK机制。消费者在成功处理一条消息后,发送ACK给MQ,表示该消息已经被成功消费。如果消费者在处理消息时发生异常或失败,可以不发送ACK,MQ会将该消息重新发送给其他消费者进行处理。通过消息确认机制,可以避免消息丢失。
2023-11-08 07:03:45 532
转载 Spring 如何解决循环依赖
循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如A引用B,B引用C,C引用A,则它们最终反映为一个环。结论先行:1.构造器循环依赖----初始化失败2.field属性注入并且是单列模式循环依赖(setter方式)----初始化成功3.field属性注入循环依赖(prototype)----初始化失败。
2023-11-07 19:35:47 81
转载 TCP 为什么要三次握手和四次挥手
总结一下TCP 三次握手和四次挥手(非常重要)相关的面试题(这篇文章中有这些问题的答案):为什么要三次握手?第 2 次握手传回了 ACK,为什么还要传回 SYN?为什么要四次挥手?为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?为什么第四次挥手客户端需要等待 2*MSL(报文段最长寿命)时间后才进入 CLOSED 状态?为了准确无误地把数据送达目标处,TCP 协议采用了三次握手策略。
2023-11-07 17:33:33 74
原创 缓存击穿,穿透,雪崩及其解决方案
大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中。导致这些请求直接到了数据库上,根本没有经过缓存这一层,对数据库造成了巨大的压力,可能直接就被这么多请求弄宕机了。缓存穿透举个例子:某个黑客故意制造一些非法的 key 发起大量请求,导致大量请求落到数据库,结果数据库上也没有查到对应的数据。也就是说这些请求最终都落到了数据库上,对数据库造成了巨大的压力。缓存击穿中,请求的 key 对应的是 热点数据 ,该数据 存在于数据库中,但不存在于缓存中(通常是因为缓存中的那份数据已经过期)
2023-11-07 17:27:42 299
转载 Mysql面试题
数据库:存储数据的物理操作系统文件或其他形式文件的集合数据库实例:MySql数据库实例由后台线程以及一个共享内存区组成,负责操作数据库文件。MySql是一个单进程多线程架构的数据库,MySql数据库实例在系统上表现就是一个进程。索引是对数据库表中一列或多列的值进行排序的数据结构,用于快速访问数据库表中的特定信息。Buffer Pool 是 InnoDB 存储引擎层的缓冲池,不属于 MySQL 的 Server 层,注意跟 8.0 删掉的“查询缓存”功能区分。
2023-11-05 09:31:46 79
原创 Java锁常见面试题
在Java中的锁主要是用于保障线程在多并发的情况下数据的一致性。就是实现并发的原子性。不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续。如果没有外部干预,线程会一直阻塞无法往下执行,这些一直处于相互等待资源的线程就称为死锁线程。
2023-11-04 10:27:28 1939
原创 java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
在Java并发编程中,ThreadLocal、Volatile、Synchronized和Atomic关键字都是非常重要的工具。ThreadLocal用于创建线程本地变量,以避免线程安全问题;Volatile用于保证变量的可见性;Synchronized用于修饰方法或代码块,以实现线程安全;Atomic类用于提供原子性操作。
2023-11-03 19:47:54 617
转载 线程池详解
在scheduleAtFixedRate中,有时任务的执行时间大于延迟任务设定的时间间隔,那么当任务执行完之后才会开始执行下次任务,此时并不是以设定执行周期来执行任务。2. Executors.newCachedThreadPool:创建⼀个可缓存的线程池,若线程数超过处理所需,缓存⼀段时间后会回收,若线程数不够,则新建线程;1.Executors.newFixedThreadPool:创建⼀个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;
2023-11-03 17:58:32 185
原创 ScheduledExecutorService:Java 线程池接口,指定时间或周期性执行任务
ScheduledExecutorService 是一个 Java 线程池接口,用于在指定时间或周期性地执行任务。它可以在指定的时间延迟后执行一次或周期性地执行任务,并且可以取消任务。1、常用于,例如定时备份数据、定时发送邮件、定时处理任务等。它提供了一种可靠的方式来调度重复的任务,并且可以处理异常情况。2、用于延迟执行任务,例如在应用程序启动后延迟一段时间再执行某些初始化操作。
2023-06-25 15:49:31 1606
原创 设计模式:策略设计模式+工厂设计模式
使用策略设计模式,代码更优雅,扩展性可读性都会更好。如果新增实例,只需要增加一个实例的实现类即可。1)去除大量的if else/switch case判断逻辑,代码更简洁;2)代码优雅、提高代码的可读性;3)符合代码开闭原则、后期扩展性好、方便后期维护;1)如果策略实现类很多,会造成策略类膨胀,不易管理;2)策略类的实现功能和用途需要清楚。
2023-06-25 14:43:29 686
原创 git、gerrit使用
一、merge及解决冲突要合并的分支:feature_log4php_pop 合并到的分支:regression_20160714 1、从git上拉代码2、git fetch --all3、git checkout regression_20160714 切换到合并到的分支4、git merge --no-ff feature_log4php_pop 将要合并的分...
2023-04-25 11:36:39 695 1
原创 gson使用注意
Jackson进行JSON解析和序列化Jackson提供了一系列注解,方便对JSON序列化和反序列化进行控制,下面介绍一些常用的注解。@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。@J...
2019-10-24 08:24:52 355
原创 高并发场景
参考:https://blog.thankbabe.com/2016/09/14/high-concurrency-scheme/非常赞!1、服务器架构一个可以支持高并发的服务少不了好的服务器架构服务器:负载均衡,分布式数据库:主从分离,集群redis主从集群2、缓存对于高并发查询操作,优先查询缓存,如果缓存不存在,再进行DB查询,将查询结果缓存
2018-01-20 11:38:51 2498
转载 Spring面试题
转自:http://www.importnew.com/11657.htmlSpring 概述1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。Spri
2018-01-20 11:38:14 329
原创 Http Get和Post请求的区别
GET和POST是HTTP请求的两种基本方法HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接1、缓存GET 请求能够被缓存,默认的请求方式也是有缓存的POST请求默认不会缓存2、GET把参数包含在URL中,POST通过request body传递参数3、安全性GET的所有参数全部包
2018-01-20 11:37:02 408
转载 zookeeper应用场景
Zookeeper是一个高可用的分布式数据管理和协调框架,并且能够很好的保证分布式环境中数据的一致性。在越来越多的分布式系统(Hadoop、HBase、Kafka)中,Zookeeper都作为核心组件使用。简单的说,zookeeper=文件系统+通知机制。分布式系统的单点故障----Master选举zookeeper数据一致性----Paxos场景应用1 数
2018-01-20 11:32:32 360
转载 Spring 事务管理详解
Spring 事务管理详解http://blog.csdn.net/zhanghaor/article/details/57084350http://blog.csdn.net/zhanghaor/article/details/64519043一、事务的基本原理一个数据库事务是一个被视为单一的工作单元的操作序列,这些操作应该要么完整地执行,要么完全不执行。事务的概
2018-01-20 11:31:04 303
转载 字符串的最大回文子串
参考:http://blog.163.com/zhaohai_1988/blog/static/2095100852012716105847112/https://discuss.leetcode.com/topic/23498/very-simple-clean-java-solution1、动态规划时间复杂度O(N2), 空间复杂度O(N2) 动态规划就是暴力法的进化
2018-01-20 11:30:26 313
原创 Activiti重要知识点
咖啡兔老师的视频:http://www.osforce.cn/course/308/learn#lesson/1919Activiti提供了多种创建流程引擎的方式,ProcessEngineConfiguration.buildProcessEngine(),或者ProcessEngines.init()方法来创建ProcessEngine实例。一个ProcessEngine实例代
2018-01-20 11:29:24 651
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人