技术分享

Elasticsearch — 索引(Mapping Index)

在Elasticsearch中Mapping Index是一个核心概念,它定义了索引中数据的结构,包括字段的名称、类型、属性等。用于定义索引中文档及其字段如何被存储和索引的过程。它类似于传统关系型数据库中的表结构定义。在 MySQL 中,表结构里包含了字段名称,字段的类型还有索引信息等。在 Mapping 里也包含了一些属性,比如字段名称、类型、字段使用的分词器、是否评分、是否创建索引等属性。 ‌作用‌: • 定义索引下的字段名(Field Name)。 • 定义字段的类型,如文本型(text)、关键字型(keyword)、数字型(integer、long、float、double等)等。 • 定义字段的索引相关配置,如是否索引、是否记录位置信息等。

Elasticsearch — 如何存储数据并保持一致性?

Elasticsearch是一个基于Lucene分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间数据等。它构建于Lucene之上,并提供了一个易于使用的RESTful API来处理数据索引和搜索。Elasticsearch以其强大的全文搜索能力而闻名,并且能够实时地存储、搜索和分析大量数据。此外,Elasticsearch还常常与Logstash(用于收集、解析和处理数据流)和Kibana(用于数据可视化)结合使用,形成了ELK Stack,广泛应用于日志分析、指标分析以及其他大数据应用场景中。 在实际业务场景中我们或许是因为数据库中数量大且需要一个复杂的条件过滤时才考虑到应用Elasticsearch,因为它提供大数据量(PB)近乎实时的搜索功能。

Netty — API网关Demo

上一小节我们总结了Reactor模型,Netty基于主从Reactor模型设计了自己的模型结构,使得Netty在不同的场景下都有非常亮眼的性能和可用性表现。进入到这一小节,我又想到了那句话”Talk is cheap, show me code”。虽然上一小节我们简单写了一个“快速开始”,但是这对于要达到快速使用Netty进行网络开发的目的还远远不够。在一小节中我们会通过一系列的Demo示例熟悉Netty的开发,从代码中感受他们的特性。最后我们会通过一个简单的聊天加深我们对Netty各个核心组件的理解。最后我们动手设计实践一个API网关,认识网关的功能和结构,同时也进入提升我们使用Netty进行网络开发的熟练度,同时为后续深入源码打下基础。这一小节代码比较多,不要害怕耐心看完并付诸实践,一定会收获满满。

Java异步编程方式介绍

异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过异步实现的场景。1. 线程Thread 2. Future 3. 异步框架CompletableFuture 4. Spring注解@Async 5. Spring ApplicationEvent事件 6. 消息队列 7. 第三方异步框架,比如Hutool的ThreadUtil 8. Guava异步

Spring Boot 实现多租户架构:支持应用多租户部署和管理

常见的技术选择包括: • 数据库级多租户:使用多个数据库实例分别存储各个租户的数据,每个租户对应一个独立的数据库。 • 模式级多租户:使用同一个数据库实例,但是为每个租户创建独立的数据库模式,实现数据隔离。 • 表级多租户:在同一个数据库模式下,使用不同的表来存储各个租户的数据,实现数据隔离。 • 应用级多租户:在应用程序中实现租户隔离,例如使用Spring Cloud等微服务框架。 • 容器级多租户:使用容器技术,为每个租户创建独立的容器,实现资源隔离和控制。 4 实现多租户架构的注意事项 • 保证租户数据的隔离性和安全性。 • 设计合理的租户数据结构和关系模型。 • 统一管理租户的配置和权限。 • 保证系统的可扩展性和可伸缩性,支持水平扩展。 • 保证系统的高可用性和容错性,避免单点故障。 • 对租户数据进行备份和恢复,保证数据的可靠性和完整性

Redis 热key是什么问题,如何导致的?有什么解决方案?

做一些C端业务,不可避免的要引入一级缓存来代替数据库的压力并且减少业务响应时间,其实每次引入一个中间件来解决问题的同时,必然会带来很多新的问题需要注意,比如缓存一致性问题。 那么其实还会有一些其他问题比如使用Redis作为一级缓存时可能带来的热key、大key等问题,本文我们就热key(hot key)问题来讨论,如何合理的解决热key问题。

™️HttpClient? RestTemplate?WebClient? 不~是 RestClient

Spring 框架一直提供了两种不同的客户端来执行 http 请求: • RestTemplate: 它在 Spring 3 中被引入,提供同步的阻塞式通信。 • WebClient: 它在 Spring 5 的 Spring WebFlux 库中作为一部分被发布。它提供了流式 API,遵循响应式模型。 RestTemplate 的方法暴露了太多的 HTTP 特性,导致了大量重载的方法,使用成本较高。WebClient 是 RestTemplate 的替代品,支持同步和异步调用。它是 Spring Web Reactive 项目的一部分。 现在 Spring 6.1 M1 版本引入了 RestClient。一个新的同步 http 客户端,其工作方式与 WebClient 类似,使用与 RestTemplate 相同的基础设施。

Hutool 5.8.8 BeanUtil.copyProperties 致命异常

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 JavaBean是一个拥有对属性进行set和get方法的类。它可以被简单地定义为包含setXXX和getXXX方法的对象。在Hutool中,判定Bean的方法为:是否存在只有一个参数的setXXX方法。Bean工具类主要操作setXXX和getXXX方法,如将Bean对象转为Map等。

Lazy loaded image使用 Keycloak REST API 进行身份验证和授权

Keycloak REST API 可以被用来进行身份验证和授权。使用该API,开发人员可以轻松地在其应用程序中实现安全性验证和授权功能,同时使用Keycloak的内置功能进行管理和配置。Keycloak的REST API还提供了许多不同的终端点来进行用户和角色管理、认证事件和SAML元数据的访问等。 作为一个基于开源的身份和访问管理解决方案,Keycloak的REST API对于任何需要对应用程序进行认证和授权的开发人员都非常有帮助。
Honesty
Honesty
人道洛阳花似锦,偏我来时不逢春
最新发布
Java IO — NIO Buffer
2024-10-21
Java IO — NIO Channel
2024-10-21
Java IO — IO/NIO模型
2024-10-21
Java异步编程方式介绍
2024-10-21
Elasticsearch — 索引(Mapping Index)
2024-10-19
Elasticsearch — 如何存储数据并保持一致性?
2024-10-19