摘要:
SpringCloud微服务系列- 服务间通信之服务间调用 概述 声明式客户端是一种通过定义接口或注解来声明请求,而不是编写具体的请求逻辑代码的客户端模式。 这种方式简化了与远程服务进行通信的过程,开发者无需手动处理底层的HTTP请求或序列化/反序列化过程。 一、OpenFeign的基本介绍 1. 阅读全文
摘要:
SpringCloud微服务系列- 服务间通信之服务治理 一、服务治理 1. 为什么需要服务治理? 在没有进行服务治理前,服务之间的通信是通过服务间直接相互调用来实现的。 2. 在复杂的微服务系统中,服务间直接相互调用会产生什么问题? 微服务系统中服务众多,这样会导致服务间的相互调用非常不便,因为要 阅读全文
摘要:
分布式事务框架Seata 概要 Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的一款分布式事务解决方案,主要用于解决微服务架构中的分布式事务问题。Seata 提供了多种事务模式,如 AT(Automatic Tr 阅读全文
摘要:
SpringCloud微服务系列-微服务架构进化论 一、微服务架构进化论 1. 单体应用阶段 所有功能模块和组件都在一个单一的代码库中构建和部署。整个应用程序作为一个整体进行开发、测试和部署。 2. 垂直应用阶段(nginx负载均衡) 垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个 阅读全文
摘要:
synchronized 和 ReentrantLock的区别 在讨论synchronized 和 ReentrantLock的区别前,我们先了解一下什么是公平锁和非公平锁。 一、 公平锁和非公平锁 从公平的角度来说,Java 中的锁总共可分为两类:公平锁和非公平锁。但公平锁和非公平锁有哪些区别?孰 阅读全文
摘要:
java多线程编程问题以及解决办法 多线程编程虽然可以提高程序的性能和响应速度,但也带来了许多复杂的问题,如竞态条件、死锁、线程安全问题、内存一致性错误等。常用的解决方法包括使用同步机制(如 synchronized 和 ReentrantLock)、线程池、volatile 关键字、以及合适的线程 阅读全文
摘要:
CompletableFuture多线程并发处理 概要 一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的。 举个例子:用户请求获取订单信息,可能需要调用用户信息、商品详情、物流信息、商品推荐等接口,如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些 阅读全文
摘要:
Spring- FactoryBean使用/原理 概要 一般情况下,Spring通过反射机制利用的class属性指定实现类实例化Bean。在某些情况下,实例化Bean过程比较复杂,若按照传统的方式,则需要提供大量的配置信息,不够灵活,这时采用编码的方式能得到一个简单的方案。 Spring为此提供了一 阅读全文
摘要:
Spring容器系列-bean的生命周期 概要 对于Spring Bean的生命周期来说,可以分为四个阶段,其中初始化完成之后,就代表这个Bean可以使用了,四个阶段如下: 实例化 Instantiation : 为Bean分配内存空间 属性赋值 Populate :将当前类依赖的Bean属性,进行 阅读全文
摘要:
Spring容器系列-启动原理(下) 从上一篇文章《Spring容器系列-启动原理(上)》中,介绍了Spring容器初始化的核心方法refresh()的整体情况。这篇文章来详细展开介绍。其中比较重要的方法会标记上*** 一、refresh中的12个方法 1. prepareRefresh 主要作用: 阅读全文