微服务中的 Saga 模式
从其核心原则和真实上下文来看,基于微服务的应用是一个分布式系统。整个系统由多个较小的服务组成,这些服务共同提供整体应用程序功能。虽然这种架构风格提供了许多好处,但它也有一些局限性。微服务架构中的一个主要问题是如何处理跨多个服务的事务。本文中,我们将探索 Saga 架构模式,该模式允许我们在微服务架构中管理分布式事务。 ...
两阶段提交和 Saga 模式的不同之处
在当今的技术环境中,分布式系统因其优于单体系统而成为趋势。然而,软件架构中的一切都是一种权衡,这两种解决方案都不是防弹的。分布式系统面临的一个常见挑战是确保多个节点之间的数据一致性。本教程中,我们将分析管理分布式事务的两种不同方法之间的差异:两阶段提交和 Saga 模式。事务是我们想要对数据执行的一组操作。通常,事务表现出全有或全无...
Typesense:通用数据类型搜索技巧
本文中,我们将讨论在 Typesense 中如何为以下数据类型创建索引和搜索:产品型号 / 部件号码 / SKU、电话号码、邮箱地址、日期/时间、地理坐标、HTML 内容...
Algolia vs ElasticSearch vs Meilisearch vs Typesense 之比较
此表旨在为你提供每个搜索引擎中关键功能的客观并排比较,它们是基于每个搜索引擎的文档。本文努力在下面提供准确的信息,但如果你发现任何问题,可以留言交流。...
Typesense 简介
Typesense 是一个开源的、可容忍拼写错误的搜索引擎,针对即时(通常低于 50 毫秒)的、根据输入进行搜索的体验和开发者生产力进行了优化。如果你听说过 ElasticSearch 或 Algolia,可以这么理解 Typesense:Algolia 的开源替代方案,解决了一些关键问题、易于使用、功能齐备的 ElasticSea...
使用 Laravel 和 Typesense 构建快速、模糊的网站搜索
现代应用对数据存储能力有很高的要求。过去 10 年里,随着专门构建的数据平台的兴起,围绕数据和分析、交易、相关实体和图形以及搜索和人工智能进行了细分。仅搜索领域就出现了巨大的增长,这要求供应商将他们的平台推向新的和新兴的领域,包括支持向量嵌入。所有这些听起来都很神奇和未来主义,但如果支持人工智能的同一平台也支持传统的搜索呢?那么,支持包括排版错误在内的更人性...
修复 MySQL 8.4 的 "mysql_native_password is not loaded" 插件未加载错误
MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的一个主要变化是,默认情况下不再启用 “MySQL Native Password” 插件。此更改会影响使用 MySQL 数据库和 mysql_native_password 身份验证插件的 PHP 和其他应用。由于默认情况下不再加载 mysql_native_password 插件,因此 ...
什么是 “N+1 Select 查询问题”?
本文将研究 ORM 框架中的 N+1 查询问题。我们将从问题的概念性概述开始。还将讨论理论上可能的解决方案以及如何在实践中实现这些解决方案。让我们从头开始,了解我们为什么会遇到这个问题。我们知道 ORM 可以解决将堆中的实体映射到关系数据库中的 schema 对象问题。在关系数据库中,我们可以有外键,它表示对外键表的引用。它允许我们在 R...
使用 Laravel 创建 GraphQL API
Laravel 为构建 REST API 提供了一个干净的接口。Rest API 实际上是构建灵活且可扩展的 API 的方式。但这是有代价的,因为随着 API 的增长,API 返回的有效负载也会增加。这会导致性能下降,尤其是在应用程序有很多资源的情况下。这就是 GraphQL 的用武之地。Graphql 是一种查询语言和 API 运行时,由 Facebook...
在 Debian/Ubuntu 上安装 Manticore
支持的发行版:Debian10.0 (Buster)11.0 (Bullseye)12.0 (Bookworm)Ubuntu18.04 (Bionic)20.04 (Focal)21.04 (Hirsute Hippo)22.04 (Ubuntu Jammy)Mint1920APT 仓库在 Ubuntu/Debian/Mint 上安装 Ubuntu/Debi...