Elasticsearch 入门指南
Elasticsearch 入门指南 什么是 Elasticsearch? Elasticsearch(简称 ES)是一个基于 Apache Lucene 的开源、分布式搜索和分析引擎。它支持全文搜索、结构化搜索、实时分析,并且可以处理海量数据。 Elasticsearch 的特点 分布式架构:支持多节点、自动分片(sharding)和副本(replica)。 全文搜索:基...
Elasticsearch 入门指南 什么是 Elasticsearch? Elasticsearch(简称 ES)是一个基于 Apache Lucene 的开源、分布式搜索和分析引擎。它支持全文搜索、结构化搜索、实时分析,并且可以处理海量数据。 Elasticsearch 的特点 分布式架构:支持多节点、自动分片(sharding)和副本(replica)。 全文搜索:基...
问题描述 假设有一个列表查询页面,查询的数据是多个数据源的聚合,数据源由不同的微服务管理,如何实现分页查询? 解决方案 为了表述方便,把涉及到的微服务分为主微服务和辅微服务。提供主体数据的微服务称为主微服务,提供关联数据的微服务称为辅微服务。这里根据查询条件的不同又分为三种情况 查询条件字段在主微服务中 查询条件字段在主微服务中,则查询过程为:从数据库中根据条件查询出分页结果,将辅...
垃圾回收 (Garbage Collection,简称 GC) 是编程语言中提供的自动的内存管理机制,自动释放不需要的内存对象,让出存储器资源。GC 过程中无需程序员手动执行。GC 机制在现代很多编程语言都支持,GC 能力的性能与优劣也是不同语言之间对比度指标之一。 Golang 在 GC 的演进过程中也经历了很多次变革, Go V1.3 之前的标记-清除算法 Go V...
寻找一种易于理解的一致性算法(扩展版) 寻找一种易于理解的一致性算法(扩展版) 摘要 1 介绍 2 复制状态机 3 Paxos 算法的问题 4 为了可理解性的设计 5 Raft 一致性算法 5.1 Raft 基础 5.2 领导人选举 ...
定义 限流是指在单位时间内限制接口的请求数量。其主要作用有两个: 保护服务的处理能力:避免因流量洪峰导致系统超载或崩溃。 防范恶意调用:防止人为或恶意的频繁请求耗尽系统资源。 限流位置 客户端:在客户端或前端直接限制用户的请求频率。例如,用户提交表单时设置按钮的防重复点击,或通过前端代码限制调用频次。这样可以有效降低无意义的请求传递到后端。 ...
Kafka 介绍 Apache Kafka 是一个开源的分布式事件流处理平台,最初由 LinkedIn 开发,并在 2011 年开源,现由 Apache 软件基金会维护。Kafka 的设计目标是 高吞吐量、低延迟、可扩展、高可用性,适用于实时数据流处理和大规模数据集成。 Kafka相比于传统的消息中间件有三个角色: 消息系统:Kafka 是高性能的消息队列,单机吞吐量可到达百万级...
日志无处不在:系统的基础 日志结构在许多关键系统中起着基础性的作用: 关系数据库:数据库首先写入预写日志(WAL),以确保事务的原子性和持久性。即便数据库崩溃,所有表的数据也可以从 WAL 中重建。 文件系统:如 XFS 文件系统,先将文件元数据的更改写入日志,然后再写入文件本身,以保证一致性。 分布式系统:Raft、ZAB、Paxos 等状态机复制协议依赖日志,确保所有副...
RabbitMQ是目前非常热门的一款消息中间件,其凭借高可靠、易扩展、高可用及丰富的功能特性受到众多开发者的青睐,在互联网、金融传统行业中都在大量的使用。 消息中间件 什么是消息中间件 消息中间件,也称消息队列,是一种在分布式系统中用于消息通信、传输和处理的软件,它提供了异步通信的机制,解耦了系统中的不同服务或组件,使它们能够以松耦合的方式进行交互。 它一般有两种传递模式:点...
main: 具有无限生存期的主要分支,用于存放稳定的、可发布的代码。 dev: 作为主开发分支,所有的功能分支都会从这里拉取,并在开发完成后合并回这个分支。 feature: 每开始一个新功能都要从dev分支拉取一个新的功能分支。命名为 feature-*。完成后合并回 dev 分支。功能分支通常仅存在于开发人员存储库中,而不存在于origin 中。功能完成后,可以直接删除...
设计一个拥有上百万用户的系统是很有挑战性的,这将是一个不断优化、持续改进的过程。在本章中,我们先创建一个单用户的系统,然后逐渐将其扩展成可以服务上百万用户的系统。读完本文,你将掌握几个能帮助你破解系统设计面试难题的技巧。 单服务器配置 万里征途总是从第一步开始的,构建一个复杂系统也是如此。我们从简单的部分着手,先让所有的功能都在一个服务器上运行。图1-1展示了如何配置单台服务器,让一切都...
业务处于起步阶段时,流量非常小,无论是读请求还是写请求,直接操作数据库即可,但是随着业务量的增长,项目请求量越来越大,这时如果每次都从数据库中读数据,那肯定会有性能问题。 这个阶段通常的做法是,引入缓存来提高读性能。 我们常用的缓存方案一般是这样的: 写请求依旧只写数据库 读请求先读缓存,如果缓存不存在,则从数据库读取,并重建缓存 同时,写入缓存中的数据,都设置失效时间 ...
在当今高度并发的数据库环境中,有效的并发控制是至关重要的。MVCC是MySQL中被广泛采用的并发控制机制,它通过版本管理来实现事务的隔离性,允许读写操作同时进行,提高数据库的并发性能和响应能力。 MVCC 介绍 MVCC,全称 Multi-Version Concurrency Control,即多版本并发控制 MVCC的目的主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,...
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现”API First”的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。 协议 API与用户的通信协议,总是使用HTTPs协议。 域...
对于一个大型网站来说,随着网站访问量的快速增长,单台服务器已经无法承担大量用户的并发访问,必须以增加服务器的方式,提高计算机系统的处理能力,计算速度,进而满足当前业务量的需求。那么如何实现服务器之间的协同功能呢?Nginx提供的反向代理和负载均衡功能是一个很好的解决方案。 反向代理 在Nginx服务器中,反向代理的配置非常简单,最主要的指令就是“proxy_pass”,用于设置后...
背景 在具体介绍一致性哈希算法之前,先问一个问题:为什么需要一致性哈希算法?下面我们通过一个案例来回答这个问题。 假设有这么一种场景:我们有三台缓存服务器分别为:node0、node1、node2,有3000万个缓存数据需要存储在这三台服务器组成的集群中,希望可以将这些数据均匀的缓存到三台机器上,你会想到什么方案呢? 我们可能首先想到的方案是:取模算法hash(key)%N,即:对缓存...