自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1722)
  • 收藏
  • 关注

原创 单一职责原则介绍

在最初的设计中,你可能有一个名为 Order 的类,它负责处理订单的所有方面,包括计算价格、更新库存、发送邮件通知等等。这时,按照单一职责原则,你应该将 Order 类拆分为多个独立的类,每个类只负责一项任务,如 PriceCalculator、InventoryManager 和 EmailNotifier。换句话说,每个类都应该有一个明确的任务,只做一件事,并做好这件事。这样,每当需要调整某个功能时,只需要关注相应的类即可,而不是整个 Order 类。// 主要的 Order 类现在只负责协调工作。

2024-04-26 22:30:05 371

原创 装饰品模式介绍

装饰器模式涉及四个主要角色:组件(Component)、具体组件(Concrete Component)、装饰器(Decorator)和具体装饰器(Concrete Decorator)。组件定义了接口,具体组件实现了这个接口,装饰器持有对另一个相同接口的具体组件的引用,并且可以在调用具体组件的方法前后增加自己的行为。具体装饰器则扩展了具体组件,增加了额外的功能。例如,在 Java IO 流库中,你可以使用装饰器模式来给 `FileReader` 添加缓冲能力,从而提高读取效率。

2024-04-25 23:25:01 377 1

原创 Lambda表达式特点

**API 设计**:Lambda 表达式鼓励使用函数式接口的设计模式,这改变了 Java 库的设计,例如 `java.util.function` 包下的一系列函数式接口。- **函数式编程**:Lambda 表达式引入了函数式编程的理念,使得 Java 更接近于函数式编程语言,如 Scala 和 Clojure。- **并发编程**:Lambda 表达式与 Java 8 新增的 Stream API 结合使用,可以简化并发编程,特别是与集合的操作相关。

2024-04-24 22:52:03 561 1

原创 java泛型介绍

