自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 问答 (1)
  • 收藏
  • 关注

原创 1.Nacos配置中心第一次启动加载配置源码

Nacos配置中心启动加载配置源码Environment负责管理spring的运行相关的配置信息,其中就包含application.properties。而在Spring Cloud中,如果集成Nacos作为配置中心的话,那么意味着这部分配置是属于远程配置,也会作为配置源保存到Environment中,这样我们才能通过@value注解来注入配置中的属性。在Config的源码中,我们知道Environment中所有外部化配置,针对不同类型的配置都会有与之对应的PropertySource,比如(Sys

2021-02-02 16:03:33 1926 1

原创 【武功山攻略】

武功山

2024-02-24 17:37:59 1153

原创 我的装修风格

装修设计

2022-07-18 00:25:49 216 1

原创 AsyncContext的startAsync()方法开启异步

AsyncContext的startAsync()方法开启异步Servlet 3.0的异步处理支持特性,使Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。1、传统Servlet处理Web容器会为每个请求分配一个线程,默认情况下,响应完成前,该线程占用的资源

2021-02-02 16:44:30 2408

原创 Nacos中namespace,groupId,dataId使用

Nacos中的Namespace,GroupId,DataId如何划分Namespace不同项目需要隔离,这种隔离可以采用软隔离;即可以运行在同一设备上,通过某个字段来区分;namespace 隔离设计namespace 的设计是 nacos 基于此做多环境以及多租户(多个用户共同使用nacos)数据(配置和服务)隔离的。从一个租户(用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的 namespce,以此来实现多环境的隔离。例如,你可能有开发,测试和生产三

2021-02-02 16:43:04 6075

原创 Spring Cloud Eureka项目切换注册中心到Nacos

Spring Cloud 项目平滑将注册中心迁移到Nacos上1.问题概述由于项目升级,需要将Eureka注册中心改为阿里的Nacos作为注册中心项目环境1、Java 使用的 JDK-1.82、Spring Boot 使用的 Spring Boot-2.1.4.RELEASE3、Spring Cloud 使用的是 Greenwich.RELEASE2.方案设计2.1 业务应用多注册到Nacos和EurekaSpring Cloud应用默认不支持启动时双向注册,但是阿里商业版上云edas

2021-02-02 16:42:27 2053 3

原创 Nacos服务端配置数据Mqsql存储

Nacos服务端配置数据Mqsql存储客户端获得配置中心的流程分析结束之后,还有一个疑惑是,nacos server上如何存储配置呢?在standalone模式下,Nacos默认使用derby数据库来存储配置信息。在Nacos_PATH/data目录,有一个derby-data的文件, Derby是Java编写的数据库,是Apache的开源项目,默认的所有配置就是存在derby这个数据库中。Nacos还可以支持mysql的存储,如果想要修改,可以按照以下步骤执行只有集群模式下才能用mysql创

2021-02-02 16:39:18 1214 1

原创 nacos搭建集群

Nacos搭建集群环境准备准备三台机器192.168.159.129192.168.159.130192.168.159.131下载编译好的包https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3.2.tar.gz配置数据源需要注意的是,Nacos默认采用的是一个derby的内置数据库,在实际过程中,不建议使用这种数据 源。建议采用高可用数据库,比如我们使用mysql构建主从。那我们可以使用m

2021-02-02 16:37:21 225

原创 4.Nacos一致性协议Raft心跳包发送

Nacos源码分析之发送心跳包源码分析在RaftCore的init()方法中注册了一个每500ms执行一次的心跳任务@PostConstruct public void init() throws Exception { ...... //开启定时任务,每个500ms发起一次心跳 GlobalExecutor.registerHeartbeat(new HeartBeat()); Loggers.RAF

2021-02-02 16:35:18 508

原创 3.Nacos一致性协议Raft

Nacos一致性协议分布式一致性协议有很多,例如Paxos协议,Zab协议,Raft协议,而Nacos采用的是Distro协议和Raft协议。对于非临时数据,Nacos采用的是Raft协议,而临时数据Nacos采用的是Distro协议。简单说一下Distro,Distro协议被定位为临时数据的一致性协议:该类型协议不需要把数据存储到磁盘或者数据库,因为临时数据通常和服务器保持一个session会话,该会话只要存在,数据就不会丢失。本篇文章主要针对于CP的Raft算法。Raft一致性协议Nacos支持集

2021-02-02 16:34:19 3726

原创 3.Nacos配置中心动态更新服务端处理源码

Nacos配置中心服务端处理源码服务端收到客户端的配置变更请求查询的长轮训请求之后,服务端怎么来处理这个长轮训呢?上文中讲到了配置更新的整个原理及源码,我们知道客户端会有一个长轮训的任务去检查服务器端的配置是否发生了变化,如果发生了变更,那么客户端会拿到变更的 groupKey 再根据 groupKey 去获取配置项的最新值更新到本地的缓存以及文件中,那么这种每次都靠客户端去请求,那请求的时间间隔设置多少合适呢?如果间隔时间设置的太长的话有可能无法及时获取服务端的变更,如果间隔时间设置的太短的话,那么

2021-02-02 16:13:53 1027

原创 2.Nacos配置中心动态更新客户端源码

Alibaba Nacos配置中心客户端的源码分析SDK方式读取和保存配置Nacos提供了两种方式,一种是原生的SDK,另一种是open api.sdk的文档,请点击这里引入依赖包<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.1.1</versio

2021-02-02 16:06:48 704

原创 2.Nacos 服务注册的原理

https://www.freesion.com/article/4805581672/Nacos服务注册需要具备的能力服务提供者把自己的协议地址注册到Nacos server服务消费者需要从Nacos Server上去查询服务提供者的地址(根据服务名称)Nacos Server需要感知到服务提供者的上下线的变化服务消费者需要动态感知到Nacos Server端服务地址的变化Nacos APISDK(底层也是基于open Api调用) / OPEN API(Rest 接口)官网服务注册

2021-01-29 18:19:58 2054

原创 1.Nacos初步认识以及基本使用

Nacos是什么Nacos提供了统一配置管理、服务发现与注册。 其中服务注册和发现的功能,相当于dubbo里面使用到 的zookeeper、 或者spring cloud里面应用到的consoul以及eureka。Nacos官网Nacos的特性服务发现和服务健康监测Nacos提供了基于RPC的服务发现,服务提供者可以将自身的服务通过原生API或者openApi来实现服务 的注册,服务消费者可以使用API或者Http来查找和发现服务;同时,Nacos提供了对服务的实时监控检查,当发现服务不可用时,

2021-01-29 18:17:23 975

原创 Hystrix源码分析

Hystrix源码分析Hystrix是如何工作的自定义注解GxHystrixCommand@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface GxHystrixCommand { /** * 默认超时时间 * @return */ int timeout() default 1000; /** * 回

2021-01-29 18:12:25 267

原创 Hystrix基本使用

Hystrix基本使用Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。我们要构建稳定、可靠的分布式系统,就必须要有这样一套容错方法熔断触发降级熔断的目的是为了起到保护作用降级主动降级,大促的时候关闭非核心服务。被动降级,熔断降级、限流降级降级熔断是一种降级策略一. 添加

2021-01-29 18:11:22 573

原创 Spring Cloud GateWay实现token的校验和传输

Spring Cloud GateWay实现token的校验和传输1.1 SpringCloud Gateway 简介Spring Cloud GateWay基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty.Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。提前声明:Spring Cloud Gateway 底层使用了高性能的通

2021-01-29 18:08:26 7844 7

原创 GateWay原理

1. 网关Gateway的基本组成GateWay官网地址中文官网Route:路由是GateWay最基础的组件,它包含一个ID,一个目标Url,一些断言集合,一些过滤器集合;如果断言成功的话,路由器就会被匹配Predicate:输入类型是Spring FrameworkServerWebExchange。这使您可以匹配HTTP请求中的所有内容,例如标头或参数。Filter:这些是使用特定工厂构造的Spring FrameworkGatewayFilter实例。在这里,您可以在发送下游请求之前或

2021-01-29 18:07:24 5629

原创 Eureka源码解析

Eureka Service如何接受请求通信http通信socket通信(NIO,Netty)ApplicationsResource/ApplicationResource(相当于服务注册的两个Controller)这里它是基于jersey的方式进行通信的。controllerhttp://localhost:10001/eureka/appsEureka Client 如何注册地址一. Spring Cloud 服务注册入口的接口定义和实现服务注册是在spring boot应

2020-11-12 17:15:51 266

原创 Eureka基本使用以及自我保护机制

一 .Eureka基本使用常用的注册中心解决方案常用注册中心推送方式是否支持持久化存储CAP特性EurekaPull缓存在内存中,不支持APConsullong pollingZookeeperpushEtcdlong pollingNacoslong polling支持持久化存储到MysqlredisEureka 非持久化存储 、 ap(高可用模型)、 集群节点

2020-11-12 17:04:58 543

原创 Fegin源码分析

Fegin源码分析思考Feign要做的事情参数的解析和组装针对指定的FeginClient生成代理对象针对FeginClient中的方法描述进行解析组装成一个request对象,发起请求Bean的动态装载在了解Fegin的源码之前先了解一下Spring Boot中Bean的动态装载,有两种方式ImportSelector 可以实现Bean的批量动态装载ImportBeanDefinitionRegistrar 可以实现Bean的动态装载ImportBeanDefinitio

2020-11-05 20:36:14 160

原创 Fegin的基本使用

Fegin的基本使用一,需要搭建两个Spring Boot的服务服务的提供者 spring-cloud-order-service,服务提供者包含两个模块1. order-api 这是一个spring Boot的工程,主要是定义接口的规范,并且对外发布OrderServiceFeignClient@FeignClient("order-service")public interface OrderServiceFeignClient extends OrderService{}Ord

2020-11-05 20:35:26 409

原创 记一次Spring Cloud Feign Client 实现MultipartFile上传文件功能报错解决方案

记 Spring Cloud Fegin 实现MultipartFile上传文件功能,报not a type supported by this encoder解决方案项目是用Spring Cloud搭的微服务,使用了eureka,FeignClient。今天在做上传文件功能,涉及到了跨服务上传文件的方法,直接使用FeignClient去远程调用注册中心上上次文件服务的上传文件接口,一直报错。最开始的时候Spring cloud中,Feign本身是不支持上传文件的能力的,估约1年前.要想实现这个方法,

2020-11-05 20:33:36 1596

原创 Ribbon源码分析

Ribbon源码分析@Qualifier 注解在分析Ribbon源码之前,需要先了解@Qualifier注解的作用@Qualifier在这里就相当于起到一个标记的作用测试伪代码创建TestClass类public class TestClass { private String name; public TestClass(String name) { this.name = name; } public String getName

2020-11-03 18:05:57 189

原创 Ribbon基本使用

Ribbon的基本使用一. 首先需要搭建两个服务,并且两个服务都是Spring Cloud工程服务的提供者 spring-cloud-order-service配置两个节点,一个是 8080端口,一个是8082端口@RestControllerpublic class OrderService { @Value("${server.port}") private int port; @GetMapping("/orders") public String ge

2020-11-03 18:00:07 345

原创 MySQL 优化思路与工具

MySQL 优化思路与工具1 优化思路2 连接——配置优化第一个环节是客户端连接到服务端,连接这一块有可能会出现什么样的性能问题? 有可能是服务端连接数不够导致应用程序获取不到连接。比如报了一个 Mysql: error 1040: Too many connections 的错误。可以从两个方面来解决连接数不够的问题:1、从服务端来说,我们可以增加服务端的可用连接数。如果有多个应用或者很多请求同时访问数据库,连接数不够的时候,我们可以:(1)修改配置参数增加可用连接数,修改 max_con

2020-10-30 18:01:20 1831

原创 MySQL InnoDB 锁的基本类型

MySQL InnoDB 锁的基本类型https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html行级别的锁:共享锁排他锁表级别的锁:意向共享锁意向排他锁2.1 共享锁Shared Locks (共享锁),我们获取了一行数据的读锁以后,可以用来读取数据, 所以它也叫做读锁。用 select …… lock in share mode; 的方式手工加上一把读锁。 释放锁有两种方式,只要事务结束,锁就会自动事务,包括提交事务和结

2020-10-30 18:00:33 107

原创 Mysql数据库事务

Mysql数据库事务一. 事务的典型场景比如下单,会操作订单表,资金表,物流表等等,这个时候我们需要让这些操作都在一个事务里面完成。在金融的系统里面事务配置是很常见的,比如行内转账的这种操作,如果我们把它简单地理解为一个账户的余额增加,另一个账户的余额减少的情况(当然实际上要比这复杂),那么这两个动作一定是同时成功或者同时失败的,否则就会造成银行的会计科目不平衡。二. 事务的定义事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。三. 哪些存储引擎支持事务I

2020-10-30 17:59:55 163

原创 Mysql数据库索引

数据库索引数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、 更新数据库表中数据。数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有 索引的话,我们要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据 (循环调用存储引擎的读取下一行数据的接口),直到找到这条数据。 但是我们有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种 特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到 数据了。一. 索引类

2020-10-30 17:57:28 177

原创 Mysq执行流程与架构

MYSQL执行流程与架构1. 一条查询 SQL 语句是如何执行的?首先,数据是存储在 MySQL 服务端的。应用程序或者工具都是客户端。客户端要读 写数据库,第一步要跟数据库建立连接。1.1. 通信协议1.1.1.通信协议通信类型:同步或者异步 一般来说客户端连接数据库都是同步连接。连接方式:长连接或者短连接 MySQL 既支持短连接,也支持长连接。一般来说都是长连接,而且会把这个连接放 到客户端的连接池可以用 show status 命令查看 MySQL 当前有多少个连接:show gl

2020-10-30 10:48:31 263 2

原创 深入理解JAVA中的SPI机制

深入理解JAVA中的SPI机制1. 什么是SPI**SPI**全名为Service Provider Interface是JDK内置的一种服务提供发现机制,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件,简单来说,它就是一种动态替换发现的机制。在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需

2020-10-27 11:10:34 270

原创 redis面试总结

id 为 6001 的新闻点击数加 1:zincrby hotNews:20190926 1 n6001获取今天点击最多的 15 条:zrevrange hotNews:20190926 0 15 withscores我们系统中知识管理文件的点赞,分享首页有一个排行榜,使用redis的zset,点赞一次+1: zincrby zsgl 1 f001查询榜单: zrevrange zsgl 0 -1 withscoresredis的基本数据类型String(可以存储字符串,数据,浮点数)

2020-10-23 10:39:12 273

原创 4.redis数据一致性问题以及并发带来的问题

知识点:不同的 Redis 的客户端的特点基于 Java 客户端实现 pipeline 和分布式锁的方法和原理数据一致性问题的分析与解决方案高并发下各种问题的解决方案1 Redis 客户端1.1 客户端通信原理客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。 客户端和服务器发送的命令或数据一律以 \r\n (CRLF 回车+换行)结尾。如果使用 wireshark 对 jedis 抓包:环境:Jedis 连接到虚拟机 202,运行 main,对 VM

2020-10-23 10:26:29 2067

原创 3.redis分布式

1 为什么需要 Redis 集群1.1 为什么需要集群?1.1.1 性能Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是 会受到影响。这个时候我们希望有更多的 Redis 服务来完成工作。1.1.2 扩展第二个是出于存储的考虑。因为 Redis 所有的数据都放在内存中,如果数据量大, 很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的 方法。1.1.3 可用性第三个是可用性和安全的问题。如果只有一个 Redis 服务,一旦服务宕机,

2020-10-23 10:20:50 265

原创 2.redis原理以及高级特性发布订阅、事务、Lua 脚本,内存淘汰机制等

1 发布订阅模式1.1 列表的局限前面我们说通过队列的 rpush 和 lpop 可以实现消息队列(队尾进队头出),但是消 费者需要不停地调用 lpop 查看 List 中是否有等待处理的消息(比如写一个 while 循环)。 为了减少通信的消耗,可以 sleep()一段时间再消费,但是会有两个问题:1、如果生产者生产消息的速度远大于消费者消费消息的速度,List 会占用大量的内存。2、消息的实时性降低。list 还提供了一个阻塞的命令:blpop,没有任何元素可以弹出的时候,连接会被阻塞。bl

2020-10-23 10:14:09 632

原创 1.redis常用的数据类型及应用

Redis 的特性:更丰富的数据类型进程内与跨进程;单机与分布式功能丰富:持久化机制、过期策略支持多种编程语言高可用,集群Redis 一共有几种数据类型?(注意是数据类型不是数据结构)String、Hash、Set、List、Zset、Hyperloglog、Geo、StreamsRedis 基本数据类型String 字符串 (可以用来存储字符串、整数、浮点数 )操作命令设置多个值(批量操作,原子性)mset qingshan 2673 jack 66

2020-10-22 20:17:38 319

空空如也

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

TA关注的人

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