自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2、Kafka整体架构介绍

1、kafka整体架构角色介绍:①Producer:消息生产者,负责发送消息到kafka集群。②Broker : kafka服务端,负责接收客户端(producer/consumer )请求、存储消息、协调消费组等。③Consumer:负责从Broker上拉取消息进行业务处理。④Zookeeper:负责协调整个Broker集群,负责选取控制Broker、存储集群元数据、topic路由信息存储等。⑤Log:磁盘上的日志目录,消息就是存储在log中。...

2022-04-15 21:28:11 2174

原创 sleuth(1):sleuth + zipkin实战

1、什么是链路监控? 链路监控指的是,监控程序运行的整个调用链,简单来说就是服务之间的相互调用的整个链路,例如我们的网关服务 call 用户服务,然后用户服务 call 订单服务,那么这个调用链路就是如下流程: 用户 ---------> 网关服务 ------> 用户服务 ---------> 订单服务,这个链路中回发起3次请求,分别如下: request1:用户请求网关服务 request2:网关服务调用用...

2021-01-18 13:36:17 438

原创 spring-cloud-gateway(2)--->spring-cloud-gateway如何实现动态路由

1、什么是动态路由,也就是在网关服务不停机的状态下,动态的添加route或者删除route,这就是动态路由的定义,我们在前面实战zuul的时候也提到过这个问题,当时的实现动态路由的方式是,使用配置中心进行route的配置,然后在增删路由的时候,使用actuator进行手动刷新。 当然在 spring-cloud-gateway中也可以这样实现,但是 spring-cloud-gateway中还为我们提供了另一种方式,那就是直接使用actuator API,官网地址如下:https://docs.spring

2021-01-14 18:09:02 1340

原创 spring-cloud-gateway(1)--->spring-cloud-gateway的基本使用

1、API网关 API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。网关应当具备以下功能:性能:API高可用,负载均衡,容错机制。 安全:权限身份认证、...

2021-01-14 17:13:12 527

原创 Zuul(1)--->Zuul的基本使用

1、spring-cloud-starter-netflix-zuul的基本使用 1.1、 依赖y引入:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency> 1.2、激活方式@EnableZuu...

2021-01-14 15:24:46 481

原创 Hystrix(1)--->hystrix的基本使用

1、hystrix是Netflix开发的用于分布式限流熔断的组件,其作用就是进行系统的过载保护,接下来我们来看看在spring-cloud中如何使用hystrix。2、hystrix的作用及就是过载保护,就像我们家庭用电中的保险丝一样,当负载较大的时候保险丝回进行熔断,以保护哥电路元器件,在网络应用系统中也同样回面临这样的问题,因此hystrix出现了。3、hystrix熔断的方式一共有两种: 第一种:超时触发熔断,顾名思义就是当业务代码执行超时的时候会触发断路器进行熔断。 ...

2021-01-12 15:40:42 362

原创 spring-cloud-config(2):spring-cloud-config-client的配置中心的使用以及原理分析

1、spring cloud 是使用了spring boot来进行承载。2、spring boot读取外部化配置的方式是使用spring的事件机制,在spring boot中实现了一个事件监听器ConfigFileApplicationListener来进行外部化配置。3、ConfigFileApplicationListener会管理配置文件,默认的配置文件名称是application,文件的后缀名称可支持properties、yml两种方式。4、在spring boot中有很多的事件监听器,

2020-12-25 16:54:57 1062

原创 spring-cloud-config(1):spring-cloud-config-server的使用

spring-cloud-config-server 基本使用1、依赖jar如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.spri...

2020-12-25 16:46:42 338

原创 Eureka(5)--->eureka服务端集群的原理分析

1、前面我们分析了eureka服务端实现原理、客户端实现原理,今天我们来分析一下eureka集群同步的原理,如何搭建以及使用eureka集群我们在前面以及演示过了,此处不在过多累赘。2、eureka服务端也是客户端: 前面我们分析eurekaServer端的时候提到过,服务端依赖了客户端的实现,且也会在服务端启动之前就构建一个客户端,那么为啥需要这样做呢????? 答:原因就是服务端启动的时候需要去同步其他节点的服务注册表数据。 接下来我们来验证是否是这样是实现的。 ...

2020-12-25 15:58:04 443

原创 Eureka(4)--->spring-cloud生态中对服务发现的抽象以及eurekaDiscoveryClient的实现原理

1、spring-cloud生态中对服务发下的抽象核心如下: 主要发接口就是 DiscoveryClient 以及注解 @EnableDiscoveryClient2、EurekaDiscoveryClient的实现原理: EurekaDiscoveryClient 实现了spring-cloud生态中定义的 DiscoveryClient 接口,EurekaDiscoveryClient的核心属性就是Netflix的EurekaClie...