**类型擦除的限制**:由于类型擦除,我们不能在运行时获取泛型的具体类型信息,这可能导致类型转换错误。- **类型擦除**:Java 的泛型是在运行时通过类型擦除来实现的,这意味着在运行时,所有泛型类型的具体类型信息都会丢失。- **通配符的使用**:通配符(?- **代码复用性**:由于泛型可以应用于任意层次的抽象,我们可以写出更加通用的代码,这些代码可以在不同的数据类型之间复用。- **类型安全**:泛型提供了编译时类型检查,这意味着在编译阶段就可以捕捉到潜在的类型错误,而不是等到运行时才发现。

2024-04-23 22:41:06 304

原创 spring aop介绍

在传统的对象导向编程中,这些横切关注点,如日志记录、事务管理和异常处理,往往会在多个地方重复出现,导致代码冗余和难以维护。AOP 允许我们将这些横切关注点定义为独立的“方面”(aspects),然后将它们应用到不同的方法上,而不需要修改那些方法本身的代码。通过使用 AOP,我们可以轻松地将这些常见的操作统一起来,使代码更加模块化,同时也减少了重复代码的数量。6. 环绕通知(Around advice):可以在目标方法前后执行自定义的代码,并控制是否执行目标方法本身。

2024-04-22 22:30:00 471

原创 spring版本介绍

目前(截至我知识更新的时间点),Spring Framework 的最新稳定版本是 5.x 系列,而且社区正在积极地开发下一个主版本,即 Spring 6,预计会带来更多的创新和改进,包括对新特性的支持,如 Jakarta EE 9+ 的兼容性,以及可能的性能提升和 API 改进。6. **Spring Boot**:虽然不是一个单独的版本,但它是与 Spring 框架紧密相关的项目,提供了快速启动和运行 Spring 应用程序的能力,简化了项目的初始设置过程。

2024-04-21 22:57:03 561

原创 jvm概述

5. 方法区(Method Area):又称为静态区,是JVM的一个共享区域,用于存储已加载的类的信息(如类的结构、常量池、字段、方法等)。4. 自定义类加载器(Custom Class Loader):由应用程序开发者自定义,用于满足特定需求,如加载网络上的类或加密保护的类。类加载器在JVM中的作用非常重要,它们不仅负责加载类,还参与类的卸载和替换,是JVM内存管理和类动态加载的关键部分。2. 扩展类加载器(Extension Class Loader):负责加载Java的扩展目录中的类和jar包。

2024-04-20 22:54:59 494

原创 mysql介绍

MySQL是目前最流行的关系数据库之一,尤其在Web应用方面,它常常与Apache、PHP和Linux一起使用,构成LAMP(Linux、Apache、MySQL、PHP)架构。MySQL的应用场景非常广泛,既可以用于小型网站,也可以用于大型互联网公司,如Facebook、Google等都在使用MySQL作为他们的数据存储解决方案。- 性能优化:为了保证MySQL的高效运行,你可能需要对MySQL进行性能优化,比如调整查询语句、优化索引或者调整MySQL的配置参数。

2024-04-19 22:55:19 366

原创 spring cloud介绍

Spring Cloud是一系列框架的集合,它旨在简化构建分布式系统的过程。10. **Spring Cloud Gateway** - 一个基于Spring Boot 2.x的API网关,提供了高度可配置性和性能优化。5. **Spring Cloud Security** - 基于Spring Security提供的安全工具包,为微服务提供安全控制。7. **Spring Cloud Stream** - 一个消息驱动的微服务框架,提供消息代理的抽象,使得服务间可以通过消息进行通信。

2024-04-18 22:29:02 491

原创 java语言特点

4. 跨平台:Java程序编写一次,可以在不同的操作系统上运行,实现了“一次编写,到处运行”的目标。1. 简单:Java语言的语法与C++相似,但去掉了C++中容易引起错误的部分,如指针和多继承。2. 面向对象:Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的基本特性。3. 安全:Java提供了多种安全机制,如类加载时的验证、运行时的安全检查以及异常处理等。7. 动态:Java语言支持动态加载类、动态调用方法等特性,增加了程序的灵活性。

2024-04-17 22:50:03 311

原创 redis五种类型介绍

Set是一个基于无序集合的数据类型,这意味着它可以用来快速执行多种操作,例如存储标签、好友列表或特定条件下的搜索结果等。在Set数据类型中,Redis提供了多种操作方法,例如交集、并集和差集等,以便于进行标签搜索、好友标记或搜索结果过滤等操作。String是Redis中最基本的数据类型,它可以存储任何形式的字符串数据,例如普通的文本字符串,二进制数据或JSON格式的数据。在Redis中,List可用于存储一个类似日志的连续对象数据,或者存储一个由多个层级元素组成的菜单等。

2024-04-16 22:35:16 506

原创 消息中间件介绍

有些情况下,处理数据的过程会失败。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的 广播。

2024-04-15 23:15:01 507

原创 jvm参数介绍

6. -XX:MaxPermSize:Java7及以上版本已经废弃这个参数,替代参数为-XX:MaxMetaspaceSize,用于设置元空间大小。9. -XX:PermSize:Java7及以上版本已经废弃这个参数,替代参数为-XX:MetaspaceSize,用于设置永久代大小。1. -Xmx:设置应用程序可使用的最大内存量,格式为-Xmx256m,表示最大使用256MB的内存。3. -Xss:设置Java线程栈的大小,格式为-Xss512k,表示设置线程栈的大小为512KB。

2024-04-14 23:11:01 332

原创 mysql四种引擎区别

InnoDB 具有很好的事务处理功能,支持ACID属性(原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)),并且支持行级锁,适合于高并发的 OLTP 系统。MyISAM 是 MySQL 的默认引擎。它的查询速度非常快,但是一旦 MySQL 服务关闭,所有数据都会丢失,所以通常用于临时数据的存储。总之,MySQL 中的不同存储引擎针对不同的应用场景,有各自的特点,选择合适的存储引擎可以大大提高 MySQL 的性能和稳定性。

2024-04-13 22:20:01 451

原创 JVM参数列表

XX:+UseAdaptiveSizePolicy 设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。-XX:+PrintGCDetails :记录GC运行时的详细数据信息,包括新生占用的内存大小及消耗时间。-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)-XX:SurvivorRation=n :设置年轻代中E去与俩个S去的比值。

2024-04-12 22:57:12 1214

原创 redis数据类型介绍

常用的操作包括 zadd、zrem、zrange、zrevrange、zcard、zrank、zscore 等。4. 集合(set):Redis中集合中的元素是无序的且唯一的,支持基本的集合操作,包括添加、删除、交集、并集、差集等。3. 列表(list):Redis中的列表是个有序的元素集合,支持插入、删除、查找、修剪、合并等一系列操作。常用操作包括 hset、hget、hmset、hmget、hincrby等。常用的操作包括 set、get、incr、decr、append、mset、mget等。

