MySQL系列(30): MySQL 递归查询

开发中经常会碰到传父类id,查出其下所有子类需求。

实现思路:拿当前查到的 id 递归查询 parent_id = id,合并所有的 id 到一个字段 ids,然后查 id 在 ids 中的数据 。

实现方案:一种是在代码中递归查询实现;另一种是在 SQL语句递归查询实现。

本篇主要描述在 MySQL 中的递归查询SQL语句实现。

阅读更多

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

阅读更多