2020-12-24 12:49:04 648

原创 Eureka(3)--->eureka服务端实现原理分析

1、在使用eureka的时候,我们分别演示了服务端的使用以及客户端的使用,今天我们来分析一下eureka服务是如何实现的,我们先抛出几个问题: 1.1、eureka服务端是如何整合spring-cloud的? 1.2、eureka服务端是如何存储服务实例数据的? 1.3、eureka服务端是如何跟客户端进行交互的? 2、上面抛出两个问题接下来我们一 一解答: 2.1、解答eureka服务端是如何整合spring-cloud的? ...

2020-12-22 13:56:04 610

原创 Eureka(2)--->eureka的自我保护机制

1、前面文章中我们主要演示了eureka的使用,今天我们来学习eureka的自我保护机制。2、什么是eureka的自我保护机制? 默认情况下,如果Eureka Server在一定时间内(默认60秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服 务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。 spring官方的定义是:自我保护...

2020-12-15 19:03:19 869

原创 Eureka(1)--->使用eureka

1、Eureka是什么,有何作用? eureka是一个组件,用来实现服务的注册与发现,我们在微服务的体系中,会有一个服务中心,这个服务中心储存着所有微服务的信息,例如某台服务的ip、端口等信息,当我们进行远程调用的时候可以从服务中心去获取到服务提供者的信息。eureka 就是用来作为服务注册中心的。 eureka 架构图: 2、使用eureka单机模式 eureka有两种使用方式,第一种就是单机版本,使用案例如下; ...

2020-12-15 16:18:08 246

原创 OpenFeign(3)--->OpenFeign的配置说明

1、在spring-cloud-openfeign-core的jar中提供了对openfeign的配置项,如下: 配置解释: feign.client.default-config=default 默认等于default,然后就能给所有的feignClient进行属性配置,例如:feign.client.config.default.read-timeout=1000feign.client.config.default.connect-tim...

2020-12-15 10:45:46 1912

原创 OpenFeign(2)--->OpenFeign 的原理分析

1、由于分析源码比较枯燥,因为我将openFeign的整体原理通过流程图的信息展示:整体的流程如上图所示,核心思想就是通过代理来进行拦截,然后使用Contract解析接口方法,生产对应的请求然后进行http通讯。2、openFeign默认继承了R进行负载均衡,spring-cloud-starter-openfeign 的jar包中,默认就是依赖了ribbon 相关的包。...

2020-12-14 19:09:35 940

原创 OpenFeign(1)--->使用OpenFeign

1、在前面我们讲解了Ribbon,我们使用ribbon的方式主要是自己是同RestTemplate 来进行远程请求的调用,代码如下: @GetMapping("userGetOrderById") public OrderDto userGetOrderById(@RequestParam("orderId") String orderId){ //使用具备负载均衡功能的RestTemplate进行http服务调用 ResponseEntity<O

2020-12-14 17:02:36 122 1

原创 Ribbon(5)--->spring-cloud-netflix-ribbon 中配置说明

1、在使用spring-cloud-netflix-ribbon的时候我们可以使用如下的配置方式来进行配置#配置order-service 服务的地址order-service.ribbon.listOfServers=http://localhost:7071,http://localhost:7072#请求连接超时时间,实现原理是通过设置请求的http.connection.timeoutribbon.ConnectTimeout=1800#请求处理的超时时间,实现原理是通过设置请求的

2020-12-14 14:13:38 427 1

原创 Ribbon(4)--->spring-cloud-netflix-ribbon 对spring-cloud的loadBalancer标准的实现

1、前面一篇博客我们分析了spring-cloud的loadBalancer标准的内容,今天我们来分析spring-cloud-netflix-ribbon的是实现: 我们在使用spring-cloud-netflix-ribbon的时候,会依赖如下的jar包: <dependency> <groupId>org.springframework.cloud</groupId> <art...

2020-12-14 12:08:44 887 1

原创 Ribbon(3)--->spring-cloud生态中对负载均衡loadbalancer标准规范

1、我们知道spring-cloud是一个生态,它将微服务时代的很多组件进行了统一规范,并定义接口,这样就能够跟具体的实现进行解耦,这就是软件设计的开闭原则,我们知道在spring-cloud中,对于服务间的远程通讯都是使用rest规范来进行远程调用的,所以我们之前对RestTemplate进行详细的讲解。2、spring-cloud中对很多微服务架构中的组件都进行了标准规范以及接口的定义,这些定义都在spring-cloud-commons包中,如下: 3、我们今天讲解的负载...

2020-12-03 19:09:28 543

原创 Ribbon(2)--->使用spring-cloud-netflix-ribbon

1、ribbon 是什么?用来干嘛? ribbon 是一个负载均衡组件,当我们的服务有是集群部署的时候,我们可以使用ribbon来进行负载均衡。2、不存在服务注册与发现中心场景使用spring-cloud-netflix-ribbon 项目结构: 方式1: 使用LoadBalancerClient 来进行服务选者,服务调用链路user-service --------------------> ...

2020-12-03 16:59:22 3441

原创 Ribbon(1)--->RestTemplate使用与原理分析

1、spring-cloud-ribbon 简介 1.1、spring-cloud-ribbon 是用来做负载均衡的,何为负载均衡?负载均衡就是对于服务端来说,当我们集群部署服务的时候,我们需要让这些服务以一种你叫公平的方式来承载负载,这就叫负载均衡,例如:电商系统的订单查询服务,我们部署了3个节点,我们要让这三个节点来平均分摊用户的查询负载。 1.2、spring-cloud-ribbon 的基本使用方式: 方式1:使用Load...

2020-11-30 12:13:09 710

原创 javaNIO实战9----> java NIO的Pipe管道实战

1、Pipe管道通常使用在对条线程之间共享数据的场景,模型如下图所示: 2、实战案例 @Test public void nioPipe() throws IOException, InterruptedException { //1、构建一个管道 Pipe pipe = Pipe.open(); //2、获取管道的SinkChannel,用于数据录入。 Pipe....

2020-10-25 20:41:28 409

原创 javaNIO实战8----> java NIO的非阻塞式IO网络编程UDP协议实战

1、前面说的SocketChannel、ServerSocketChannel都是针对TCP协议而来的实现,那么今天我们就实战一下UDP协议的NIO非阻塞式网络编程,在NIO中UDP的通道实现类是DatagramChannel。2、实战案例 1、客户端的实现: @Test public void nioNonBlockingClientUDP() throws IOException { //1、开启一个DatagramChannel 的客户端通道...

2020-10-25 19:58:17 184

原创 javaNIO实战7----> java NIO的非阻塞式(Non Blocking IO)网络编程

1、NIO 非阻塞式网络编程 前面我们讲解了使用多线程来解决IO线程的柱塞问题,那么今天我们来介绍一个java NIO中的非阻塞式的实现,那么它是怎么实现的呢?其中一个核心的组件就是Selector(选择器 也可以叫IO多路复用器),具体的模型如下 2、IO多路复用器Selector 2.1、在java NIO中使用类Selector来描述多路选择器,它的方法列表如下: 2.2、SelectionKey介绍 ...

2020-10-25 19:26:18 278

原创 javaNIO实战6----> java NIO的阻塞式网络编程

1、在没有NIO的套件的时候,我们都是使用Socket来进行网络编程 案例如下: 1.1、服务端实现: public static void main(String[] args) { ServerSocket serverSocket = null; try { //1、构建一个SocketServer 监听端口8080,这就表示一个进程,当前线程就是main线程,也可以叫IO线程。 ...

2020-10-25 18:34:14 181

原创 javaNIO实战5----> java NIO的字符集Charset实战

1、NIO中的Charset类表示字符集,可以使用它来完成数据的编码与解码: 编码:字符串---->字节数组 解码:字节数组----->字符串2、我们通过案例来演示Charset的使用: @Test public void test12() throws IOException { 获取GBK的字符集实例 Charset charset = Charset.forName("GBK"); ...

2020-10-23 21:36:25 569

原创 javaNIO实战4----> java NIO的通道Channel实战

1、IO发展三部曲 在计算机的发展历史中,IO的发展一共经历了三个时期,分别如下: 第一阶段:CPU直接负责IO请求的处理,将文件数据从磁盘读取到内存中,然后再响应应用的IO请求,严重影响CPU的性能模型图如下: 第二阶段:DMA(Direct Memory Access)直接存储器 负责IO请求,不过DMA也会向CPU去获取授权信息,如果在频繁进行IO操作的话,也会严重影响CPU的性能。模型图如下: 第三阶段:使用Channel来替换DMA...

2020-10-22 23:54:27 410 1

原创 javaNIO实战3----> java NIO的非直接缓冲区与直接缓冲区

1、NIO的非直接缓冲区与直接缓冲区 重要的一点:NIO的直接缓冲区与废纸接缓冲区值针对于ByteBuffer这种缓冲区,其他的实现类没有直接缓冲区的说法。 非直接字节缓冲区:通过allocate()方法进行分配,将缓冲区建立在JVM的堆内存中。 直接字节缓冲区:通过ByteBuffer.allocateDirect()方法进行分配,会将缓冲区建立在OS的物理内存中,可以提高效率。 2、非直接缓冲区之所以效率不行是因为,内核空间与用户空间的c...

2020-10-21 22:41:24 152

原创 javaNIO实战2----> java NIO的缓冲区Buffer实战

1、Buffer缓冲区详细介绍 在java NIO套件中,Buffer的作用主要就是用来存取数据的,Buffer是一个抽象类,其类图主要如下: 每一个Buffer实现对应着这种Buffer只能存储此种数据,例如BytreBuffer就只能存储字节数据,这些缓冲区都是用其实现类的静态方法allocate()来进行分配,案例如下: 其中1024表示分配的缓冲区的容量,一旦分配就不能修改容量。 ByteBuffer allocate = ByteBuf...

2020-10-21 22:17:10 192

原创 javaNIO实战1----> java NIO的基本基本理论

1、什么是NIO ? java NIO 也叫New IO 也可以叫Non Blocking IO ,是从java 1.4 版本开始引入的一个全新的IO API。NIO与原来的IO有同样的目的与作用,但是使用的方式完全不同,NIO支持面向缓冲区(Buffer)且基于通道(Channel)的IO操作,NIO以更高效的方式进行文件的读写操作。2、java中IO与NIO的区别 2.1、传统IO的思维导图: ...

2020-10-20 23:38:10 162

原创 dubbo使用9----> dubbo 消费者订阅流程源码解析

1、dubbo服务引用方式 1.1、基于xml的方式: <dubbo:reference interface="com.wzy.api.ISayHelloService" id="sayHelloService" /> 1. 2、基于注解: @DubboReference(check = false) 1.3、基于代码:此处不再累赘,官网有案例。2、dubbo服务引用原理分析 步骤1 :Reference...

2020-10-13 00:23:45 582

原创 springboot10--->spring-boot自动配置事务管理器的原理分析

待续。。。

2020-09-24 18:02:31 1277

原创 springboot9--->spring-boot自动配置springAOP原理分析

1、待续。。。

2020-09-23 18:14:08 274

原创 springboot8--->springboot自动配置数据源DataSource原理分析

1、使用简介 我们在使用spring boot的时候我们配置一个数据源主要是通过如下配置来进行定义配置数据源的类型,比如druid,不配置会使用默认的数据源类型spring.datasource.type=com.alibaba.druid.pool.DruidDataSource配置数据源的数据库服务地址spring.datasource.url=jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNul...

2020-09-23 17:56:41 4237

原创 springboot7--->springboot是如何自动配置springmvc的原理分析

1、在传统的springMvc项目里面,我们会将DispatcherServlet配置在web.xml中,案例如下: <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <ini

2020-09-21 17:21:21 199

原创 springboot6--->spring-boot的starter介绍以及实现自己的starter

1、在spring boot中starter的含义 官网的说法是:Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sampl...

2020-09-18 17:34:05 473

原创 springboot5--->springboot应用的监控功能-----使用spring boot Admin来监控spring boot应用

1、spring boot admin简介 Spring Boot Actuator 提供了对单个 Spring Boot 应用的监控,信息包含应用状态、内存、线程、堆栈等,比较全面的监控了 Spring Boot 应用的整个生命周期。但是这样监控也有一些问题: 第1:所有的监控都需要调用固定的接口来查看,如果全面查看应用状态需要调用很多接口,并且接口返回的 JSON 信息不方便运营人员理解; 第2:如果 Spring Boot 应用集群非常大,每个应用都需要调...

2020-09-18 17:06:33 875 1

原创 springboot4--->springboot应用的监控功能-----Actuator常规使用

1、springboot Actuator使用案例: 1.1、构建一个Springboot 项目,添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency...

2020-09-18 16:07:57 331

原创 springboot3--->springboot的ConfigFileApplicationListener 配置文件应用监听器原理分析

1、简单使用 我们知道spring boot 默认会加载appication.properties配置文件,我们在此配置文件中配置一个name熟悉,然后写一个rest接口进行获取,代码如下: application.properties配置文件中: server.port=8080 name=wen default Controller: @RestController ...

2020-09-14 18:33:49 1277

原创 dubbo使用8----> dubbo 提供者服务发布流程源码解析

本片文章主要讲解dubbo 服务提供者如何发布服务的服务发布的入口: DubboBootstrapApplicationListener:这个就是在spring项目加载阶段dubbo服务发布的入口,是基于spring的事件机制实现的,也就是在spring的上下文刷新完成后,spring会发布一个上下文刷新完成事件ContextRefreshedEvent。第1步:DubboBootstrapApplicationListener接收到spring会发布一个上下文刷新完成事件...

2020-09-09 22:49:44 636 1

空空如也

空空如也

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

TA关注的人

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