2024-04-11 23:15:02 341

原创 消息队列介绍

因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。0.8版本开始支持复制,不支持事务,对消息的重复,丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。虽然并行方式已经提高处理时间。用户的请求服务器,服务器收到后,首先写入消息队列,加入消息队列长度,超过最大值,则直接抛弃用户请求或跳转到错误页面。由此可以看出,引入消息队列后,用户的响应时间就等于写入数据库的时间+写入消息队列的时间(可以忽略不计),明显快于串行方式处理和并行方式处理。

2024-04-10 22:15:05 811

原创 spring框架介绍

cjlib动态代理:(当目标对象没有实现接口时可以使用cglig动态代理)cglib动态代理原理是生成目标对象的子类(继承过来的),对子类进行增强,子类即是代理对象(cglib动态代理要求目标类不能是final的)动态代理:目标对象的代理对象是由代理生成工具在程序运行时由JVM通过反射机制动态生成的,代理对象与目标对象的关系也是在程序运行时才确定的。通知:切面的一种实现。代理模式的作用:功能增强(对目标对象目标方法的返回值做处理)和控制访问(比如控制在某些条件下可以调用目标对象的方法,某些条件下不能调用)

2024-04-09 22:35:03 702

原创 消息中间件介绍

其中,异步方式指消息发送方在发送消息时不必知道接收方的状态,更无需等待接收方的回复,而接收方在收到消息时也不必知 道发送方的目前状态,更无需进行同步的消息处理,它们之间的连接完全是松耦合的,通信是非阻塞的,这种异步通信方式是由消息中间件中的消息队列及其服务机 制保障的。消息代理的基本结构如图6.2所示。消息代理具有很好的灵活性和可扩展性,并支持主动、实时的信息传递方式,当消息发布者有动态更新的数据产生时,消息代理会通过事件的发布主动通知消息订阅 者存在新的数据可用,而无需消息订阅者进行频度无法确定的查询。

2024-04-08 22:40:02 614

原创 jdk目录结构

但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java 软件开发,也不利于团体协同开发。一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者 编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。

2024-04-07 22:54:04 529

原创 Spring Cloud介绍

但Eureka中,集群是对等的,地位是相同的,虽不能保证一致性,但至少可以提供注册服务。由于网络原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累积,导致服务瘫痪,甚至导致服务“雪崩”。在SpringCloud中,目前使用的声明式调用组件,只有spring-cloud-openfeign,基于Feign 实现(Dubbo 的 Service API 接口,也是一种声明式调用的体现)。

2024-04-06 22:29:02 634

原创 JVM调优参数介绍

对于年老代比较多的应用,提高效率,如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间。分配给Java虚拟机的内存越多,系统剩余的资源就越少,因此,当系统内存固定时,分配给Java虚拟机的内存越多,那么,系统总共能够产生的线程也就越少,两者成反比。2、-XX:NewRaio和-XX:SurvivorRatio这两个参数,都是设置年轻代和年老代的大小的,设置一个即可,第一是设置年轻代的大小,第二个是设置比值,理论上设置一个既可以满足需求。

2024-04-05 22:10:00 659

原创 消息中间件介绍

其中,异步方式指消息发送方在发送消息时不必知道接收方的状态,更无需等待接收方的回复,而接收方在收到消息时也不必知 道发送方的目前状态,更无需进行同步的消息处理,它们之间的连接完全是松耦合的,通信是非阻塞的,这种异步通信方式是由消息中间件中的消息队列及其服务机 制保障的。消息代理的基本结构如图6.2所示。消息代理具有很好的灵活性和可扩展性,并支持主动、实时的信息传递方式,当消息发布者有动态更新的数据产生时,消息代理会通过事件的发布主动通知消息订阅 者存在新的数据可用,而无需消息订阅者进行频度无法确定的查询。

2024-04-04 22:12:02 660

原创 微服务架构介绍

