什么时候应该转向微服务?

154 6K
什么时候仍然选择微服务是正确的?微服务架构是一种将软件拆分成小型独立服务组成的架构,它可以提供更好的扩展性和快速开发能力。微服务需要按照业务功能划分,实现自动化部署和独立部署,还需要具备封装、去中心化.

rockscache:保证与DB最终或强一致性的Redis缓存库

264 11K
随着缓存的引入,分布式系统中的一致性问题出现了,因为数据同时存储在两个地方:数据库和Redis。到目前为止,我们看到的所有缓存解决方案,如果没有在应用程序级别引入版本控制,都无法解决数据不一致场景。目.

Jilt :Lombok建造器的终极替代

218
Jilt 是一个Java 注释处理器 ,用于自动生成实现 Builder 设计模式的类。与同一领域的其他工具相比,Jilt 的“杀手级功能”包括: 支持构建器模式的类型安全(有时也称为分阶段、伸缩或步.

SIEVE:比LRU更快更简单的新缓存算法

117 1
新的名为SIEVE的缓存淘汰算法,简单而高效。点击标题SIEVE使用一个队列和一个指针来确定缓存中的哪些数据保留,哪些数据丢弃。它通过访问位来追踪数据的访问状态,并根据访问情况进行淘汰。SIEVE在效.

装饰器与适配器设计模式

178 8K
软件工程中的设计模式类似于解决软件设计中反复出现的问题的蓝图。这些模式提供标准化、经过时间考验的解决方案,使开发过程更加高效,最终结果更加稳健。它们是开发人员武器库中必不可少的工具,可以创建灵活、可重.

MVC模型-视图-控制器设计模式

186 12K
MVC 的起源可以追溯到几十年前,从桌面发展到跨各种编程语言的现代框架。它的历史发展反映了它在软件开发领域的持久重要性,展示了它在不断变化的技术环境中的多功能性和适应性。MVC 的组成部分模型-视图-.

适配器设计模式

85 10K
适配器设计模式是软件工程中的一个基本概念,主要用于确保不同接口之间的兼容性。它类似于现实世界的适配器,可以让具有不同插头的设备与单一电源插座配合使用。在编码领域,这种模式允许具有不兼容接口的类和谐地协.

如何从头开始开发算法 | 培养算法思维

115
算法是用于解决问题的分步指令。发展算法思维有助于将复杂问题分解为更小的问题,然后解决更小的问题并将它们组合起来为该复杂问题提供解决方案。通过解决难题来发展算法思维: 解决谜题和脑筋急转弯有助于增强逻辑.

分布式系统中的 CAP 定理权衡

146 3K
在本文中,我们将踏上揭开 CAP 定理复杂性的旅程,通过简单但相关的数据库类比的视角探索其意义和含义。1.什么是CAP定理?CAP 定理,也称为 Brewer 定理,是分布式系统中的一个基本原则,它阐.

认知负荷决定了微服务或单体

312 1 4K
这篇文章主要讨论了在软件架构设计中考虑团队认知负荷的重要性。 根据团队的能力和需求,可以选择单体架构或微服务架构。 单个团队适合使用单体架构,多个团队适合使用微服务架构。 文章还介绍了认知负荷的三种类.

PACELC定理与CAP定理比较

207
根据CAP定理,数据库即使在15天后才返回查询响应,也是可用的,但对于任何真实世界的应用程序来说,这种延迟是不可接受的。什么是CAP定理CAP定理是分布式计算领域的一个基本理论,它由计算机科学家Eri.

动态规划 (动态编程DP) 教程

124 11K
动态规划(Dynamic Programming :DP、动态编程 、动态程序设计)被定义为一种在多项式时间内解决某些特定类型问题的技术。动态规划解决方案比指数暴力法更快,并且可以轻松证明其正确性。动.

10个最佳免费商业 CRM 软件

122 4K
CRM代表客户关系管理。它指的是旨在帮助企业管理与客户的互动和关系的软件应用程序和工具。CRM 软件使公司能够简化和自动化各种与客户相关的流程,例如销售、营销和客户服务。在本文中,我们将介绍 CRM .

为什么开发人员不喜欢 TDD?

252 1
测试驱动开发(TDD)是一种软件开发过程,依赖于短期开发循环的重复: 首先开发人员编写一个自动化测试用例来定义所需的改进或新功能, 然后编写代码来通过该测试, 最后重构新代码以符合可接受的标准。 然而.

数据库主键三种唯一标识符比较

129 3K
本文讨论了在数据库模式中使用自动递增整数键和 UUID 作为主键之间的权衡。文章提议了第三种专有方案,即时间排序唯一标识符(TSID)。以下是三种方案总结:自动递增整数键方案:具有出色的性能和按时间排.

ArgoUML Java逆向工程

149
逆向工程是软件开发中的一个关键过程,它使开发人员能够获得对现有代码库的宝贵见解。它使他们能够理解复杂的系统、识别设计模式并提高可维护性。逆向工程库中的一个强大工具是 ArgoUML,它是一种流行的开源.

软件开发中的迭代与增量模型

141 2K
在软件开发中,有两种主要方法:迭代和增量。迭代模型涉及重复的开发周期,允许随着项目的发展不断改进。它灵活且能够适应变化。另一方面,增量模型侧重于以更小的功能部分交付软件,并在每个增量的基础上构建。这两.

Elasticsearch内部结构简介

95 3K
Elasticsearch 是(且不仅仅是)企业搜索的领先解决方案之一。因此,有必要了解它的内部运作方式,以便更好地利用其功能。让我们通过一个简短的旅程来了解 Elasticsearch 的内部工作原.

最有效的架构建模策略就是刚刚好

92 2K
敏捷架构思维的一个重要方面:刚刚好(JBGE: just barely good enough),它用来创建足以满足您的情况上下文的工件即可。出于某种原因,人们认为 JBGE 意味着人工智能不是很好,.

KIP-932:Kafka用作一个简单的队列

80
简单队列要求:无消息排序要求想使用Kafka作为一个简单的队列?有了新的KIP-932:引入共享(消费者)群体之前的Kafka消费者组Kafka常规消费者组非常适合可伸缩性和保持消息顺序两种选择。 保.

REST与RPC = 面向对象和函数编程

281 1 4K
REST 与 RPC 的争论:REST API ! = HTTP 远程过程调用作为开发人员,每当需要 API 时,我们常听到的一句话就是 "哦,我们可以为此开发一个 REST API"。好吧,这没什么.

最佳软件架构书籍终极清单(2024 年)

563 1 6K
这篇文章介绍 2024 年您应该阅读的最佳软件架构书籍列表。1、软件架构基础知识马克·理查兹和尼尔·福特的工程方法本书是一本关于软件架构的综合指南,由经验丰富的从业者撰写。它涵盖了软件架构的各个方面,.

如何设计高效的幂等性 API

130 2K
幂等性API意味着无论使用相同的请求体/参数成功调用该API多少次,数据/系统状态都将是相同的。在本文中,我们将提出一种同样关注 API 性能的幂等性机制。实现幂等 API 是建立安全重试机制的解决方.

TOGAF新生30个面试问题

232 10K
下面提到的最常见的 TOGAF 面试问题和答案将帮助您准备 TOGAF 面试。让我们来看看它们。1. 为什么 TOGAF 很重要?TOGAF 在揭开架构开发过程的神秘面纱方面发挥着至关重要的作用。它使.

ARIES:一种支持细粒度锁定和部分回滚的事务恢复方法

119 2K
内存与磁盘两难: 内存速度很快,但不持久。磁盘很耐用,但速度很慢。 我们想要既快速又耐用。 我们可以在内存中执行并提交事务,以实现快速执行,但提交的事务也应该是持久的。将每个事务刷新到磁盘会在每次提交.

Polyjuice:通过并发控制动态学习实现高性能事务

102 4K
Polyjuice 专为单节点多核设置而设计。它假设所有事务类型都是事先已知的,并且可以作为存储过程运行(请参阅下面的策略表部分)。它不支持 MVCC,因为它是在Silo 框架之上实现的。Polyju.

高级软件工程15本书籍

317 3K
如果您想学习软件工程技能并提高您的专业知识,那么这里是您的最佳选择。我们有一本很棒的书,可以极大地增强您在软件工程方面的知识。1)干净的代码Robert C. Martin 写了一本名为“干净代码:敏.

米其林、汉莎航空使用Kafka数据流的案例

98 3K
售后销售和客户服务需要在正确的时间获得正确的信息来做出针对具体情况的决策。使用 Apache Kafka 进行数据流处理可实现真正的解耦、领域驱动设计以及跨实时和批处理系统的数据一致性。共同的业务目标.

架构决策的制定过程

137 5K
自 20 世纪 90 年代软件架构诞生以来,架构决策 (AD) 一直在回答有关设计选项的“为什么”问题。捕捉它们的方法应该成为每个架构师工具箱的一部分。少即是多——只有关键的广告才能证明这一努力的合理.

如何按照功能设计模块包?

101 3K
下图是一个高耦合、低相干性的两个包调用设计:┌──────────────────────────────────┐     ┌──────────────────────────────┐│  pl.