摘要: 概述 Java日志系统中,有两个组件协同工作 一个是负责日志输出的框架,如Logback、Log4j2 一个是日志接口,提供统一的日志记录接口,如slf4j、Apache commons-logging 日志接口必须与日志输出框架集成后才能正常工作,集成时,需要相应的桥接包,以slf4j为例, 集成 阅读全文
posted @ 2024-06-01 22:05 cd_along 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 根据服务架构,事务可以大致划分为三类 本地事务:一个服务使用一个数据源 全局事务:一个服务使用多个数据源 分布式事务:涉及多个服务,不同服务使用不同数据源 本地事务 由数据库提供支持,如MySQL中的InnoDB存储引擎,提供了ACID实现。 全局事务 涉及到多个数据源,需要从外部提供支持。XA(e 阅读全文
posted @ 2024-05-26 17:14 cd_along 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 使用微服务架构后,拆分出来的服务越来越多,随之而来的困扰是: 由于某一个服务的崩溃,导致所有用到这个服务的其他服务都无法正常工作。一个点的错误经过层层传递,最终波及到调用链上与此有关的所有服务,导致雪崩。 服务虽然没有崩溃,但由于处理能力有限,面临超过预期的突发请求时,大部分请求直至超时都无法完成处 阅读全文
posted @ 2024-05-26 16:58 cd_along 阅读(4) 评论(0) 推荐(0) 编辑
摘要: Netflix开源软件套件(Netflix Open Source Software,简称Netflix OSS)是Netflix公司开源的一系列优秀的软件工具和框架,用于构建高性能、可扩展、弹性和可靠的分布式系统。提供了丰富的工具和解决方案,如Eureka、Feign、Ribbon、Hystrix 阅读全文
posted @ 2024-05-26 16:57 cd_along 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 超时配置 我们发现feign、ribbon、hystrix中都有超时时间配置,每个组件中超时的具体含义是什么?在三者结合协作后,又应该如何配置? Feign 超时配置 feign中的超时配置,针对的是一次请求时的连接时间和读取时间。 执行一次请求的最长时间 = feign连接超时+feign读取超时 阅读全文
posted @ 2024-05-26 16:54 cd_along 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 本篇内容为解析Spring Cloud Openfeign在如下场景中的运行原理 Openfeign单独使用 集成负载均衡器,这里选择Ribbon,也可以选择Spring LoadBalancer 集成断路器,这里选择Hystrix,也可以选择Sentinel 相关依赖如下,使用的Spring Cl 阅读全文
posted @ 2024-05-26 16:52 cd_along 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 单例模式 单例模式用于确保一个类只有一个实例。有两种常见的实现方式:懒汉模式(Lazy Initialization)和饿汉模式(Eager Initialization),主要区别在实例化的时机和线程安全性方面。 懒汉 在第一次获取单例实例时才进行实例化,如果没有使用到单例,那么单例实例就不会被创 阅读全文
posted @ 2024-05-25 23:59 cd_along 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 多线程编程实例 了解内存模型、线程通信和线程安全之后,对多线程编程已经有了理论上的认知,现在来实战一下。所有题目在https://leetcode.cn/problemset/concurrency/。 按序打印 题干描述 给你一个类: public class Foo { public void 阅读全文
posted @ 2024-05-25 16:34 cd_along 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 我们的应用程序都是运行在多线程的环境下的,在多线程环境下的许多问题我们都了解吗? 线程间如何进行数据交换? 线程间如何进行通信与协作? 共享一个资源时如何保证线程安全? 线程数据交换 线程之间无法直接访问对方工作内存中的变量,必须通过主内存进行变量的传递。例如,线程A、B共享一个变量C,当A在工作内 阅读全文
posted @ 2024-05-25 16:33 cd_along 阅读(1) 评论(0) 推荐(0) 编辑
摘要: ThreadPoolExecutor? ThreadPoolExecutor是什么,先拆开来看,Thread Pool And Executor?那Thread Pool是什么?Executor又是什么? Executor:任务执行者,只定义了一个execute方法,接收一个Runable参数。 p 阅读全文
posted @ 2024-05-25 16:33 cd_along 阅读(3) 评论(0) 推荐(0) 编辑