③ 服务同步(Replicate):Eureka Server集群中多个Eureka Server之间会互相进行注册,不同Eureka Server之间会进行服务同步,用来保证Eureka Server集群内的所有实例中的数据一致性(从这个架构来看,Eureka Server所有实例所处的角色都是对等的,没有类似Zookeeper、选举过程,也不存在主从,所有的节点都是主节点。微服务强调的是服务的大小,一般根据业务维度,职责单一原则,而微服务架构是指把一个一个的微服务管理起来,对外提供一套完整的服务体系。

2024-04-03 22:46:04 962

原创 redis数据类型介绍

Redis的列表允许用户从序列的两端推入或者弹出元素,列表由多个字符串值组成的有序可重复的序列,是链表结构,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描述信息等,是标准的key-value,一般来存字符串,整数和浮点数。和set很像,都是字符串的集合,都不允许重复的成员出现在一个set中。

2024-04-02 22:52:01 407

原创 Java概述

Java的程序也就是编译的代码都会编译为class文件,class文件就是在jvm上运行的文件,只有JVM还不能完全支持class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。所有的对象都是唯一的,但同时也是具有相同的特性和行为的对象所归属的类的一部分。jdk中的jre,jdk中包含的jre,在jre的bin目录里有个jvm.dll, 另,jre的lib目录中放的是一些JAVA类库的class文件,已经打包成jar文件。对指针的丢弃是Java的明智选择。

2024-04-01 22:21:02 909

原创 jvm类加载机制概述

获取类的二进制字节流的阶段是我们java程序员最关注的阶段,也是操作性最强的一个阶段,因为这个阶段我们可以对我们的类加载器进行操作 ,比如我们想自定义类加载器进行操作完成加载,又或者我们想通过java agent来完成我们的字节码增强操作。验证(Verification):验证主要是为了保证被加载类的正确性,即装载的Class文件中的字节流保护的信息是否符合当前虚拟机的要求,并且还要求我们的信息不会危害虚拟机自身的安全,导致虚拟机的崩溃。类加载器除了用于加载类外,还可以用于确定类在java虚拟机的唯一性。

2024-03-31 22:15:02 1311

原创 消息中间件区别

目前来看,它没有什么特别的缺点,可以支持高并发下的技术挑战,可以基于它实现分布式事务,大型互联网公司和中小型公司都可以选择使用它来作为消息中间件使用,如果我来做技术选型,我首选的中间件就是它。在消息可靠性上,如果保证异步的性能,可能会出现消息丢失的情况,因为它保存消息时是先存到磁盘缓冲区的,如果机器出现故障,缓冲区的数据是可能丢失的(后续文章会讲到)。它的单机吞吐量也是万级,对于需要支持特别高的并发的情况,它是无法担当重任的。在消息可靠性上,它是可以保证数据不丢失的,这也是它的一大优点。

2024-03-30 22:42:06 566

原创 微服务架构介绍

在 水平、垂直拆分时,假设我们的业务节点所产生的日志信息需要统一汇总记录,我们就分离出了一些共用的服务(Service-mini,小服务),供我们的业务层节点请求访问,比如共用的日志处理服务,每个业务节点都需要把自己的日志发送到公共的节点上,这时,慢慢就演变成了,一个业务节点,需要多个业务节点相互配合,最后才将用户的请求返回出去,这种架构,我们称之为:分布式;推荐使用DDD领域驱动设计,来完成服务的拆分,即:按照领域来拆分(按照这种来拆分,每个人最终的结构都会是不一样的,所以,没有确切的结果!

2024-03-29 22:40:15 738

原创 Redis命令介绍

如果 key 已经存在并且是一个字符串, APPEND 命令将 指定value 追加到改 key 原来的值(value)的末尾。对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。将 key 所储存的值加上给定的浮点增量值(increment)。

2024-03-28 22:30:39 1108

原创 JVM内存模型介绍

某个线程正在执行的方法被称为该线程的当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。默认的,Eden : from : to = 8 : 1 : 1 ( 可以通过参数 –XX:SurvivorRatio 来设定 ),即: Eden = 8/10 的新生代空间大小,from = to = 1/10 的新生代空间大小。在GC中,Eden 中的对象会被移动到survivor中,直至对象满足一定的年纪(定义为熬过GC的次数),会被移动到老年代。

2024-03-27 23:15:21 915

原创 JVM介绍

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。相对于类加载的其他阶段而言,加载阶段(准确地说,是加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,因为开发人员既可以使用系统提供的类加载器来完成加载,也可以自定义自己的类加载器来完成加载。这里所设置的初始值通常情况下是数据类型默认的零值(如0、0L、null、false等),而不是被在Java代码中被显式地赋予的值。

2024-03-26 22:42:05 875

原创 消息队列介绍

JMS是Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。消息发送时指定主题(或者说通道),消息被保留在指定的主题中,消费者可以订阅多个主题,并使用主题中的所有的消息,例如现实中的电视与电视频道。在生产环境中,为了监控日志,会有大量的日志需要传输存储检索,现在比较有名的日志处理架构有ELK,在分布式应用中由于日志的数量级越来越大,存储起来对速度的要求也越快越快。

2024-03-25 22:32:31 1014

原创 RabbitMQ介绍

2.应用解耦:一个系统直接调用其他系统,若其他系统发生故障,则整个流程业务就无法完成,若在两个系统之间加上消息队列,主系统先执行完成后才会发消息给队列,有队列去转达到其他系统,而主系统不收其影响。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。使用MQ之后,A无需等待B,A可以做自己的事情,等到B完成后发消息给队列MQ,再由MQ发消息给A。六、六大核心(六大模式)

2024-03-24 22:42:35 772

原创 spring介绍

3. Spring-context模块:应用上下文,建立在1和2基础之上,提供一个框架式的对象访问方式,是访问定义和配置任何对象的媒介,使Spring成为一个框架。1. Spring-aop模块:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。1. Spring-jdbc模块:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析。

2024-03-23 23:21:13 1160

原创 微服务架构介绍

在 水平、垂直拆分时,假设我们的业务节点所产生的日志信息需要统一汇总记录,我们就分离出了一些共用的服务(Service-mini,小服务),供我们的业务层节点请求访问,比如共用的日志处理服务,每个业务节点都需要把自己的日志发送到公共的节点上,这时,慢慢就演变成了,一个业务节点,需要多个业务节点相互配合,最后才将用户的请求返回出去,这种架构,我们称之为:分布式;推荐使用DDD领域驱动设计,来完成服务的拆分,即:按照领域来拆分(按照这种来拆分,每个人最终的结构都会是不一样的,所以,没有确切的结果!

2024-03-22 23:10:42 757

原创 微服务网关介绍

API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是基于过滤器的,是阻塞IO,不支持长连接。像Nginx这类网关,性能肯定是没得说,它适合做那种门户网关,是作为整个全局的网关,是对外的,处于最外层的;而Gateway这种,更像是业务网关,主要用来对应不同的客户端提供服务的,用于聚合业务的。像Nginx这类网关,都是用不同的语言编写的,不易于扩展;

2024-03-21 23:26:05 1058

原创 MySQL介绍

MySQL是一个关系型数据库管理系统 由瑞典MySQLAB公司开发的 目前属于Oracle旗下产品 目前是最流行的关系型数据库管理系统之一 在web应用方面 MySQL是最好的应用软件 所以所有的中小型企业都会选择MySQL作为数据存储软件。NOSQL是基于键值对的 可以想象成表中的主键和值的对应关系 不需要经过SQL层的解析 所以性能很高。官方的服务支持只针对企业版 用户在使用社区版的时候出现的任何问题MySQL官方概不负责。注意:默认的mysql是不允许使用-h连接当前的超级用户。

2024-03-20 23:05:33 825

原创 微服务介绍

这种所谓的“统一的整体”表现出来的是统一风格的界面,统一的权限管理,统一的安全策略,统一的上线过程,统一的日志和审计方法,统一的调度方式,统一的访问入口等等。微服务可以按照业务功能本身的独立性来划分,如果系统提供的业务是非常底层的,如:操作系统内核、存储系统、网络系统、数据库系统等等,这类系统都偏底层,功能和功能之间有着紧密的配合关系,如果强制拆分为较小的服务单元,会让集成工作量急剧上升,并且这种人为的切割无法带来业务上的真正的隔离,所以无法做到独立部署和运行,也就不适合做成微服务了。

2024-03-19 22:40:09 942

原创 消息中间件介绍

消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。8.可能会重复消费数据,消息会乱序,可用保证一个固定的partition内部的消息是有序的,但是一个topic有多个partition的话,就不能保证有序了,需要zookeeper的支持,topic一般需要人工创建,部署和维护一般都比mq高;如果异步消息,并且开启了压缩,Kafka最终可以达到秒2000W消息级别。8.高性能的处理信息,在大数据的情况下,可以保证亚秒级的消息延迟;

2024-03-18 22:51:41 666

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除