JVM虚拟机(3):概念、构造、垃圾回收

JVM 全称是 Java Virtual Machine,属于程序虚拟机。

JVM 封装了一组自定义的字节码指令集,有自己的程序计数器和执行引擎,内存管理机制,线程及栈管理机制,看起来就像一台完整的计算机,这就是JVM被称为机器的的原因。

阅读更多

领域模型与建模

领域驱动设计是一种思维方式,也是一组优先任务,它旨在加速那些必须处理复杂领域的软件项目的开发。

两个前提:

  1. 大多数软件项目中,主要的焦点应该是领域和领域逻辑;
  2. 复杂的领域设计应该基于模型。

本系列文章主要是阅读《领域驱动设计–软件核心复杂性应对之道(修订版)》–Eric Evans 书笔记。

阅读更多

领域模型与建模

领域驱动设计是一种思维方式,也是一组优先任务,它旨在加速那些必须处理复杂领域的软件项目的开发。

两个前提:

  1. 大多数软件项目中,主要的焦点应该是领域和领域逻辑;
  2. 复杂的领域设计应该基于模型。

本系列文章主要是阅读《领域驱动设计–软件核心复杂性应对之道(修订版)》–Eric Evans 书笔记。

阅读更多

事件驱动架构

事件驱动架构(Event Driven Architecture)是一种分布式异步架构模式,用于创建可伸缩的应用程序,可用于小规模或大规模的应用程序,是解耦复杂系统组件的一种处理手段。

事件驱动架构模式主要包含两种实现方式,分别是调停者拓扑(Mediator Topology),代理者拓扑(Broker Topology)。Mediator 拓扑结构需要在一个事件通过 Mediator 时精心安排好具体的步骤,而 Broker 拓扑结构无需 Mediator ,而是由你串联起几个事件。

本文主要参考:Software Architecture Patterns > Chapter 2. Event-Driven Architecture

阅读更多

高性能分布式发号器(ID生成器)

分表分库的分布式应用通常需要用到 ID 生成器生成流水号(支付流水号,订单号等),又称为发号器,以标识数据的全局唯一,ID 全局不可重复。

需要特别注意的是发号器服务的高可用性高性能。当业务严重依赖发号器服务时,发号器服务有可能成为整个系统的短板。

所以发号器服务需要高可用集群部署来保障高可用性,需要高性能以满足高并发的场景。

阅读更多

Spring Cloud(二十二):服务容错 Hystrix 框架核心原理

Netflix Github 官方文档:https://github.com/Netflix/Hystrix/wiki

在分布式环境中,系统所依赖的服务的稳定性存在不可控因素,不可避免地会存在失败。

Hystrix 通过隔离服务之间的访问点、阻止它们之间的级联故障并提供回退选项来做到这一点,所有这些都可以提高系统的整体弹性。

阅读更多

Spring Boot 2系列(六十):Tomcat 中 NIO 模型与启动流程

以 Spring Boot 2.6.3 版本,spring-boot-starter-web 嵌入的 9.0.56 版本 tomcat-embed-core 为例,分析 Tomcat 中的 NIO 的配置与优化。

注意:Tomcat 8.5 移除了 BIO,默认启用 NIO,Tomcat 的架构和核心组件已与 Tomcat 7.x 版本已略有不同,与网上很多基于 Tomcat 7.x 版本分析的文章是不符的,需要自己走读源码。

阅读更多