Kafka 基础知识

Kafka 是一个分布式流式处理平台。

流平台具有三个关键功能:

  1. 消息队列:发布和订阅消息流,这个功能类似于消息队列,这也是 Kafka 也被归类为消息队列的原因。
  2. 容错的持久方式存储记录消息流: Kafka 会把消息持久化到磁盘,有效避免了消息丢失的风险·。
  3. 流式处理平台: 在消息发布的时候进行处理,Kafka 提供了一个完整的流式处理类库。

Kafka 主要有两大应用场景:

More »

[译]Spring Security 和 JWT 入门

Spring Security 为 Java 应用程序提供了一套全面的安全功能,涵盖身份验证、授权、会话管理以及针对CSRF(跨站点请求伪造)等常见安全威胁的防护。Spring Security 框架具有高度可定制性,允许开发人员根据其应用程序需求来管理安全配置。它提供了一个灵活的架构,支持各种身份验证机制,如基本身份验证、JWT 和 OAuth。

More »

[译]测试 Spring Boot 应用程序:最佳实践和框架

测试是软件开发不可或缺的一部分。它可确保您的 Spring Boot 应用程序按预期运行,并在不断发展的过程中继续保持这种状态。在本文中,我们将探讨如何使用最佳实践和工具测试 Spring Boot 应用程序。

为什么测试很重要

测试至关重要,原因如下:

More »

ActiveMQ源码-BrokerService和PersistenceAdapter

activemq-broker 模块 test/java 目录下有个 IDERunner 类:

public class IDERunner {
    private static final boolean TRANSPORT_TRACE = false;

    public static void main(String[]args) throws Exception {
        BrokerService brokerService = new BrokerService();

//        brokerService.addConnector(
//            "tcp://0.0.0.0:61616?trace=" + TRANSPORT_TRACE +
//                "&transport.wireFormat.maxFrameSize=104857600");

        brokerService.setPersistent(false);
        brokerService.setUseJmx(false);
        brokerService.setAdvisorySupport(false);

        brokerService.start();
        brokerService.waitUntilStopped();
    }
}

注释掉 brokerService 调用 addConnector 方法的三行代码,然后 debug 运行该类的 main 方法。

More »

[译]关系数据库设计速成课程

原文链接:https://blog.bytebytego.com/p/a-crash-course-on-relational-database

在当今数据驱动的世界中,高效存储和管理信息是各种规模的企业和组织的关键要求。

关系数据库提供了一个强大的框架,用于根据实体之间明确定义的关系来存储和检索数据。它们提供了一种结构化的数据管理方法,使用户能够:

  • 定义表
  • 建立关系
  • 执行复杂查询以从存储的信息中提取有意义的见解

然而,仅仅使用关系数据库还不足以获得其好处。

有效的数据库设计对于优化性能、确保数据完整性和促进高效的数据检索至关重要。数据库设计原则(例如规范化、索引、连接和关系)在创建结构良好且性能良好的数据库中起着至关重要的作用。

More »

[译]分布式系统速成课程

原文链接:https://blog.bytebytego.com/p/a-crash-course-on-distributed-systems

分布式系统是多台计算机(也称为节点)的集合,它们协作执行特定任务或提供服务。

这些节点在物理上是分开的,并通过网络传递消息相互通信。分布式系统可以跨越地理边界,使其能够利用来自不同位置的资源。

img

分布式系统有几个区别于传统集中式系统的特点:

  • 分布式系统中的计算机在物理上是分开的,并通过网络连接。它们不共享内存或公共时钟。
  • 从外部视角来看,分布式系统对于最终用户来说是一个单一、统一的实体。
  • 分布式系统提供了在系统中添加或删除计算机的灵活性。
  • 分布式系统中的节点需要相互协调并达成一致才能一致地执行操作。
  • 分布式系统中的节点可能独立发生故障,并且消息可能会在网络上丢失或延迟。

分布式系统在我们的日常生活中无处不在。例如 Google 搜索等大型 Web 应用程序、在线银行系统、多人游戏等。这些系统利用多台计算机协同工作,提供无缝且响应迅速的用户体验。

More »

[译]数据库分片速成课程

原文链接:https://blog.bytebytego.com/p/a-crash-course-in-database-sharding

随着应用程序越来越受欢迎,它会吸引更多活跃用户并加入更多功能。这种增长导致每日数据生成量增加,从业务角度来看,这是一个积极的指标。

然而,它也给应用程序的架构带来挑战,特别是在数据库可扩展性方面。

数据库是任何应用程序的关键组件,但它也是最难水平扩展的组件之一。当应用程序的流量和数据量增加时,数据库可能会成为性能瓶颈,影响用户体验。

分片是一种解决数据库横向扩展难题的技术。它涉及将数据库划分为更小、更易于管理的单元(称为分片)。

在这篇文章中,我们将介绍数据库分片的基础知识,探讨其各种方法、技术考虑因素,以及展示公司如何实施分片来扩展其数据库的真实案例研究。

img

什么是分片?

分片是一种架构模式,用于解决管理和查询数据库中大型数据集的难题。它涉及将大型数据库拆分为更小、更易于管理的部分(称为分片)。

More »