中间件专题
文章平均质量分 90
本专栏会分享Java系统开发常用的中间件使用、原理及遇到的问题,比如分布式缓存中间件Redis,分布式消息中间件Kafka、RabbitMQ、RocketMQ,负载均衡中间件Nginx,数据库分片中间件Sharding-JDBC,搜索引擎ES等。
Nick说说前后端
Nick Liu,目前是某外资企业后端研发,专注于互联网金融、移动支付领域的7年老兵。主要负责发卡、汇款、充值、转账等业务。自己的几个小标签:
1、互联网金融领域全栈攻城狮
2、真诚热情有爱的多面手
3、头马演讲俱乐部主持钉子户
4、自带幽默的表演系
一句话形容我自己:
向外伸展,向内修行,向阳而生。
公众号:【Nick说说前后端】
展开
-
Linux中快速搭建RabbitMQ
RabbitMQ是一个开源的AMQP实现,服务端用Erlang语言编写,支持多种客户端。用于在分布式系统存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ会绑定一些端口,安装完后,需要将这些端口添加至防火墙。4369:Erlang的端口/节点名称映射程序,用来跟踪节点名称监听地址,在集群中起到一个类似DNS的作用。:AMQP 0-9-1和1.0客户端端口,没有使用SSL和使用SSL的端口。15672。原创 2023-04-03 15:48:36 · 4532 阅读 · 5 评论 -
最近股市很火爆,你知道股票行情系统是怎么设计的吗?
我们可以将Redis作为一级缓存,从查询服务读取Redis缓存数据时,可以将数据加载到机器内存中,作为二级缓存,这样既可以降低对Redis读的压力,而且可以减少一次从Redis读取数据的请求。由于股票行情信息界面展示的数据量非常大,这时数据化序列化方式的选择非常重要,像PC端和APP端用户可能会频繁拉取数据,更加紧凑的数据序列化方式可以让传输更快。行情数据除了刷新到Redis缓存中,同时需要落地磁盘,我们可以根据个股股票代码进行数据分片,将行情数据存储到不同的数据库表或者库中。有人赢麻了,有人亏麻了。原创 2024-10-13 23:57:56 · 919 阅读 · 0 评论 -
Redis主从复制机制详解
1、什么是主从复制?2、为什么要使用主从复制?redis-server单点故障。单节点QPS有限。3、主从复制应用场景分析?读写分离场景,规避redis单机瓶颈故障切换,master出问题后还有slave节点可以使用。原创 2024-10-12 09:13:19 · 1029 阅读 · 0 评论 -
Redis持久化机制(RDB&AOF详解)
Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就丢失了,于是需要开Rredis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。RDB持久化能在指定的时间间隔对你的数据进行快照存储。客户端直接通过命令bgsave或者save来创建一个内存快照。bgsave调用fork来创建一个子进程,子进程负责将快照写入磁盘,而父进程则继续处理命令。save执行过程中,不再响应其它命令。原创 2024-10-08 18:44:36 · 1309 阅读 · 1 评论 -
Nginx反向代理配置的坑,相信你一定踩过!
做过前端开发的同学都知道,使用Vue-CLI或者Vite开发与后端联调时,可以通过构建工具支持的代理配置将请求代理到后端服务。当把前端项目部署到Nginx上时,需在Nginx上配置后端服务的反向代理,这时一不小心坑就来了。中使用服务组名称时要注意一个细节,如果组内的各个服务都指明了传输协议,在。备注:加上URI后,就实现了类似前端构建工具路径重写的效果。下面是使用Vue-CLI开发时与后端调试的代理配置,以。上,api前缀在代理到后端服务时会被重写为空字符串。时,该请求最终会路由到。时,最终请求会路由到。原创 2024-10-08 16:17:04 · 456 阅读 · 0 评论 -
数据库索引和磁盘的关系大揭秘
上面说了,1000条数据需要构建32个索引block,如果我们以32为单位,只存32条二级索引记录,再次构建二级索引,则只需要1个索引block。以这100条数据为例,我们用4个block存索引数据,25个block存储列数据。为100个记录,我们先扫描索引,最多读取4个block就可以找到该数据所在磁盘扇区,再经过1次磁盘查询就可以找到该数据,也就是说最多经过5次磁盘查询。问题又来了,如果数据量越来越大,变成10w条,100w条,就算建立10w条,100w条索引,速度还是会越来越慢,该怎么办呢?原创 2024-10-02 17:23:15 · 1096 阅读 · 0 评论 -
快速了解:MySQL InnoDB和MyISAM的区别
除非在创建表的时候手动指定存储引擎,不然创建的表都是InnoDB管理的表。除了InnoDB,MySQL还支持其它的存储引擎,比如。今天我们根据官方文档详细聊聊InnoDB和MyISAM的区别。在MySQL 8.0中,原创 2024-10-01 12:55:02 · 957 阅读 · 0 评论 -
MySQL那些事(InnoDB架构和存储结构)
本篇文章比较偏概念性,好让大家对InnoDB的内存结构和磁盘结构有个大概的了解,更加详细的内容以及相关MySQL参数设置参考MySQL 8.0官方文档。下一节我们将具体聊聊MySQL中InnoDB和MyISAM存储引擎的区别。原创 2024-09-30 17:02:34 · 901 阅读 · 0 评论 -
一条sql在MySQL中是怎么执行的
到达应用层时,会对执行的SQL进行分类,如果是查询语句会对语句进行解析,找到对应的表,要检索的字段和查询条件。当查询数据时,MySQL服务器会通过存储引擎检索数据,存储引擎决定数据怎么存储,以及具体如何从磁盘中查询数据。首先不同语言客户端通过连接器连接mysql,mysql会进行权限验证,连接限制,连接缓存,线程重用等等。同时优化器会根据表是否有索引等制定执行计划检索数据,最后优先去缓存层中查询数据,缓存中没有则从磁盘读取。该层主要包含SQL接口层,解析器,优化器,和缓存层,各层各司其职。原创 2024-09-28 17:42:30 · 728 阅读 · 0 评论 -
一篇文章让你秒懂MySQL中的各种锁
InnoDB实现了标准级别的锁,这种锁主要有两种类型,共享锁(S)和独占锁(X)。共享锁(S)允许获得锁的事务读行数据。独占锁(X)允许获得锁的事务去更新或者删除行。事务T2如果请求获取共享锁(S),那么将会授权成功。T1和T2两个事务都会持有对数据行R的共享锁(S事务T2如果请求获取独占(X),那么授权将会失败,事务T2必须等待T1释放共享锁(S)。备注:共享锁和读占锁只是一种概念,表级别和行级别都有共享锁和独占锁。根据功能划分:分为共享锁(S)和独占锁(X),S锁和X锁互斥。根据粒度。原创 2024-09-27 17:07:49 · 786 阅读 · 0 评论 -
XXL-JOB实践:从零开始构建你的任务调度系统
负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块。是一个分布式任务调度平台,部署方便,使用简单,开箱即用,目前已经有600多家公司线上已经接入。启动执行器后,我们会发现三个作业处理器注册成功,并且执行器启动了内置服务器,并暴露。这里我们添加了两个任务,可以点击操作中的执行一次进行调度测试。配置为执行器与调度中心通讯的访问token,为可选配置。主要由两个模块组成,一个是调度中心,一个是执行器。原创 2024-09-06 17:43:06 · 1037 阅读 · 1 评论 -
Vue项目Nginx子目录部署(Vite和Vue-CLI)
生产环境中Vue项目我们一般会部署在域名的子目录下,在了解如何部署时我们先了解下Vue构建相关的基础知识。Vue CLI目前已经处于维护状态,一般老项目可能还在用它来开发,Vue CLI打包时基于。目录下找名为hwc的目录,以及该目录下的文件,如果都没有找到,则回退访问。,如果想在Nginx中指定前缀访问静态资源和文件,需要在打包构建时配置。中进行修改,指定base配置即可,这里我们指定了。目前是Vu3主流构建工具,打包配置我们可以在。,也就是说所有的静态资源都会带上该前缀。支持3种历史记录模式,分别是。原创 2024-05-20 00:46:48 · 644 阅读 · 1 评论 -
Nginx Location配置详解
当不添加匹配标识时,Nginx服务器首先在server块的各个location块中搜索是否有。指令我们可以指定资源访问的根目录,但是我们会发现访问的uri会附加到指定的文件目录下。其中uri变量是待匹配的请求字符串,可以是包含有正则表达式的字符串,称之为。和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。原创 2024-05-11 16:03:46 · 1450 阅读 · 3 评论 -
Linux快速安装Nginx和重新添加模块
配置完Ngnix模块后,再到源码根目录下执行如下命令对应用程序进行编译和安装。当看到如上信息时说明Nginx已经安装成功了,我们可以看到安装的Nginx的。目录下,解压后可以看到如下文件,这里我自己写了个简单的脚本。查看Nginx版本信息,可以看到新的模块是否添加成功。再对nginx源码进行重新编译,输入以下命令。脚本内容如下,这里我们共配置了4个模块。编译完成后,然后我们可以在安装目录。下,然后对Nginx进行重启即可。为安装目录,这里我的安装目录为。,输入以下命令添加新的模块,,用来配置常用模块。原创 2024-04-29 14:37:38 · 1177 阅读 · 1 评论 -
Spring RabbitMQ那些事(2-两种方式实现延时消息订阅)
被消费者nack(negatively acknowleged)的消息。TTL过期后未被消费的消息。超过队列长度限制后被丢弃的消息。备注:更多信息请参考RabbitMQ中的。原创 2023-11-26 13:28:48 · 1988 阅读 · 7 评论 -
Spring RabbitMQ那些事(1-交换机配置&消息发送订阅实操)
*** 定义4个队列*/@Bean@Bean@Bean@Bean/*** 定义Fanout交换机和对应的绑定关系*/@Bean/*** 定义多个Fanout交换机和队列的绑定关系* @return*/@Bean备注:这里我们将4个队列绑定到了名为的交换机上。@Bean@Bean备注:这里我们定义了名为的交换机并通过路由key将queue-3绑定到了该交换机上。@Bean@Bean这里我们定义了名为。原创 2023-11-07 18:03:33 · 1542 阅读 · 5 评论 -
RabbitMQ中的核心概念和交换机类型
下面让我们用一幅图来总结一下RabbitMQ中的概念模型,所有RabbitMQ对象以虚拟主机区分,如下:上面我们介绍了4种交换机,Fanout交换机Direct交换机Topic交换机和Headers交换机,其实还有一种是默认交换机。发送消息时如果只指定了交换机而没有指定队列,那么消息会通过默认交换机直接转发到指定的队列中,比如上图中的消息1。消息2和消息3发送到了exchange-2上,该交换机类型为Direct,因此消息2会通过路由keyorder发送到queue-3上,而消息3会通过路由key。原创 2023-10-19 19:34:27 · 783 阅读 · 2 评论 -
Dubbo新版本zk注册中心连接问题
目录一、使用zkclient作为zk连接客户端问题1、Maven依赖如下2、服务提供者配置文件3、启动服务提供者4、原因分析5、解决办法(1)降低dubbo版本(2)添加ZookeeperTransporter拓展实现二、使用curator作为zk连接客户端版本问题1、Maven依赖如下2、服务提供者配置文件3、启动服务提供者4、curator作为zk连接客户端正确依赖三、总结一、使用zkclient作为zk连接客户端问题1、Maven依赖如下 <dependency>原创 2020-10-23 23:25:16 · 5233 阅读 · 4 评论 -
Sentinel Dashboard支持规则配置持久化至Nacos
Sentinel控制台本身不支持规则配置持久化到Nacos,这里我们对Sentinel控制台的源代码进行了一些修改,支持限流和降级规则同步到Nacos。原创 2022-05-01 02:36:56 · 1558 阅读 · 11 评论 -
Nacos快速安装部署
目录一、Nacos简介二、Nacos单机模式部署1、下载编译后压缩包2、修改配置文件application.properties3、执行数据库脚本4、启动服务器5、查看启动日志三、登录Nacos控制台一、Nacos简介Nacos是阿里巴巴开源的组件,致力于帮助发现、配置和管理微服务,帮助我们快速实现动态服务发现、服务配置、服务元数据及流量管理。二、Nacos单机模式部署1、下载编译后压缩包我们直接从Github上下载Nacos稳定版本即可,我这里下载的是1.4.3版本。下载完直接解压即可:t原创 2022-04-21 09:14:58 · 10471 阅读 · 0 评论 -
Spring Cloud Alibaba & Spring Cloud 整合Dubbo和Nacos
Spring Cloud Alibaba与Dubbo和Nacos整合,到底有哪些坑呢?请看文章!!原创 2022-04-17 03:10:06 · 2452 阅读 · 0 评论 -
云服务器Redis Sentinel部署及客户端公网IP连接
目录1、配置文件(1) Redis主节点配置文件(2) Redis从节点配置文件(3) Sentinel(哨兵)配置文件2、启动Redis服务和哨兵(1) 启动3个Redis服务(2) 启动3个哨兵3、客户端连接(1) 客户端哨兵读写分离配置(2)故障转移测试用例(3)停掉master节点1、配置文件准备了6个配置文件,3个Redis服务配置文件,3个哨兵配置文件,部署方式为一主二从三哨兵。(1) Redis主节点配置文件redis-6380.conf# 配置文件进行了精简,完整配置可自行和官方提原创 2020-09-02 16:18:58 · 2887 阅读 · 0 评论 -
云服务器Redis集群部署及客户端通过公网IP连接问题
目录1、配置文件2、启动服务并创建集群(1)启动6个Redis服务(2)通过客户端命令创建集群3、客户端连接(1)客户端配置(2)测试用例(3)错误日志分析4、问题解决(1)查Redis.conf配置文件(2)修改配置文件(3)重新启动Redis服务并创建集群1、配置文件准备了6个配置文件,redis-6381.conf,redis-6382.conf,redis-6383.conf,redis-6384.conf,redis-6385.conf,redis-6386.conf,配置文件内容如下:#原创 2020-08-14 15:40:17 · 7606 阅读 · 20 评论