Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。如果是Spring工程中使用Redison,那直接引用Redisson即可,相关使用也可以参考之前文章<dependency> <groupId>org.redisson</groupId> <artifactI...阅读全文>>
简介lock4j是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。立志打造一个简单但富有内涵的分布式锁组件。特性简单易用,功能强大,扩展性强。支持redission,redisTemplate,zookeeper。可混用,支持扩展。开源地址:https://gitee.com/baomidou/lock4j 引入相关依赖(支持同时存在,不同方法不同锁实现)。<dependencies> <!--若使用redisTemplate作为分布式锁底层,则需要引入--> &n...阅读全文>>
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)零依赖(没有依赖其它任何类库除了JDK)在使用FastJSON时,报错Could not read JSON: Unrecognized field,详细错误如下org.springframework.data.redis.serializer.SerializationExceptio...阅读全文>>
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)零依赖(没有依赖其它任何类库除了JDK)问题起因是因为系统内所有ID使用了注解@TableId(value = "id", type = IdType.ASSIGN_ID)源码解释@Getter public&nbs...阅读全文>>
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。https://www.rabbitmq.com/ 如果不指定,系统运行,MQ就会马上进行消息的处理。但是此时系统并没有完全加载完毕,有一些内存的变量现在还没有值,这样启动肯定会有问题。这里我们需要指定一下MQ为手动启动,启动时机为系统初始化完毕。首先本地需要有RabbitMQ环境,然后创建一个Queue名字为myQueue。用Spri...阅读全文>>
Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。 它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。 下载 (官网:https://min.io/ ) cd /tmp wget https://dl.min.io/server/minio/release/linux-amd64/minio 创建...阅读全文>>
最佳实践(置顶)针对大家在测试过程中,经常出现的性能问题,以下给出3组最佳实践配置:如果生成ID速度不超过5W/s,不用修改任何配置参数如果生成ID速度超过5W/s,低于50W,推荐修改:SeqBitLength=10如果生成ID速度超过50W/s,接近500W,推荐修改:SeqBitLength=12总之,增加 SeqBitLength 会让性能更高,但生成的 ID 也会更长。算法介绍这是优化的雪花算法(雪花漂移),它生成的ID更短、速度更快。支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式环境生成数字型唯一ID。原生支持 C#/Java/Go/C/Rust/...阅读全文>>
Disruptor 是一个开源的高性能内存队列,由英国外汇交易公司 LMAX 开发的,获得了 2011 年的 Oracle 官方的 Duke's Choice Awards(Duke 选择大奖)。Disruptor 提供的功能类似于 Kafka、RocketMQ 这类分布式队列,不过,其作为范围是 JVM(内存)。Github 地址:https://github.com/LMAX-Exchange/disruptor 官方教程:https://lmax-exchange.github.io/disruptor/user-guide/index.html Disrup...阅读全文>>
一个可视化的管理工具,适用于 docker 容器和 docker 群集群,可以浏览和维护 docker 单节点 或同时使用辅助角色和管理器的群集节点。DockerUI 是一个易于使用且轻量级的 docker 管理工具。通过网页界面的操作,它更 方便不熟悉 docker 指令的用户更快地进入 docker 世界。DockerUI有一个易于使用的界面。它不需要记住 docker 指令。只需下载图片 您可以立即加入并完成部署。基于docker的特性,镜像的版本可以 直接在码头工人 UI 中更新。使用相同的设置,可以通过重新部署和替换 刚性容器,可以使用最新版本的功能。DockerUI 涵盖了 doc...阅读全文>>
从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。Spring内部线程池,其实是SimpleAsyncTaskExecutor,它不会复用线程的,设计初衷就是执行大量的短时间的任务。指在@Async注解在使用时,不指定线程池的名称。查看源码,@Async的默认线程池为SimpleAsyncTaskExecutor。默认线程池的弊端在线程池应用中,参考阿里巴巴java开发规范:线程池不允许使用Executors去创建,不允许使用系统...阅读全文>>