![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
分布式微服务
文章平均质量分 65
springBoot、springCloud
Firm陈
保持常态
展开
-
Sentinel简介(1)
sentinel入门原创 2022-09-01 11:19:13 · 266 阅读 · 0 评论 -
Nacos下载和安装-windows(1)
windows安装nacos原创 2022-09-01 10:40:37 · 4779 阅读 · 0 评论 -
nacos介绍及使用
nacos转载 2022-09-01 10:34:19 · 4473 阅读 · 0 评论 -
10张图带你彻底搞懂限流、熔断、服务降级
服务限流和降级原创 2022-08-31 14:59:22 · 373 阅读 · 0 评论 -
Java中间件 - Redisson简介
1. 什么是RedissonRedisson官网的介绍如下:Redis Java Client with features of In-Memory Data GridRedisson是一款具有诸多高性能功能的综合类开源中间件。Redisson设计的初衷是让实施者对Redis的关注进行分离,可以将更多的精力放在处理业务逻辑上。Redisson提供的功能特性及其在项目中所起的作用远大于原生Redis所提供的各种功能。2. Redisson的功能特性(1)多种连接方式同步,异步,异步流,管道流原创 2021-09-04 15:26:52 · 2368 阅读 · 1 评论 -
分布式锁简介
大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题。当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端处理,不能并发的执行,否者就会出现同一时刻有人写有人读,大家访问到的数据就不一致了。一、我们为什么需要分布式锁?在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加原创 2021-09-14 19:31:28 · 147 阅读 · 0 评论 -
RPC远程调用通俗理解
先从一个案例来讲RPC为了提升饭店的服务能力,饭店从一开始只有一个负责所有事情的厨师发展成有厨师、切菜师、备菜师等多个角色。在饭店只有一个厨师的时候,厨师想要做出一道美味的番茄炒蛋的时候,他需要自己洗番茄、切番茄、打鸡蛋、炒菜。整个过程不需要其他人参与自己就完全可以完成了。这就是古老的集中式应用中,一台单体计算机就可以搞定所有事情了制作番茄炒蛋{ 厨师->洗菜->切菜->炒菜}随着饭店发展,需要明确分工,让专业的人负责专业的事儿。所以,整个做菜过程中不再只有厨师参与了。需转载 2021-09-27 18:19:25 · 4639 阅读 · 1 评论 -
Redission配置参数说明(*)
redission配置转载 2022-07-18 18:02:03 · 2485 阅读 · 0 评论 -
SpringBoot 整合Redisson(*)
redission原创 2022-07-18 17:59:40 · 686 阅读 · 0 评论 -
Spring Cloud 进阶之路 -- Feign 的使用(*)
feign转载 2022-07-18 14:49:55 · 186 阅读 · 0 评论 -
SpringBoot中的classpath(*)
classpath路径转载 2022-07-16 14:42:46 · 1496 阅读 · 0 评论 -
分布式CAP定理,为什么不能同时满足三个特性?(*)
cap转载 2022-07-16 14:31:55 · 228 阅读 · 0 评论 -
springboot自动装配(*)
springboot自动装配转载 2022-07-16 14:22:43 · 110 阅读 · 0 评论 -
bean无法注入的常见问题和springboot的三种扫描加载Bean的方式(*)
bean注入问题原创 2022-06-24 00:09:55 · 7987 阅读 · 0 评论 -
lombok @Accessors用法详解(*)
最近看到代码里面有@Accessors注解,看了一些文章没理解,这个一看就能懂:@Accessors(chain=true)链式访问,该注解设置chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。package com.pollyduan;import lombok.Data;import lombok.experimental.Accessors;@Data@Accessors(chain=true)public class User原创 2022-03-21 16:41:40 · 691 阅读 · 0 评论 -
Log4j2之ThreadContext(*)
简介系统中使用log4j2作为日志系统,然而在高并发的情况下,多次请求的日志参杂在一起,要跟踪某个用户一次的请求操作所有日志是很麻烦的。幸运的是log4j中有相应的解决方案。NDC和MDCNDC(Nested Diagnostic Context)和MDC(Mapped Diagnostic Context)是log4j种非常有用的两个类,它们用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。NDC采用了一个类似栈的机制来push和pop上下文原创 2022-03-14 15:05:59 · 1513 阅读 · 0 评论 -
开发框架图介绍(*)
一.Spring框架原创 2022-03-14 11:55:04 · 547 阅读 · 0 评论 -
常用依赖总结(*)
1.netty(网络通信框架)Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,知名的 Elasticsearch 、Dubbo 框架内部都采用了 Netty。<!-- https://mvnrepository.com/artifact/io.netty/netty-原创 2022-03-10 18:14:42 · 1090 阅读 · 0 评论 -
组件、插件、模块、子应用、库、框架等概念辨析(*)
组件、插件、模块、子应用、库、框架等概念辨析网上有许多讲组件化、模块化等概念的文章,但大家一般都是将这两个概念混为一谈的,并没有加以区分。而且实际上许多人对于组件、插件、模块、子应用等概念的区别也不甚明了,甚至于许多博客文章专门解说这几个概念都有些谬误。之前已经写了一篇文章专门对组件和模块两个概念进行辨析,现在我们对于更多的概念在更高的层次上进行辨析。想分清这几个概念我觉得结合一下软件的渐进式开发场景更容易理解。但是下面的篇幅会比较长,所以按惯例还是先说结论,不耐烦的同学可以先看:1.概念区别组转载 2022-02-10 18:04:05 · 1648 阅读 · 0 评论 -
springboot-整合-redisson(*)
前言参考文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95说明这个玩意是基于Redis的一个分布式锁,还有很多功能,需要参考文档去springboot-整合https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter#spring-boot-starter配置 yml1.先配置这个,配置的时候需要注意 <depende转载 2021-12-28 19:19:03 · 1420 阅读 · 0 评论 -
Redission使用方式总结(*)
我们在使用redis的时候,需要使用驱动来链接redis,通过驱动去操作redis,我们可以直接使用redis提供的基本的驱动来操作数据库但是为了效率我们一般会使用开源的解决方案来进行操作,目前主流的开源解决方案有jedis,redission,lettuce三种解决方案,其中jedis是同步的方案,现在包括spring-data也已经不再内置使用了,替换成了lettuce,那有些人就说了,那我们学习lettuce不就行了么?你说的没问题,为什么有三种呢,我们其实使用一种就可以了啊,是的没有问题,但是用哪个转载 2021-12-26 14:14:41 · 4405 阅读 · 0 评论 -
log4j 日志框架使用(*)
Log4j是Apache下的一款开源的日志框架,能够满足我们在项目中对于日志记录的需求。一般来讲,在项目中,我们会结合slf4j和log4j一起使用。Log4j提供了简单的API调用,强大的日志格式定义以及灵活的扩展性。我们可以自己定义Appender来满足我们对于日志输出的需求。什么是日志框架我们在系统中对于记录日志的需求并不单纯。首先,我们希望日志要能持久化到磁盘,最基本的就是要能够保存到文件中;其次,我们希望在开发和生产环境中记录的日志并不相同,明显开发环境的日志记录会更多方便调试,但放到生产环境转载 2021-12-25 13:29:06 · 195 阅读 · 0 评论 -
Spring Boot依赖spring-boot-starter-parent是干啥的?(*)
你的项目pom.xml文件中,应该存在如下代码:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version></parent>你是否知道这是干啥的?这是Spring转载 2021-12-25 13:13:18 · 4180 阅读 · 1 评论 -
JSR-303(*)
JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。Web Service技术Java Date与Time API ( JSR 310)Java API for RESTful Web Services (JAX-RS) 1.1 (JSR 311)Imple原创 2021-12-23 22:34:22 · 117 阅读 · 0 评论 -
注解@Slf4j的使用(*)
声明:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;1.使用idea首先需要安装Lombok插件;2.在pom文件加入lombok的依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>原创 2021-12-20 17:30:41 · 94 阅读 · 0 评论 -
spring boot过滤器FilterRegistrationBean(*)
有2种方式可以实现过滤器1:通过FilterRegistrationBean实例注册2:通过@WebFilter注解生效这里选择第一种,因为第二种不能设置过滤器之间的优先级为了演示优先级,这里创建2个测试过滤器类:Test1Filter、Test2Filter通过实现javax.servlet.Filter接口,覆盖其doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)方法,决定拦截或放行。public cla原创 2021-12-16 21:44:27 · 860 阅读 · 0 评论 -
springboot 事务回滚(*)
springboot 事务回滚springboot 事务使用1.只有在开启事务的方法中出现异常,才会自动回滚,需要在service的public方法上面加上@Transactional(rollbackFor = Exception.class),一旦程序出现异常,事务会自动回滚@Transactional(rollbackFor = Exception.class)2. 如果在try-catch语句中对可能出现的异常进行了处理,没有再手动throw异常,spring认为该方法成功执行,不会进转载 2021-12-09 17:19:46 · 2680 阅读 · 1 评论 -
单机、集群和分布式(微服务结构)的区别(*)
一.单机单机就是所有的业务全部写在一个项目中,部署服务到一台服务器上,所有的请求业务都由这台服务器处理。显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求。自然而然地想到一个程序不行就部署多个喽,这就是集群。二.集群集群就是单机的多实例,在多个服务器上部署多个服务,每个服务就是一个节点,部署N个节点,处理业务的能力就提升 N倍(大约),这些节点的集合就叫做集群。负载均衡:协调集群里的每个节点均衡地接受业务请求。通俗的讲就是服务A和服务B相同时间段内处理的同类业务请求数量是相似的集群原创 2021-11-27 11:10:39 · 616 阅读 · 0 评论 -
Spring Boot实战之Filter实现简单的Http Basic认证(*)
Spring Boot实战之Filter1.Filter功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet时处理response.换种说法,filter其实是一个”servlet chaining”(servlet 链).一个Filter包括:1)在servlet被调用之前截获;2)在servl转载 2021-11-16 11:17:48 · 991 阅读 · 0 评论 -
DigestUtils.md5Hex()加密(*)
在项目中把commons-codec-1.3jar放进去,对我们想要加密的参数值直接进行加密处理用DigestUtils.md5Hex(),括号中放入我们需要加密的参数即可。User user = new User();user.setPassword(DigestUtils.md5Hex(password));这样即对密码进行加密了......转载 2021-11-15 21:30:18 · 1985 阅读 · 0 评论 -
SpringBoot相关属性配置(*)
SpringBoot相关属性配置https://segmentfault.com/a/1190000004315890原创 2021-11-12 15:57:40 · 362 阅读 · 0 评论 -
对Request-ID的一些认识(*)
为什么要使用Request IdRequest Id 是为了解决下面问题问题一: 客户端访问的Web服务时,如何将客户端请求与服务端日志关联 问题二: 微服务架构下,访问日志如何查询问题三: 不同项目交互出现异常,如何做日志关联Request Id Vs 没有Request Id没有Request Id 请求,只能根据调用函数日志关键,在根据用户的输入的参数,时间来确定相关的日志。 如果项目是以分布式,微服务架构来实现, 上面查日志方式帮助很小。原因如下代码层层封装后,无法通过日志关转载 2021-11-12 11:10:58 · 5802 阅读 · 0 评论 -
selectKey标签详解(*)
1.为什么要使用selectKey数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点耗时耗力,我们可以采用selectKey来帮助我们获取新增的主键2.具体实现demo查询数据库最简单的几步(1)controller@Controllerpublic class SelectKeyController { @Autowired SelectKeyServiceImpl selectKeyServic转载 2021-11-08 17:51:07 · 8009 阅读 · 0 评论 -
YAML学习笔记(*)
一.YAML简介YAML,即YAML Ain’t Markup Language的缩写,YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。二.YAML语法1.基本规则YAML有以下基本规则:大小写敏感使用缩进表示层级关系禁止使用tab缩进,只能使用空格键缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。使用#表示注释字符串可以不用引号标注2.数据类型(1)字符串#YAMLstr: abc#JSON原创 2021-10-28 14:18:51 · 472 阅读 · 0 评论 -
Sentinel介绍(*)
前言随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel作为一个流量控制组件,是如何从流量控制、熔断降级、系统自适应保护等多个维度来保障微服务的稳定性的。1.简介随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。2.基本概念(1)资源资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由原创 2021-10-28 11:43:52 · 761 阅读 · 0 评论 -
redisson简单介绍(*)
一.什么是redissonRedisson - 是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象,Redisson、Jedis、Lettuce 是三个不同的操作 Redis 的客户端,Jedis、Lettuce 的 API 更侧重对 Reids 数据库的 CRUD(增删改查),而 Redisson API 侧重于分布式开发。二.支持Redis多种连接模式1.集群模式 Config config = new Config(); config.useCl转载 2021-10-27 14:15:58 · 2131 阅读 · 0 评论 -
Redission配置参数说明(*)
spring-redission配置spring: application: name: lizz-boot redis: redisson: # 配置文件 file: classpath:redisson.yml # 字符串配置 #config:redisson.yml# 集群模式clusterServersConfig: # 如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值, #转载 2021-10-26 21:16:57 · 3581 阅读 · 0 评论 -
Hibernate简介(入门)(*)
什么是HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代C原创 2021-10-21 17:53:43 · 565 阅读 · 0 评论 -
SpringBoot热部署简介(*)
首先来看看 JAVA 热部署与热加载的联系:(1)都可以不重启服务器的情况下进行编译/部署项目;(2)基于 Java 的类加载器实现热部署与热加载的区别:(1)热部署在服务器运行时重新部署项目(2)热加载在运行时重新加载 class (字节码文件)只加载重新修改后的类(class 文件)(3)热部署会重新加载整个应用(4)热加载在运行时重新加载 class可以理解为 JVM 启动后会启动一个后台线程,定时来监控文件的时间戳,如果变化就将类重新载入(5)热部署更多在生产环境下使用,热加载多原创 2021-10-21 17:45:57 · 250 阅读 · 0 评论 -
SpringBoot配置devtools实现热部署(*)
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。devtools的原理深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart原创 2021-10-21 17:33:55 · 338 阅读 · 0 评论