
架构
文章平均质量分 92
goTsHgo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Boot 自动装配原理详解
自动装配是 Spring Boot 根据项目类路径(Classpath)中的依赖和条件(Condition),自动为应用配置所需组件(Bean)的过程。如果类路径中有 spring-boot-starter-web,Spring Boot 会自动配置一个内嵌的 Tomcat 服务器和 Spring MVC 组件。如果类路径中有 spring-boot-starter-data-jpa,Spring Boot 会自动配置数据源(DataSource)、EntityManagerFactory 等。原创 2025-05-13 16:41:20 · 831 阅读 · 0 评论 -
MapReduce的shuffle过程详解
在 MapReduce 中,Map 任务处理输入数据并生成中间键值对 〈key,value〉。这些中间结果需要传递给 Reduce 任务进行进一步处理。然而,Map 任务的输出通常分布在多个节点上,且键值对需要根据键进行分组和排序,以便每个 Reduce 任务处理特定的键范围。Shuffle 过程分区(Partitioning):将 Map 输出的键值对分配到不同的 Reduce 任务。排序(Sorting):对每个 Reduce 任务的输入数据按键进行排序。合并(Merging)原创 2025-04-29 11:39:38 · 997 阅读 · 0 评论 -
双机算法:主备、主主 对比
怎么实现:ZooKeeper集群有3个或更多节点,只有一个Leader写数据,其他Follower同步数据并处理读请求。为什么:分布式系统需要一个“指挥官”协调,避免混乱。原理:用Zab协议(类似Paxos),确保写操作顺序一致,故障时快速选新Leader。特性主备 (ZooKeeper)主主 (Memcached)节点角色1主多备全主0备数据同步主节点实时同步到备无同步,数据分片一致性强一致性弱一致性性能主节点瓶颈高并发,线性扩展故障处理选举切换,短暂停机局部失效,无切换复杂度。原创 2025-03-18 15:14:03 · 986 阅读 · 0 评论 -
主备(主从)方案 详解
特性冷备温备热备运行状态备份系统关机备份系统待机备份系统运行数据同步定期手动定期自动实时自动切换时间几小时到几天几分钟到几小时几秒到毫秒成本低中高复杂度简单中等复杂数据丢失多(几小时-几天)少(几小时)几乎无。原创 2025-03-18 14:48:27 · 1029 阅读 · 0 评论 -
任务分配器做负载均衡方案对比和选择
性能优先:F5 > LVS > HAProxy ≈ Nginx > 交换机(仅 L2/L3)。成本优先:Nginx ≈ HAProxy > LVS > 交换机 > F5。易维护性:Nginx > HAProxy > F5 ≈ 交换机 > LVS。高可用性:F5 > 交换机 ≈ LVS > HAProxy ≈ Nginx。选择时需根据业务规模、技术团队能力、预算和具体需求(如第 4 层还是第 7 层)综合权衡。小型项目从软件方案起步,中大型项目可逐步引入 LVS 或硬件设备以满足增长需求。原创 2025-03-17 11:11:47 · 962 阅读 · 0 评论 -
数据中台联接方式:以对象(主体)为中心联接
Users:存储用户信息。Orders:存储订单信息,关联到用户。-- 创建用户表UserID INT PRIMARY KEY, -- 用户IDUserName VARCHAR(100), -- 用户姓名Email VARCHAR(100), -- 用户邮箱RegisterDate TIMESTAMP -- 注册日期-- 创建订单表OrderID INT PRIMARY KEY, -- 订单IDUserID INT, -- 用户ID。原创 2025-01-23 14:16:58 · 819 阅读 · 0 评论 -
CAP原则中的P:分区容错性(Partition tolerance)
一致性(Consistency):所有节点的数据始终保持一致。可用性(Availability):系统始终能够响应请求,无论请求是否成功。分区容错性(Partition Tolerance):系统能够在部分机器故障、网络故障、机房停电等异常情况下继续运行。CAP 定理的核心内容是,在一个分布式系统中,分区容错性(P)和一致性(C)可用性(A)三者之间是相互制约的。也就是说,如果发生网络分区,系统只能选择保证一致性或可用性,但不能同时保证这两者。原创 2025-01-23 11:26:43 · 1483 阅读 · 0 评论 -
数据入湖的前提条件:数据标准 之 定义数据密级
是数据入湖前必须完成的步骤,它确保了数据的安全性、合规性和高效管理。通过科学的密级分类、清晰的判定标准和有效的保护策略,企业可以在保护数据的同时,最大限度地支持业务需求,平衡安全与效率。是对数据敏感性和重要性的分类,明确数据的保密程度和使用权限。它是确保数据安全、合规、合理使用的关键环节。下面从底层原理层面逐步解析数据密级定义的原因及其详细实现步骤。原创 2025-01-16 15:27:42 · 818 阅读 · 0 评论 -
数据入湖的前提条件:数据标准 之 发布数据标准
在数据入湖(Data Ingestion)过程中,“发布数据标准”是确保数据治理规范化、数据质量一致性以及后续数据可用性的核心环节。从底层原理来看,数据标准的发布涉及定义、审核、发布和执行多个阶段,贯穿技术、业务和治理逻辑。总结而言,发布数据标准是数据入湖治理中不可或缺的环节,其从定义、发布到执行的全过程,构建了确保数据质量与规范性的系统性保障。数据标准是关于数据属性、结构、质量、语义等方面的规范,它是数据入湖的基础条件,发布数据标准不仅是定义标准,还涉及审核、发布和监督执行的流程。原创 2025-01-16 12:10:37 · 1289 阅读 · 0 评论 -
数据入湖的前提条件:数据标准 之 明确数据Owner
明确数据Owner,就像给每一块“田地”分配一个具体的“农夫”。这个农夫负责田地的种植、维护、收获。如果田地没人管理,它可能荒废;如果有人管理,它就会不断产生价值。通过明确数据Owner,公司可以清楚知道数据的责任人是谁,提升数据质量,确保安全合规,最终让数据更高效地服务于业务需求。原创 2025-01-14 17:22:39 · 1513 阅读 · 0 评论 -
领域驱动设计(Domain-Driven Design,DDD)详解
领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法论,一种软件设计方法,帮助软件开发团队准确理解复杂业务需求,并创建反映这些需求的高效、可维护的软件系统。它强调的是基于业务领域的复杂性进行建模,并通过语言和实现这些模型的方法促进软件项目和业务专家之间的沟通。这种方法论特别适用于那些业务规则复杂、业务逻辑多变的环境。此设计方法由Eric Evans在其2004年的书《领域驱动设计:软件核心复杂性应对之道》中首次提出。原创 2025-01-10 16:45:28 · 1933 阅读 · 0 评论 -
领域驱动设计(DDD)——限界上下文(Bounded Context)详解
每个街区都有自己的规则和运作方式(比如商业区禁止夜间施工,住宅区保持安静),虽然它们同属于一个城市,但它们的行为是互相独立的。,帮助我们将复杂的业务系统划分成多个相对独立的上下文,每个上下文内都有自己独立的模型、规则和语义。这样,每个上下文的模型都是独立的,能够根据上下文的需求量身定制。限界上下文的一个重要原则是:每个上下文都应该是自治的,即使一个上下文失效,也不会影响到其他上下文的正常运行。通过限界上下文,我们能够构建出模块化、易维护且高效协作的业务系统,是 DDD 中解决复杂系统问题的重要策略。原创 2025-01-10 16:43:25 · 1607 阅读 · 0 评论 -
领域驱动设计(DDD)——实体(Entity)和值对象(Value Object) 详解和示例
例如,一个用户的 ID 是其身份的唯一标识,即使姓名或其他信息发生变化,用户的身份不变。值对象通常用来表示实体的属性或某些业务概念,帮助实体表达更复杂的业务逻辑,如地址(Address)、货币金额(Money)等。理解实体与值对象的区别和正确使用场景,可以帮助我们设计更清晰的领域模型,减少复杂度,增强代码的可维护性和可读性。即使实体的其他属性值发生变化,只要它的唯一标识(ID)保持不变,它仍然是同一个实体。值对象没有唯一标识,它通过属性值来判断是否相同(两个值对象如果属性值相同,就认为它们是相等的)。原创 2025-01-10 15:57:06 · 1498 阅读 · 0 评论 -
领域驱动设计(DDD)——聚合 详解和示例
聚合根是聚合的入口点,对聚合内的所有对象负责。聚合帮助我们定义哪些对象需要一起变化、被一起操作,同时帮助我们控制领域模型的复杂性。原创 2025-01-09 15:51:50 · 1043 阅读 · 0 评论 -
领域驱动设计(DDD)——仓储(Repository)详解和示例
*** 订单(Order):这是领域模型中的聚合根。* 聚合根是领域模型中的一个重要概念,表示领域的一部分及其边界。*/// 订单的唯一标识// 用户 ID// 订单总金额// 订单创建时间// Getter 和 Setter 方法/*** 订单仓储接口(Order Repository)。* 定义了对订单领域对象的基本操作。*//*** 保存订单。* @param order 要保存的订单对象*//*** 根据订单 ID 查找订单。原创 2025-01-09 12:29:57 · 1419 阅读 · 0 评论 -
领域驱动设计——触发领域事件 详解和示例
在领域驱动设计(DDD, Domain-Driven Design)中,“触发领域事件”是一个非常重要的概念。它涉及到如何在业务逻辑中表达和传播重要的状态变化,并实现系统中不同领域对象或模块之间的解耦与协作。下面具体解释这个概念。领域事件的定义领域事件是指在领域模型中发生的重要业务事件。这些事件是对领域中某些有意义的行为或状态变化的抽象描述,通常使用领域语言来表达。订单创建成功库存减少用户注册完成这些事件通常表示的是“已经发生的事情”,而不是未来要做的事情。它们是过去式的。触发领域事件的含义。原创 2025-01-09 12:09:34 · 907 阅读 · 0 评论 -
可扩展性设计架构模式——关注未来需求的思想
在架构设计中,可扩展性是一个至关重要的考虑因素。设计一个可扩展的系统意味着这个系统能够适应未来增长的需求,包括处理更大的数据量、支持更多的用户,或者增加新的功能而不需要重构整个系统。在底层原理层面上,实现可扩展性通常涉及到几个关键方面:模块化设计、数据管理、资源管理和系统集成。原创 2025-01-06 17:17:14 · 2614 阅读 · 0 评论