自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 九、Spring Cloud Stream

九、Spring Cloud Stream Spring Cloud Stream在Spring Cloud体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在Spring Cloud应用程序中的开发。 1、元素(1)、Destination Binders:目标绑定器,目标指的是Kafka还是RabbitMQ,绑定器就是封装了目标中间件的包。如果操作的是Kafka就使用kafka binder,如果操作的是RabbitMQ就使用rabbitmq b...

2021-11-18 09:25:45 459

原创 十、SpringCloud与Dubbo的区别

十、SpringCloud与Dubbo的区别1、背景 Spring是专注于企业级开源框架开发,在中国,或者在整个世界上Spring框架都应用的非常广泛,开发出通用、开源、稳健的开源框架就是他们的主业。所以相对来说SpringCloud的背景比Dubbo更加强大。 Dubbo是来源于国内顶尖的阿里团队,但是曾经被阿里弃用停更,但是后来阿里2017年7月31日团队又宣布重启维护。阿里巴巴是一个商业公司,虽然也开源了很多的顶级的项目,但从整体战略上来讲,仍然是服务于...

2021-11-18 09:25:33 331

原创 Spring Cloud

目录一、Netflix Eureka 二、Netflix Zuul 三、Spring Cloud Gateway 四、Netflix Ribbon 五、Netflix Hystrix 六、Spring Cloud OpenFeign 七、Spring Cloud Bus 八、Spring Cloud Config 九、Spring Cloud S...

2021-11-18 09:25:10 262

原创 五、Netflix Hystrix

五、Netflix Hystrix(GitHub已停更) Hystrix会在某个服务连续调用N次不响应的情况下,立即通知调用端调用失败,避免调用端持续等待而影响了整体服务。Hystrix间隔时间会再次检查此服务,如果服务恢复将继续提供服务。 熔断的监控现在有两款工具:Hystrix-dashboard和Turbine。Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以直观地看到各Hystrix Command的请求...

2021-11-16 10:24:22 428

原创 四、Netflix Ribbon

四、Netflix Ribbon Ribbon是Netflix发布的云中间层服务开源项目,主要功能是提供客户端负载均衡算法。Ribbon客户端组件提供一系列完善的配置项,如,连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中列出load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。 Ribbon属于进程内负载均衡,它只是一个类库,集成...

2021-11-16 10:22:29 485

原创 三、Spring Cloud Gateway

三、Spring Cloud Gateway Spring Cloud Gateway是Spring Cloud大家族的一个新进成员,在Spring Cloud 2.0之后用于取代非官方的Zuul。Getaway基于Spring 5.0与Spring WebFlux开发,采用Reactor-netty响应式设计。1、请求流程: 客户端发起请求到达Gateway,根据HandlerMapping中找到与请求相匹配的路由,将其发送到Gateway Web Handler,...

2021-11-16 10:21:35 646

原创 二、Netflix Zuul

二、Netflix Zuul(GitHub已停更) Zuul是Netflix开源的一个API Gateway服务器,是一个微服务网关,本质上是一个有网关功能的Web Servlet应用。Zuul主要实现反向代理、负载均衡还有权限控制、过滤等功能。这个负载均衡是属于客户端的负载均衡。简单的说就是在客户端程序里面,自己设定一个调度算法,在向服务器发起请求的时候,先执行调度算法计算出向哪台服务器发起请求,然后再发起请求给服务器。 包依赖:com.netflix.zuul.http.ZuulSe...

2021-11-16 10:17:08 1361

原创 一、Netflix Eureka

一、NetflixEureka(GitHub已停更) Eureka是Netflix开源的一款提供服务注册和发现的产品,Spring Cloud对其进行了封装。它是一个基于REST服务的,服务注册与发现的组件,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。服务中心这么重要的组件一但挂掉将会影响全部服务,因此需要搭建Eureka集群来保持高可用性,生产中建议最少两台。随着系统的流量不断增加,需要根据情况来扩展某个服务,Eureka内部已经提供负载均衡的功能,只...

2021-11-16 10:16:03 1194

原创 Spring Cloud Alibaba

目录二、Seata_L_D_Y_K的博客-CSDN博客

2021-11-16 09:59:51 151

原创 三、Nacos

三、Nacos 1、简介(1)、2018年7月发布第一个release版本,Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑。 Nacos就是注册中心+配置中心的组合,等价于Eureka + Config ...

2021-11-16 09:55:06 857

原创 二、Seata

二、Seata 1、2019年,基于TXC(Taobao Transaction Constructor)和GTS(Global Transaction Service)的技术积累,阿里中间件团队发起了开源项目Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。起初起名为Fescar,后更名为Seata。(1)、设计初衷①、对业务无侵入 ...

2021-11-16 09:43:10 3875

原创 一、Sentinel

一、Sentinel 1、基础概念 2018年Sentinel开源,Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。(1)、RT(响应时间) 响应时间,处理一次请求所需要的处理时间。(2)、QPS(每秒查询率) 每秒查询率是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率...

2021-11-16 09:34:49 571

原创 RabbitMQ

目录一、RabbitMQ作用及特点 二、消息传输原理 三、AMQP_L_D_Y_K的博客-CSDN博客一、RabbitMQ作用及特点 1、作用(解耦、异步、消峰) (1)、应用解耦(系统拆分)举例:购买一件商品,需要先支付,再扣减库存,但这两个操作必须是在同一事务中,即保证操作的原子性,但是这样做的话效率是极其低下的,如果使用RabbitMQ,只需要将消息发送给各自的队列来进行消息处理,支付和扣减库存的操作之间没有了关联性,这样支付系统和库存系统之间就进行了解耦。 (2)、异步处理(异步...

2021-11-16 09:29:36 1748

原创 六、RabbitMQ应用 七、队列 八、RabbitMQ集群

六、RabbitMQ应用 1、RabbitConfig配置队列、交换器@Configurationpublic class RabbitMqConfig { /** * 定义routingKey */ public final static String ROUTING_KEY_TEST = "routingKey.thc_sob.send_task"; /** * 定义Queue名称 */ public static final..

2021-01-08 18:12:15 315

原创 四、消息发送机制、确认机制 五、避免消息重复投递和重复消费

四、消息发送机制、确认机制 唯一保证消息不丢失的是使用事务,但是性能太差,作为补偿,有了消息确认机制,并且开启消息确认机制的方法和事务模式不共存。 1、发送方确认机制和事务机制 (1)、发送方确认机制:确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。 a、确认是否到达交换器 spring-boot中配置如下:spring.rabbitmq.publisher...

2021-01-08 18:01:48 1299

原创 一、RabbitMQ作用及特点 二、消息传输原理 三、AMQP

一、RabbitMQ作用及特点 1、作用(解耦、异步、消峰) (1)、应用解耦(系统拆分)举例:购买一件商品,需要先支付,再扣减库存,但这两个操作必须是在同一事务中,即保证操作的原子性,但是这样做的话效率是极其低下的,如果使用RabbitMQ,只需要将消息发送给各自的队列来进行消息处理,支付和扣减库存的操作之间没有了关联性,这样支付系统和库存系统之间就进行了解耦。 (2)、异步处理(异步发送短信、推送消息、日志记录等) (3)、流量削峰(缓冲队...

2021-01-08 17:54:33 1288 2

原创 五、Redis集群三种方式

五、集群三种方式 1、主从复制 主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。 (1)、特点①、主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库。②、从数据库一般都是只读的,可以改为可写,但写入的数据很容易被主同步没,所以还是只读就可以,并且接收主数据库同步过来的数据。③、一个master...

2021-01-08 10:31:49 1012

原创 六、Redis内存

六、Redis内存 1、内存配置(1)、内存设置①、如果不设置内存大小或者设置内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。②、Redis一般推荐设置内存为最大物理内存的四分之三。(2)、修改文件配置 修改maxmemory大小,单位字节(3)、通过命令修改#修改内存大小config set maxmemo...

2021-01-08 10:31:37 1990

原创 四、Redis分布式锁

四、Redis分布式锁Java中的锁我们通常以synchronized 、Lock来使用它,但是只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢?分布式锁的实现有很多,比如基于数据库乐观锁、Redis、zookeeper、memcached、系统文件等。 1、命令行加锁:SET lock_key random_value NX PX 5000 执行成功,则证明客户端获取到了锁。 random_value:是客户端生成的唯一的字符串。 NX:...

2021-01-07 16:02:28 940

原创 三、Redis缓存问题

三、Redis缓存问题 Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 1、缓存击穿(热点的key,大并发) (1)、现象:缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了...

2021-01-07 14:45:03 292

原创 二、Redis的持久化

二、Redis的持久化 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。 1、方式(1)、RDB(Redis DataBase)默认①、RDB的保存有方式分为主动保存与被动保存。②、主动保存可以在 redis-cli 中输入 save 即可,被动保存需要满足配置文件中设定的触发条件,目前官方默认的触发条件可以在 redis.conf 中看到。(2)、AOF(Append On...

2021-01-07 14:42:23 480 1

原创 一、Redis基础

一、Redis基础 1、数据类型(1)、String①、概述 String类型存储的是字符串(简单的字符串、复杂的字符串(xml、json)、数字(整数、浮点数)、二进制(图片、音频、视频))。String类型是二进制安全的,String类型是Redis最基本的数据类型,最大不能超过512M。Redis是由C语言编写的,以高效和轻量著称。C语言中的字符串是基于字符数组实现的。Redis并没有直接使用了C语言的字符串结...

2021-01-07 14:37:13 276

原创 十、Sharding-JDBC

十、Sharding-JDBC 1、概述 ShardingSphere是一套起始于当当的开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。(1)、Sharding-JDBC 客户端直连...

2021-01-07 10:04:52 781

原创 九、分库分表

九、分库分表 1、分库分表背景 分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。 分库分表包括分库和分表两个部分,在生产中通常包括:垂直分库、水平分库、垂直分表、水平分表四种方式。 2、垂直分表 例:商品信息表拆分为:商品基础信息表(产地、名称、规格、价格等)、商品描述信息表(描述...

2021-01-07 10:04:43 596

原创 八、数据库主从同步

八、数据库主从同步 1、概述 MySQL主从同步是异步的,简单说就是主库开启logbin,从数据库启动的那一刻起将保存所有修改数据库结构或内容的一个文件。mysql主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。在主库里,只要有更新事件出现,就会被依次地写入到binlog里面,之后会推到从库中作为从库进行复制的数据源。 2、复制原理 master与slave之间实现整个复制过程主要...

2021-01-07 10:04:29 1309 1

原创 七、数据库连接池

七、数据库连接池 1、概念(1)、数据库 数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合。在MySQL数据库中,数据库文件可以是frm,MYD,MYI,ibd结尾的文件。(2)、数据库实例 数据库实例是程序,是位于用户和操作系统之间的一层数据管理软件,用户对数据库中的数据做任何的操作,包括数据定义、数据查询、数据维护、数据库运行控制等等都是在数据库实例下进行的,应用程序只有通过...

2021-01-07 10:04:17 618

原创 六、SQL优化

六、SQL优化 1、MySQL执行计划(Explain性能分析)(1)、Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。(2)、Explain语法:explain select … from … [where …] 例如:explain select * from cpoe_advice...

2021-01-07 10:04:04 242

原创 五、MySQL索引

五、索引 1、索引类型(1)、主键索引(PRIMARY KEY):加速查询 + 列值唯一(值不允许为Null)+ 表中该索引只能有一个(2)、唯一索引(UNIQUE):加速查询 + 列值唯一(值允许为Null)(3)、普通索引(NORMAL):仅加速查询(4)、组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并(5)、全文索引(FULLTEXT):对文本的内容进行分词,进行搜索...

2021-01-06 14:22:51 662

原创 四、InnoDB锁机制

四、InnoDB锁机制 1、表锁: 意向共享锁(intention shared lock, IS):表级意向共享锁,即表示事务有意向对表中的某些行加共享S锁。如select ... lock in share mode语句,在加行锁之前会在表上现加IS锁,这样可以提高锁冲突检测的效率,同时也可以避免事务在表级添加会使其他事务行锁失效的表级锁。 加锁SQL:select ... lock in share mode; 意向排它锁(intenti...

2021-01-06 14:22:40 580

原创 三、MySQL锁机制

三、锁机制 InnoDB:表级锁、行级锁(默认) MyISAM、MEMORY:表级锁 BDB:表级锁、页面锁(默认) 1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 注:因为表锁总是一次性获得所需的全部锁,要么全部满足,要么全部等待,所以不会出现死锁。 2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 InnoDB行锁是通过给索引项加锁实现...

2021-01-06 14:22:28 638

原创 二、MySQL存储引擎

二、存储引擎MyISAM和InnoDB区别 (1)、InnoDB支持事务,MyISAM不支持。 (2)、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。 (3)、InnoDB支持外键,MyISAM不支持。 (4)、从MySQL5.5.5以后,InnoDB是默认引擎。 (5)、MyISAM支持全文类型索引,而InnoDB不支持全文索引。 (6)、InnoDB中不保存表的总行数,select count(*)...

2021-01-06 14:22:13 176

原创 一、MySQL事务

一、事务 1、事务四大特性(ACID) 原子性(Atomicity):一个事务中的所有操作,要么都完成,要么都不执行。对于一个事务来说,不可能只执行其中的一部分。 一致性(Consistency):数据库总是从一个一致性的状态转换到另外一个一致性状态,事务前后数据的完整性必须保持一致。。 隔离性(Isolation):一个事务所做的修改在最终提交以前,对其它事务是不可见的,多个事务之间的操作相互不影响。 持久性(Durability):持久性是指一个事务一旦被提..

2021-01-06 14:21:55 355 1

原创 十二、Java反射机制

十二、Java反射机制 1、概念(1)、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质就是JVM得到字节码文件对象(.class)之后,再通过class对象进行反编译,从而获取对象的各种信息(方法、属性、类名、构造方法、父类名、实现接口等等)。 2、编译期和运行期(1)、编译期 通过编译器进行编译,Java源码(.java) —> Java字节码(.class)。...

2021-01-06 14:21:14 185

原创 十一、泛型

十一、泛型 1、概述 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用,例如,ArrayList就是一个无处不在的集合类。 泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数。把类型明确的工作推迟到创建对象或调用方法的时候才去...

2021-01-06 14:20:45 269

原创 十、Java集合

十、集合(java.util包) Collection和Map是集合框架的根接口,List、Set、Queue继承Collection接口。 1、数组和集合的区别 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。(1)、数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身。(2)、数组容量固定无法动态改变,集合类容量动态改变。...

2021-01-06 14:19:16 322 1

原创 九、NIO

九、NIO 1、概述 JAVA NIO有两种解释:(1)、一种是同步非阻塞的I/O模型(Non-blocking I/O),就是应用程序的线程需要不断的进行I/O系统调用,轮询数据是否已经准备好,如果没有准备好,继续轮询,直到完成系统调用为止。(2)、一种是IO多路复用模型(New I/O),已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。NIO是一种基于通道和缓冲区的I/O方式,它可以使用Nati...

2021-01-06 14:18:32 292

原创 八、Java IO

八、IO 1、在Java中有输入、输出两种IO流,每种输入、输出流又分为字节流和字符流两大类。 ①、字节:每个字节(byte)有8bit组成。 ②、字符:我们可能知道代表一个汉字或者英文字母。 ③、字节与字符的关系:Java采用unicode编码,通讲,2个字节来表示一个字符。在0~127整数之间的字符映射,unicode向下兼容ASCII,也就是1个字节表示一个字符。一个中文或英文字符的unicode编码都占2个字节。...

2021-01-06 14:17:45 355

原创 ReentrantLock部分源码解析

package java.util.concurrent.locks;import java.util.Collection;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;/**.

2021-01-05 11:12:57 406

原创 AbstractQueuedSynchronizer部分源码解析

/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * *//* * * * * * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to t.

2021-01-05 11:12:09 324

原创 六、Java 锁机制

六、锁机制 1、悲观锁和乐观锁 (1)、悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。 ...

2021-01-05 11:11:26 1283 1

Nacos源码解析流程图

Nacos源码解析流程图

2023-03-02

空空如也

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

TA关注的人

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