领域驱动设计是一种设计思想,来源于 Eric Evans 的一本书 Domain-Driven Design –Tackling Complexity in the Heart of Software。它倡导通过建立领域模型来驱动软件的设计,也就是从业务知识出发设计业务人员和技术人员都能理解的模型。 统一语言是领域驱动设计的关键概念之一。领域建模的核心难点就在于业务人员和 […]
领域驱动设计是一种设计思想,来源于 Eric Evans 的一本书 Domain-Driven Design –Tackling Complexity in the Heart of Software。它倡导通过建立领域模型来驱动软件的设计,也就是从业务知识出发设计业务人员和技术人员都能理解的模型。 统一语言是领域驱动设计的关键概念之一。领域建模的核心难点就在于业务人员和 […]
导读 第一部分: 基本介绍 1. 领域模型概述 2. 消息传输模型介绍 3. 普通消息的可靠性 小节 第二部分: 顺序消息 1. 我们遇到的线上问题 2. RocketMQ消息队列为什么会有顺序问题? 3. 顺序消息的使用场景 4. 实际开发过程中如何保证消息的顺序性? 5. 使用顺序消息需要注意的点 小节 第三部分: 事务消息 1. 我们遇到的线上问题 2. 为什么使用了 […]
Apache ZooKeeper 在 Apache Kafka 的发展中发挥了至关重要的作用,尤其是在其早期版本(0.9.0.0 之前)中,Kafka的很多管理控制层面的逻辑都是依赖于ZooKeeper来实现的。在本文中主要探讨ZooKeeper 在 Kafka 架构中不同版本的角色,以及 Kafka如何在不断迭代中减少对 ZooKeeper 的依赖。 Apa […]
事务性外发模式确保在对数据库进行更改时,消息总是会发布到消息代理,即使消息代理最初发生故障。这对于事件驱动架构来说至关重要,因为它可以确保当其他服务从您的事件中重建状态时的一致性。 0:00 网络故障 0:54 原子性事务 2:00 发布消息 2:52 至少一次投递 3:32 幂等性 4:14 结束语 Outbox Pattern | Drawing Boxes 翻译 […]
1 背景介绍 2 工作原理 2.1 短链接生成与存储 2.2 短链接返回与传播 2.3 用户点击与跳转 3 核心算法 3.1 哈希算法 3.2 分布式 ID 3.3 Base62 编码 4 安全与防护 4.1 长链接合法性校验 4.2 重复生成短链接防护策略 4.3 短链接有效性验证 5 系统性能优化 5.1 数据库索引 5.2 缓存应用 5.3 号段模式优化 5.4 分表 […]
详细探讨了康威定律在软件设计中的重要性及其影响。康威定律指出,设计系统的组织会产生一个与其沟通结构相似的设计。作者通过多个实例展示了不同团队结构如何影响架构设计,包括前端与后端团队的协作、技术栈分层、以及跨职能团队的架构影响。文章介绍了逆康威操作的概念,即通过调整组织结构来实现期望的架构目标,并探讨了领域驱动设计和微服务架构如何与康威定律协同工作。最后,提醒读者在设计架构或 […]
视频对比了REST和GraphQL两种API构建方式。通过将两种技术比作健谈的R和保守的G,用以说明REST倾向于返回大量数据,而GraphQL则能够精确提供所需信息。视频详细解释了REST和GraphQL的基本概念、术语和操作方法,指出REST依赖HTTP请求,返回整个数据集,而GraphQL作为查询语言,能够在单个请求中从多个数据源获取数据。视频还展示了两者的相似之处和 […]
一、背景 2023年确定要将云音乐整体服务搬迁至贵州机房,项目需要在各种限制条件下,保障2000+应用、100w+QPS的服务稳定迁移,是云音乐历史上规模最大、人员最多、难度最高的技术项目。在此过程中,解决了大量历史技术债务,同时化解了大量新增系统性风险。以下为总体方案回顾。 二、项目难点 迁移规模大 此次需要云音乐以及旗下独立App的服务均整体迁移至贵州。涉及2000+应 […]
本视频探索了事件溯源这一强大概念。通过事件溯源,系统不再只存储当前状态,而是记录每个状态变化作为事件。这允许我们能够追溯某一特定时间点的状态,并确保数据完整性。视频讲述了如何通过分析事件序列来优化审计和分析,同时解决了并发问题,确保系统的松散耦合。还介绍了乐观并发技术、状态快照、最终一致性等关键概念,以及事件溯源如何与CQRS和DDD结合使用,以实现更加高效和可靠的系统架构 […]
本视频详细讲解了微服务架构的基本概念及其与传统单体架构的对比。通过探索什么不是微服务(即传统的单体架构),视频揭示了单体架构可能导致的复杂性和维护难题。随后,介绍了模块化单体架构如何通过将大型系统划分为更小的子系统来提高代码管理性。最终,演变成微服务体系,它们作为独立的进程运行,支持独立更新、独立扩展、和更高的故障隔离。视频进一步探讨了微服务间通信、API边界的稳定性以及网 […]
在这段视频中,我们详细对比了两个流行的Java框架,Spring Boot和Quarkus。Spring Boot作为一个久经考验的框架,以其自动配置和庞大的生态系统为Java开发者提供了简单且高效的开发体验。另一方面,Quarkus则为容器优化和云原生应用设计,具有更快的启动时间和更高的资源利用效率。视频还比较了两者在构建时间和运行时性能上的差异,强调了Quarkus通过 […]
在构建复杂系统时,开发者常用实体及其关系来建模,然而,随着系统的增长,这种方法容易导致系统复杂难懂。通过限定上下文,开发者可以将代码划分为不同的区域,每个区域使用特定的术语和规则,简化系统管理和维护。视频通过火车票预订系统等实例,详细解释了如何使用限定上下文来处理不同的业务需求和复杂性。它介绍了绘制上下文地图、识别子域(核心领域、支撑子域、通用子域)的方法,以及在不同上下文 […]
1. 分布式唯一 ID 特性 在业务开发中,会存在大量的场景都需要唯一 ID 来进行标识。比如,用户需要唯一身份标识;商品需要唯一标识;消息需要唯一标识;事件需要唯一标识等等。尤其是在分布式场景下,业务会更加依赖唯一 ID。 分布式唯一 ID 的特性如下: 全局唯一:必须保证生成的 ID 是全局性唯一的,这是分布式 ID 的基本要求; 有序性:生成的 ID 需要按照某种规则 […]
本视频详细介绍了领域驱动设计(DDD)的关键概念,包括统一语言、聚合根、领域事件、实体、值对象以及仓库等术语。DDD 的核心并非技术细节,而是强调软件设计的语言和结构应与业务领域对齐,从而构建出领域专家与技术人员都能理解的丰富模型。值对象(如颜色)应当是不可变且基于它们的值来比较相等性。实体(如轮胎)则通过唯一ID标识,即使属性相同也视为不同实例。领域事件表示领域中重要发生 […]
视频解释了 CQS(命令查询分离)和 CQRS(命令查询职责分离)这两个设计原则。CQS 原则认为一个方法应该专注于执行读取或写入操作之一,而不是同时进行;例如,应将队列操作分为检查和删除两个独立的方法。CQRS 进一步将这种分离应用到更大的架构中,将读取和写入操作视为独立的子系统,甚至可能拥有不同的数据模型。这种分离使得系统的不同部分可以独立优化,如通过缓存 […]
CRUD (1)Event Sourcing (1)graphql (1)id (1)quarkus (1)rest (1)RocketMQ (1)Spring Boot (1)zk (1)zookeeper (1)事务消息 (1)值对象 (1)原子性 (1)唯一ID (1)子域 (1)幂等 (1)康威定律 (1)微服务架构 (1)总体方案 (1)持续集成 (1)支撑域 (1)故障恢复 (1)数据架构图 (1)方案选型 (1)日记 (1)服务发现 (1)服务治理 (1)服务注册 (2)机房 (1)核心域 (1)泄漏 (1)洋葱架构 (1)消息队列 (2)源码剖析 (1)熔断 (1)生态 (1)画图工具 (1)研发团队 (1)线程 (2)组织架构 (1)编码 (1)视频 (10)读写分离 (1)贵州 (1)软件设计 (1)迁移 (1)通用域 (1)集群化 (1)雪花算法 (1)顺序消息 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang