中间件
文章平均质量分 90
鹤冲天Pro
阿里云专家博主、新星计划导师、Java领域新星创作者、全栈领域优质创作者、CSDN内容合伙人、华为云享专家、腾讯云优秀博主、51CTO博客专家,交流合作私信+。有多年 Java+GO+JS全栈开发工作经验。熟练掌握:Java、K8s、Netty、TCP/IP、SpringCloud、Docker、MySQL、Redis、JS/TS、Vue、React、Go语言等技术。 座右铭:终身学习,持续进步;道阻且长,行则将至。
展开
-
Tomcat、Nginx的功能对比
Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下职责:- 管理Servlet程序的生命周期- 将URL映射到指定的Servlet进行处理- 与Servlet程序合作处理HTTP请求——根据HTTP请求生成。HttpServletResponse对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器原创 2023-12-15 09:57:16 · 1301 阅读 · 1 评论 -
技术选型:何时使用Elasticsearch而不是MySQL?
MySQL 是一个关系型数据库管理系统(RDBMS),它使用表(table)来存储结构化的数据,每个表由多个行(row)和列(column)组成,每个列有一个预定义的数据类型,例如整数、字符串、日期等。MySQL 支持主键、外键、约束、触发器等关系型数据库的特性,以保证数据的完整性和一致性 。Elasticsearch 是一个基于 Lucene 的搜索引擎,它使用文档(document)来存储半结构化或非结构化的数据,每个文档由多个字段(field)组成,每个字段可以有不同的数据类型,例如文本、数字、布原创 2023-10-30 15:25:48 · 2946 阅读 · 21 评论 -
RabbitMQ原理(五):消费者的可靠性
例如我们当前案例中,处理消息的业务逻辑是把订单状态从未支付修改为已支付。我们在用户支付成功后会发送MQ消息到交易服务,修改订单状态为已支付,就可能出现消息重复投递的情况。不过需要注意的是,交易服务并不知道用户会在什么时候支付,如果查询的时机不正确(比如查询的时候用户正在支付中),可能查询到的支付状态也不正确。因此,RabbitMQ必须知道消费者的处理状态,一旦消息处理失败才能重新投递消息。业务判断就是基于业务本身的逻辑或状态来判断是否是重复的请求或消息,不同的业务场景判断的思路也不一样。原创 2023-10-24 10:53:36 · 3324 阅读 · 25 评论 -
RabbitMQ原理(四):MQ的可靠性
消息到达MQ以后,如果MQ不能及时保存,也会导致消息丢失,所以MQ的可靠性也非常重要。为了提升性能,默认情况下MQ的数据都是在内存存储的临时数据,重启后就会消失。为了保证数据的可靠性,必须配置数据持久化。原创 2023-10-24 10:48:24 · 737 阅读 · 10 评论 -
RabbitMQ原理(三):发送者的可靠性
每个只能配置一个,因此我们可以在配置类中统一设置。我们在publisher模块定义一个配置类:log . error("触发return callback,");} });} }log . error("触发return callback,");} });} }Slf4j;import orglog . error("触发return callback,");} });} }原创 2023-10-22 09:30:00 · 747 阅读 · 23 评论 -
Redis原理(二):Redis数据结构(下)
比如字符串”32”,如果按照字符数组来解释,它包含两个字符,它们的ASCII码分别是0x33和0x32。而value则比较复杂,为了在同⼀个dict内能够存储不同类型的value,这就需要⼀个通⽤的数据结构,这个通用的数据结构就是robj,全名是redisObject。String的内部存储结构⼀般是sds(Simple Dynamic String,可以动态扩展内存),但是如果⼀个String类型的value的值是数字,那么Redis内部会把它转成long类型来存储,从⽽减少内存的使用。原创 2023-09-29 08:45:00 · 514 阅读 · 15 评论 -
RabbitMQ原理(二):SpringAMQP编程
由于`RabbitMQ`采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与`RabbitMQ`交互。并且`RabbitMQ`官方也提供了各种不同语言的客户端。但是,RabbitMQ官方提供的Java客户端编码相对复杂,一般生产环境下我们更多会结合Spring来使用。而Spring的官方刚好基于RabbitMQ提供了这样一套消息收发的模板工具:SpringAMQP。并且还基于SpringBoot对其实现了自动装配,使用起来非常方便。原创 2023-09-27 09:51:10 · 1991 阅读 · 8 评论 -
RabbitMQ原理(一):基础知识
微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为,也可以叫。但在很多场景下,我们可能需要采用的方式,为什么呢?我们先来看看什么是同步通讯和异步通讯。如图:两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发微信,但是往往响应会有延迟。原创 2023-09-26 16:53:48 · 1768 阅读 · 18 评论 -
Redis原理(一):Redis数据结构(上)
我们存储k1=v1,假设k1的哈希值h =1,则1&3 =1,因此k1=v1要存储到数组角标1位置。不管是扩容还是收缩,必定会创建新的哈希表,导致哈希表的size和sizemask变化,而key的查询与sizemask有关。Dict中的HashTable就是数组结合单向链表的实现,当集合中元素较多时,必然导致哈希冲突增多,链表过长,则查询效率会大大降低。将dict.ht[1]赋值给dict.ht[0],给dict.ht[1]初始化为空哈希表,释放原来的dict.ht[0]的内存。原创 2023-09-26 11:58:29 · 766 阅读 · 24 评论 -
Redis基础知识(三):缓存穿透、缓存击穿、缓存雪崩
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。原创 2023-09-05 13:09:13 · 410 阅读 · 23 评论 -
Redis基础知识(二):事务机制
Transaction(事务)是计算机的特有术语,它一般指单个逻辑工作单位,由一系列的操作组合而成,在这些操作执行的时候,要么都执行成功,要么都不执行,防止数据结果的不一致性。简而言之,事务是一个不可分割的工作逻辑单位。为了衡量工作单元是否具备事务能力,需要满足四个特征:ACID,即 原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。原创 2023-09-04 15:48:59 · 613 阅读 · 27 评论 -
Netty和Tomcat的区别、性能对比
Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。原创 2023-05-26 10:25:44 · 2206 阅读 · 23 评论 -
Zookeeper、Nacos、Dubbo、Kafka之间的关系
Nacos和Zookeeper都可以作为配置中心,做一些可以实时变化的配置数据存储,然后实时更新线上数据。Dbbo是一个框架,用于服务间的调度,服务程序编写使用dubbo做接口,利用dubbo是实现服务服务之间还有Zookeeper之间的通讯。原创 2023-05-23 17:34:33 · 3029 阅读 · 18 评论 -
ZooKeeper(一):基础介绍
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务。ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。这篇文章主要介绍了ZooKeeper 的基本概念、发展历史和应用场景,并详细介绍了ZooKeeper 数据模型,为后面更加深入的学习打好基础。原创 2023-05-23 16:13:22 · 1409 阅读 · 15 评论 -
SpringBoot整合logback日志
Logback 相对于 Log4J 有更多的优点(1)logback不仅性能提升了,初始化内存加载也更小了。(2)内容更丰富的文档(3)更强大的过滤器原创 2023-05-12 14:19:05 · 1145 阅读 · 21 评论 -
【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务
本文介绍基于 Kubernetes(k8s) 环境集成阿里云 私有镜像仓库 来部署一套 Dubbo + Nacos 的微服务系统,并使用 Kubernetes DNS 以及 port-forward 的方式来打通网络访问。原创 2023-03-25 11:08:59 · 2426 阅读 · 29 评论 -
RabbitMQ详解(一):RabbitMQ相关概念
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本系列是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、五种消息模型、用Docker安装RabbitMQ等。原创 2023-02-12 14:46:44 · 9039 阅读 · 19 评论 -
NoSQL数据库详细介绍
NoSQL,意思是"不仅仅是 SQL",指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。原创 2023-02-10 15:07:49 · 12171 阅读 · 12 评论 -
docker安装 kafka集群
kafka是分布式的、基于发布/订阅模式的消息队列。本文使用docker安装 kafka集群原创 2023-01-05 10:52:21 · 6623 阅读 · 8 评论 -
Redis基础知识(一):学习笔记
Redis是用key-value存储的非关系型数据库,默认有16个数据库。用来作为缓存数据库,辅助业务数据库。原创 2023-01-04 10:38:22 · 6783 阅读 · 21 评论 -
RabbitMQ学习笔记
消息队列是用来发送消息的消息中间件,本质上是队列,具有服务削峰、程序解耦、异步消息的功能。原创 2023-01-03 23:29:00 · 6630 阅读 · 5 评论