摘要:
1 Kafka的事务 V.S RocketMQ RocketMQ事务主要解决问题:确保执行本地事务和发消息这俩操作都成功/失败。RocketMQ还有事务反查机制兜底,更提高事务执行的成功率和数据一致性。 而Kafka事务,是为确保在一个事务中发送的多条消息,要么都成功,要么都失败。 这里的多条消息不 阅读全文
摘要:
1 行业背景 基金公司核心业务主要分为: 投研线业务,即投资管理和行业研究业务,体现基金公司核心竞争力 市场线业务,即基金公司利用自身渠道和市场能力完成基金销售并做好客户服务 随互联网技术发展,基金销售渠道更加多元化,线上成为基金销售重要渠道。相比传统基金客户,线上渠道具有客户基数大,水平参差不齐的 阅读全文
摘要:
扣减库存需要查询库存是否足够: 足够就占用库存 不够则返回库存不足(这里不区分库存可用、占用、已消耗等状态,统一成扣减库存数量,简化场景) 并发场景,若 查询库存和扣减库存不具备原子性,就可能超卖,而高并发场景超卖概率会增高,超卖数额也会增高。处理超卖的确麻烦: 系统全链路刷数会很麻烦(多团队协作) 阅读全文
摘要:
0 前言 秒杀,既有需求真实且迫切的用户,也有试图牟利的黄牛。系统挑战,就是相较于以往千倍万倍的用户规模,可能是真人可能是机器人,在同一瞬间对系统发起冲击,需要海量的计算资源才能支撑。 秒杀系统的设计套路往往适用于其他高并发场景,具有较高的借鉴价值。同时,其特殊的挑战和需求,需要架构师在设计中权衡考 阅读全文
摘要:
精简化事件:事件驱动架构的精益力量 在软件开发领域,事件驱动架构(Event-Driven Architecture,简称 EDA)因其促进实时通信、具有良好的可扩展性以及构建松耦合系统的能力,越来越受到重视。其核心思想是通过事件来实现通信。在使用事件驱动架构的过程中,关于事件的设计一直存在争议:我 阅读全文
摘要:
前言 在上一篇文章中,我介绍了领域驱动设计(DDD)的战略设计,以及如何处理大局。本篇文章将深入探讨领域驱动设计(DDD)的核心——战术设计。 Vaughn Vernon 在他的书《Implementing Domain Driven Design》(实现领域驱动设计)中巧妙地将战略设计比作登山者规 阅读全文
摘要:
1 你需要知道的 - 战略设计 DDD是一种软件设计和构建方法,其重点在于独立于数据持久化等技术问题,准确表达业务规则。 不幸,DDD 对新手来说极具挑战性,部分原因是它有许多独特的概念需要学习。本文我简要介绍这些重要的思想,以便你能自信继续你的 DDD 旅程。 第一部分将侧重于与所有参与软件开发的 阅读全文
摘要:
DDD是一种成熟的软件设计方法,旨在确保领域专家和开发人员能够有效合作,创造出高质量的软件。 本文介绍咋将FP(函数式编程)应用于DDD的实现,使其既优雅又简洁。C4模型中,软件架构图分为四个层次:“系统上下文”、“容器”、“组件”和“代码”。 “组件”是构成容器的基本单位,也是本文描述的层次。 1 阅读全文
摘要:
本文讨论软件设计中的决策,特别是关于将较大的系统拆分为多个可独立部署的服务端点。不会特别讨论【服务端点设计】,但我想探讨一下为创建多个服务应用程序进行构思的阶段。 面对复杂问题,通常试图理解复杂性的各部分。将问题拆解为更易于理解和处理的小模块,可以更有效地应对。 如同在许多产品/项目管理周期中描述的 阅读全文
摘要:
有一种办法:发送会议邀请给所有团队,经过101次会议后,发布维护横幅,所有人同时点击发布按钮。或... 可用适配器,但微调。没错!就像软件开发中90%问题一样,有种模式帮助你找到聪明解决方案。 1 问题 你已经有了一个模式,消费者已知咋处理它,所以他们依赖你保持兼容性,但实际上,你要打破这种兼容性。 阅读全文