当前位置: 首页 > news >正文

【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步

MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步

  • 前提介绍
  • MySQL和ElasticSearch的同步双写
    • 优点
    • 缺点
      • 针对于缺点补充优化方案
  • MySQL和ElasticSearch的异步双写
    • 优点
    • 缺点
  • 定时延时写入ElasticSearch数据库机制
    • 优点
    • 缺点
  • 开源和成熟的数据迁移工具选型
    • Logstash组件同步数据机制
      • Logstash是什么
      • 配置过程
        • **配置Logstash的input插件**
        • **配置Logstash的filter插件**
        • **配置Logstash的output插件**
        • 启动Logstash并确认同步
    • Elasticsearch JDBC同步数据
      • Elasticsearch JDBC插件
        • 安装Elasticsearch和JDBC插件
          • 安装JDBC插件
          • 验证插件安装
        • 配置JDBC插件
          • JDBC配置选项
        • 配置Elasticsearch的mapping和index
        • 启动JDBC插件并同步数据
      • Elasticsearch JDBC插件同步的问题
    • 使用Canal进行数据同步
      • Canal的原理分析
      • 主要流程如下
      • 配置安装流程
        • 安装Canal和Elasticsearch
        • 配置Canal
          • 创建Canal的实例
          • 配置Canal的规则
        • 配置Canal的filter插件
          • 配置Canal的步骤
            • 设置数据库的正则表达式,用于匹配需要同步的数据库
          • 设置表的正则表达式,用于匹配需要同步的表
        • 配置Canal的output插件
          • 配置流程
    • 使用Debezium同步数据
      • 配置Debezium的同步体系的流程
        • 配置Debezium
        • 配置Kafka
        • 配置Logstash
        • 配置Elasticsearch
        • 配置Debezium连接到MySQL
        • 配置Debezium发送到Kafka
        • 配置Logstash发送到Elasticsearch(可选)

前提介绍

在现代数据处理中,将MySQL数据同步到Elasticsearch(ES)是一项常见的任务。本文将深入分析MySQL数据同步到ES的四种常见解决方案,并为您提供详细的解释和比较。无论您是使用Logstash、MySQL binlog、MySQL插件还是开源工具,我们将为您提供深入的技术分析和实现细节。通过本文,您将了解每种方案的优缺点、适用场景以及如何选择最适合您需求的方案。让我们一起探索如何实现高效的MySQL数据同步到Elasticsearch!
在这里插入图片描述

MySQL和ElasticSearch的同步双写

MySQL数据同步到Elasticsearch(ES)的双写机制是一种常见的数据处理方式,用于确保MySQL和ES之间的数据一致性。通过这种双写机制,可以确保MySQL和ES之间的数据保持一致性,使得应用程序可以同时从MySQL和ES中获取准确的数据。
在这里插入图片描述

  • 第一步:数据写入MySQL:应用程序将数据写入MySQL数据库,确保数据在MySQL中持久化。

  • 第二步:数据同步到ES:触发器或存储过程将数据同步到ES,可以使用适当的工具或自定义脚本来实现数据同步,通过调用ES的API将数据插入、更新或删除到ES中。

注意,由于异步的特性,可能会导致主备数据不一致的情况发生

优点

  • 业务逻辑简单:MySQL数据同步到Elasticsearch的双写机制相对简单,易于实现和维护。
  • 实时性高:通过双写机制,可以实现MySQL和Elasticsearch之间的实时数据同步,保持数据的及时性。

缺点

  • 硬编码:需要在每个需要写入MySQL的地方都添加写入Elasticsearch的代码,导致代码的耦合性增加。
  • 业务强耦合:双写机制使得业务与Elasticsearch强耦合,增加了系统的复杂性和维护成本。
  • 存在双写失败丢数据风险:如果写入MySQL成功但写入Elasticsearch失败,可能会导致数据不一致或丢失的风险。
  • 性能较差:由于双写机制需要同时写入MySQL和Elasticsearch,会增加系统的负载和延迟,导致性能下降。

针对于缺点补充优化方案

  • 解耦业务:将MySQL和Elasticsearch的写入操作解耦,使用消息队列或异步任务来处理Elasticsearch的写入,减少对业务代码的侵入。
  • 性能优化:通过优化MySQL和Elasticsearch的配置、增加硬件资源或使用缓存等手段,提升系统的性能,减少性能下降的影响。

MySQL和ElasticSearch的异步双写

通过上面说的解耦业务,因此我们可以通过消息队列(MQ)来实现异步的多源写入,就作为了异步双写。异步双写是指在主库上进行数据修改操作时,将数据异步写入备库。这种方式可以降低主库的写入延迟,并且备库出现问题时不会影响主库的性能。
在这里插入图片描述
通过借助消息队列实现异步的多源写入,可以提高系统的性能、可扩展性和可靠性,同时降低数据源之间的耦合度。这种方案适用于需要将数据写入到多个数据源的场景,如日志记录、数据同步和数据分发等。

优点

  • 高性能:通过使用消息队列,应用程序可以将数据异步地发送到消息队列中,而不需要等待数据写入到多个数据源。通过使用消息队列(MQ)进行异步写入,可以提高系统的吞吐量和响应速度

  • 解耦和扩展性:使用消息队列可以将数据源之间的耦合度降低,使得应用程序更加灵活和可扩展。可以根据需要增加或减少数据源,而不需要修改应用程序的代码。

  • 容错和可靠性:消息队列通常具有持久化和消息重试机制,可以确保数据的可靠传输和处理。即使某个数据源不可用,数据仍然可以在消息队列中等待处理。

  • 异构数据源支持:通过使用消息队列,可以将数据写入到不同类型的数据源,如关系型数据库、NoSQL数据库或其他存储系统,从而实现异构数据源的支持。

注意,使用消息队列进行异步写入需要考虑一些因素,如消息队列的性能、消息的顺序性和一致性等。此外,需要确保消息队列和数据源之间的数据一致性,并处理可能出现的错误和异常情况。

缺点

  • 硬编码问题:接入新的数据源需要实现新的消费者代码,这可能增加开发和维护的复杂性。

  • 系统复杂度增加:引入了消息中间件,增加了系统的复杂性和部署的难度。

  • 延时控制:由于MQ是异步消费模型,用户写入的数据不一定能立即在ES中看到,可能会造成一定的延时。

定时延时写入ElasticSearch数据库机制

上面两种方案在处理MySQL数据同步到Elasticsearch,开发以及硬编码问题会导致代码的侵入性过强。如果对实时性要求不高,可以考虑使用定时器来处理数据同步。
在这里插入图片描述

  1. 在数据库表中添加一个名为timestamp的字段,该字段会在任何CURD操作发生时自动更新。

  2. 原有的程序中的CURD操作保持不变。

  3. 添加一个定时器程序,定期扫描指定的表,并提取在指定时间段内发生变化的数据。

  4. 将提取的数据逐条写入到Elasticsearch中,以保持数据的同步性。

注意,由于定时器的方式是异步的,所以对于实时性要求较高的场景可能不适用。但对于一些不需要实时同步的情况,定时器方案可以提供一种简单有效的数据同步方式。

优点

通过这种方式,可以避免对原有程序进行大量修改,减少硬编码的问题。定时器程序可以根据需求设置合适的时间周期,将变化的数据同步到Elasticsearch中。

缺点

定时任务是指在固定的时间点或时间间隔内将主库中的数据同步到备库中。这种方式可以避免主库的写入延迟,同时保证备库中的数据与主库中的数据一致,但是可能会存在备库中数据的滞后问题。

开源和成熟的数据迁移工具选型

当开发时间比较紧张,以及针对于开发的进度要求必须快速落地的时候,那么我们是没有那么多的时间去设计和开发迁移组件的,那么这个时候我们就需要寻找站在巨人的肩膀上去实现和使用了,我们去

Logstash组件同步数据机制

Logstash是什么

Logstash是一种出色的开源数据收集引擎,能够从各种不同的来源(如MySQL)高效地采集数据,并将其转换为Elasticsearch可索引的格式。
在这里插入图片描述

配置过程

首先,你需要根据你的操作系统,下载并安装Logstash和Elasticsearch。可以从官方网站或软件包管理器获取安装程序。配置对应的Logstash的插件配置信息:input插件、filter插件和output插件。

配置Logstash的input插件

在Logstash的配置文件中,你需要指定一个input插件,用于从MySQL读取数据。例如,可以使用jdbc插件来连接MySQL数据库。在配置文件中,你需要提供数据库的连接信息,例如主机、端口、数据库名称、用户名和密码,以及要读取的数据表和字段。

配置Logstash的filter插件

接下来,你需要配置filter插件来转换数据格式。可以通过添加filter插件来实现各种转换规则和筛选条件。例如,你可以使用mutate过滤器来对字段进行重命名、删除或重新格式化。还可以使用grok过滤器来解析复杂的日志行。根据你的需求,可以添加多个filter插件到配置文件中。

配置Logstash的output插件

最后,你需要配置output插件,以将转换后的数据发送到Elasticsearch。为此,你需要指定Elasticsearch的连接信息,如主机、端口和索引名称。可以使用elasticsearch插件作为output插件。根据需要,你还可以设置其他选项,例如数据批处理大小、并发请求数量等。

启动Logstash并确认同步

保存并关闭Logstash的配置文件后,可以通过运行Logstash来启动同步过程。可以使用命令bin/logstash -f <config_file>来运行Logstash,其中<config_file>是你的配置文件路径。Logstash将连接到MySQL数据库,并将数据转换为Elasticsearch可索引的格式,并通过output插件将其发送到Elasticsearch。确保Logstash正确运行,并监视其输出,以确保数据正确地同步到了Elasticsearch。

Elasticsearch JDBC同步数据

Elasticsearch JDBC插件

Elasticsearch JDBC插件是一种强大的工具,可以将MySQL数据导入到Elasticsearch中实现数据同步。该插件通过JDBC连接器从MySQL数据库中提取数据,并将其转换为Elasticsearch文档格式,然后将这些文档插入到Elasticsearch索引中。

在这里插入图片描述

安装Elasticsearch和JDBC插件

首先,确保你已经安装了Elasticsearch,并根据操作系统配置好相关环境。接下来,通过Elasticsearch的插件管理命令来安装JDBC插件,以便能够使用JDBC连接器。

安装JDBC插件

使用插件管理命令来安装JDBC插件。命令可能类似于elasticsearch-plugin install <plugin_name>,其中<plugin_name>是JDBC插件的名称。执行该命令后,Elasticsearch会自动下载并安装JDBC插件。

验证插件安装

完成插件安装后,可以通过运行以下命令来验证插件是否成功安装:

bin/elasticsearch-plugin list

此命令将显示已安装的插件列表,你应该能够在列表中找到刚刚安装的JDBC插件。

配置JDBC插件

在Elasticsearch的配置文件中,你需要指定JDBC插件的连接信息,如MySQL数据库的主机、端口、数据库名称、用户名和密码。此外,你还可以配置其他JDBC插件选项,如表过滤、列选择等。通过这些配置,JDBC插件将能够从MySQL读取数据。

JDBC配置选项

一旦配置完成并重启Elasticsearch,JDBC插件将会使用你指定的连接信息从MySQL数据库中读取数据,并将其同步到Elasticsearch中。

  • 打开Elasticsearch的配置文件:使用文本编辑器打开Elasticsearch的配置文件,其路径通常为 <ES安装目录>/config/elasticsearch.yml

  • 配置JDBC插件的连接信息:在配置文件中找到JDBC插件相关的配置项,一般以 jdbc. 开头。根据你的MySQL数据库的连接信息,进行如下配置:

    • jdbc.driver: 设置MySQL的JDBC驱动类名,例如 com.mysql.cj.jdbc.Driver
    • jdbc.url: 设置MySQL数据库的连接URL,包含主机、端口和数据库名称等信息。
    • jdbc.userjdbc.password: 设置连接MySQL数据库所需的用户名和密码。
  • 配置其他选项(可选):根据你的需求,还可以配置其他选项来进一步调整JDBC插件的行为。例如,你可以设置表过滤器(jdbc.sql)来选择你要读取的特定表,或者指定列选择(jdbc.columns)来限制读取的数据列。

注意,重启Elasticsearch,在修改配置文件后,重启Elasticsearch以使配置生效。你可以通过运行相应的启动命令或使用启动脚本来重启

配置Elasticsearch的mapping和index

在Elasticsearch中,定义Mapping和Index是为了正确地索引从MySQL读取的数据。Mapping用于定义数据字段的类型和属性,而Index则用于定义数据索引的方式。根据数据的结构,你需要创建并配置适当的Mapping和Index,以确保数据被正确地索引到Elasticsearch中。

启动JDBC插件并同步数据

启动Elasticsearch后,你可以通过运行JDBC插件来启动同步过程。

JDBC插件将连接到MySQL数据库,并将数据以Elasticsearch可索引的形式发送到Elasticsearch。你可以使用JDBC插件的命令行工具或API来启动同步,并监视同步的进展和状态。

Elasticsearch JDBC插件同步的问题

使用Elasticsearch JDBC插件同步MySQL和ES的好处是它非常易于设置,并且能够高效地处理大量数据。然而,需要注意的是它可能会对MySQL的性能产生一定的影响,并且无法处理复杂的数据转换。

使用Canal进行数据同步

Canal是阿里巴巴开源的一个MySQL数据库增量数据同步工具。通过解析MySQL的binlog日志,Canal能够捕获并获取增量数据,然后将这些数据发送到指定的位置,包括Elasticsearch(ES)。

使用Canal同步MySQL和Elasticsearch的好处在于它能够处理大量数据,并且提供灵活的数据转换能力。

Canal的原理分析

Canal是一种基于数据库增量日志解析的工具,它提供了增量数据的订阅和消费功能,并主要支持MySQL数据库。Canal的工作原理是通过伪装成MySQL的从节点,来订阅并获取MySQL主节点的Binlog日志。
在这里插入图片描述

主要流程如下

  1. Canal服务端与MySQL的主节点建立连接,并发送dump协议请求。

  2. MySQL的主节点接收到dump请求后,开始将Binlog日志推送给Canal服务端。Canal服务端会解析这些Binlog日志,将其转换成可读的JSON格式。

  3. Canal客户端通过TCP协议或消息队列(MQ)的形式监听Canal服务端,并从中同步获取数据。一旦数据被获取,它可以被进一步处理和存储,例如同步到Elasticsearch(ES)中。

配置安装流程

安装Canal和Elasticsearch

开始之前,请确保Canal和Elasticsearch已经正确地安装并配置在你的系统中。

配置Canal

在Canal的配置中,你需要提供MySQL的连接信息以及增量日志同步的规则。通过这些配置,Canal能够与MySQL建立连接并读取增量日志。

创建Canal的实例

在Canal的服务端中,执行canal.deployAll.sh脚本命令,根据实际需求设置Canal的实例名称、MySQL主节点的IP地址和端口等参数。

配置Canal的规则

在Canal的实例目录中,打开instance.properties文件,根据你的MySQL数据库实例进行配置,包括MySQL的连接信息(主机、端口、用户名、密码等)。

配置Canal的filter插件

Canal的filter插件可以将增量日志转换为JSON格式。你可以根据需求设置过滤规则,选择需要同步的特定数据,并将其转换为符合你需求的JSON格式。

配置Canal的步骤
  • 打开Canal的配置文件:使用文本编辑器打开Canal的配置文件,其路径通常为 <Canal安装目录>/conf/example/instance.properties。

  • 查找并配置filter插件:在配置文件中找到名为 canal.instance.filter.* 的相关配置项。这些配置项控制着filter插件的行为,可以根据你的需求进行配置。

  • 配置过滤规则:根据你需要过滤的数据,可以使用正则表达式来设置过滤规则。可用的过滤规则包括数据库名、表名、字段名等。

设置数据库的正则表达式,用于匹配需要同步的数据库
canal.instance.filter.database.regex=^(db1|db2)$
设置表的正则表达式,用于匹配需要同步的表
canal.instance.filter.table.regex=^(tbl1|tbl2)$

根据上面的案例,只有数据库名为db1或db2,且表名为tbl1或tbl2的数据才会被同步到Elasticsearch。

注意,配置filter插件需要谨慎操作,确保符合你的具体需求,并避免过滤掉必要的数据。记得重启Canal服务以使配置生效。

配置Canal的output插件

通过配置Canal的output插件,你可以将转换后的JSON格式增量日志发送到Elasticsearch。在配置output插件时,你需要提供Elasticsearch的连接信息以及索引的名称,确保增量日志能够准确地发送到Elasticsearch中。

配置流程
  • 打开Canal的配置文件:使用文本编辑器打开Canal的配置文件,通常可以在 <Canal安装目录>/conf/example/instance.properties 中找到。

  • 查找并配置output插件:在配置文件中,找到名为 canal.instance.customize.properties 的配置项,并在这里添加output插件的相关配置。如果该配置项不存在,可以手动添加。

添加以下配置项来启用Elasticsearch的output插件:

canal.instance.customize.properties = esIndex:my_index, esType:my_type, esClusterName:my_cluster, esAddresses:localhost:9200

在上面的示例中,配置了如下参数:

  • esIndex:要发送数据的Elasticsearch索引名称。
  • esType:要发送数据的Elasticsearch类型名称。(ElasticSearch6以上可以忽略)
  • esClusterName:Elasticsearch集群的名称。
  • esAddresses:Elasticsearch集群的地址,以逗号分隔。

注意,配置output插件需要确保能够正确连接到Elasticsearch集群,并确保所配置的索引、类型等参数与Elasticsearch的配置相匹配。

使用Debezium同步数据

Debezium是一种开源的分布式平台,用于捕获数据库更改并将其以流式传输的方式发送到消息代理或存储。对于MySQL数据库,Debezium可以捕获其变更,并将其发送到Kafka消息代理,最后可以使用Logstash或其他工具将数据发送到Elasticsearch。

配置Debezium的同步体系的流程

安装Debezium、Kafka、Logstash和Elasticsearch:首先,确保你已经正确地安装和配置了Debezium、Kafka、Logstash和Elasticsearch。根据你的系统环境,选择适合的版本进行安装。

配置Debezium

配置Debezium:在Debezium的配置文件中,设置连接到MySQL数据库的相关信息。配置Debezium的任务,指定要捕获的数据库和表,以及要发送到Kafka的主题。

配置Kafka

配置Kafka的相关参数,包括主题、分区数和副本数等。确保Debezium可以将捕获的MySQL更改发送到Kafka中。

配置Logstash

在Logstash的配置文件中,设置从Kafka中读取Debezium数据并将其转换为Elasticsearch可索引的格式。根据数据结构,可以定义映射和字段类型等配置。

配置Elasticsearch

在Elasticsearch中,创建适当的索引,并定义字段映射。确保索引的设置符合数据的结构和需求。

之后启动服务并监控同步过程:启动Debezium、Kafka、Logstash和Elasticsearch服务,并监控同步过程,确保MySQL的更改能够同步到Elasticsearch中。

配置Debezium连接到MySQL

在Debezium的配置文件中,你需要提供MySQL的连接信息,例如主机名、端口、用户名和密码等。这样,Debezium可以与MySQL数据库建立连接,并实时捕获数据库的变更。

配置Debezium发送到Kafka

将配置修改为将捕获的数据库变更发送到Kafka消息代理。你需要指定Kafka的连接信息,包括主机名、端口和topic等。这将使得数据库变更以更易处理的方式被发送到Kafka上。

配置Logstash发送到Elasticsearch(可选)

如果你想要将数据从Kafka发送到Elasticsearch,你可以使用Logstash或其他ETL工具来实现。在Logstash配置文件中,你需要指定Kafka和Elasticsearch的连接信息,并定义数据的处理和映射规则。

本文旨在介绍MySQL和其他多维数据同步方案,并提供一些常用的数据迁移工具,以帮助你做出更合适的选择。

相关文章:

【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步

MySQL数据同步到Elasticsearch之N种方案解析&#xff0c;实现高效数据同步 前提介绍MySQL和ElasticSearch的同步双写优点缺点针对于缺点补充优化方案 MySQL和ElasticSearch的异步双写优点缺点 定时延时写入ElasticSearch数据库机制优点缺点 开源和成熟的数据迁移工具选型Logsta…...

什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

NEFU离散数学实验3-递推方程

相关概念 递推方程是指一种递归定义&#xff0c;它将问题拆分成更小的子问题&#xff0c;并使用这些子问题的解来计算原问题的解。离散数学中&#xff0c;递推方程通常用于描述数列、组合问题等。 以下是一些递推方程相关的概念和公式&#xff1a; 1. 递推公式&#xff1a;递推…...

如何为你的地图数据设置地图样式?

地图样式设置是GIS系统中非常重要的功能模块&#xff0c;水经微图Web版本最近对符号样式功能模块进行了升级。 你可以通过以下网址直接打开访问&#xff1a; https://map.wemapgis.com 现在我们为大家分享一下水经微图Web版中&#xff0c;如何为你标注的地图数据设置地图样式…...

解决visual studio Just-In-Time Debugger调试

解决visual studio Just-In-Time Debugger调试 网上流行很多方法&#xff0c;最后一直不行&#xff0c;其实有最简单的方法比较实用 方法一&#xff1a;把 C:\WINDOWS\system32\vsjitdebugger.exe,删除了&#xff0c;若怕出问题&#xff0c;可以把它改名或者做个rar文件暂时保留…...

Uservue 中 keep-alive 组件的作用

目录 前言 用法 代码 理解 keep-alive 是 Vue.js 中一个内置的组件&#xff0c;它能够将不活动的组件实例保存在内存中&#xff0c;防止其被销毁&#xff0c;以便在后续需要时能够快速重新渲染。这个功能在一些需要频繁切换但不希望每次都重新渲染的场景中非常有用&#xf…...

gitlab查看、修改用户和邮箱,gitlab生成密钥

查看用户、邮箱 git config user.name git config user.email 修改用户、邮箱 git config --global user.name “xxx” git config --global user.email “xxxxxx.com” 生成ssh密钥 ssh-keygen -t rsa -C “xxxxxx.com” 查看SSH秘钥 cat ~/.ssh/id_rsa.pub 将秘钥复制&…...

python操作MySQL、SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引(重点)

python操作MySQL(重要) SQL的由来&#xff1a; MySQL本身就是一款C/S架构&#xff0c;有服务端、有客户端&#xff0c;自身带了有客户端&#xff1a;mysql.exe python这门语言成为了MySQL的客户端(对于一个服务端来说&#xff0c;客户端可以有很多) 操作步骤&#xff1a; …...

这一年的资源

#线性代数 https://textbooks.math.gatech.edu/ila/one-to-one-onto.html行业规范https://xlinux.nist.gov/dads/https://www.dhs.gov/publications产业群链基金会 https://www.cncf.io/谷歌 https://opensource.google/projects网飞 高德纳 https://www.gartne…...

从【臀部监控】到【电脑监控软件】,企业如何在隐私权与管理权博弈中找到平衡

【臀部监控】 依稀记得在2021年初某个高科技产品的爆火&#xff0c;惹得各大媒体网站争相报道。 起因是一位杭州网友在论坛上发帖&#xff0c;不久前公司给员工发放了一批高科技坐垫。 这个坐垫能自动感应心跳、呼吸在内的诸多人体数据&#xff0c;还能提醒人保持正确坐姿以及…...

数据库简介和sqlite3安装

数据库就是存储数据的仓库&#xff0c;其本质是一个文件系统&#xff0c;数据按照特定的格式将数据存储起来&#xff0c;用户可以对数据库中的数据进行增加&#xff0c;修改&#xff0c;删除及查询操作。 严格意义上来说,"数据库"不能被称之为"数据库",而…...

颈肩肌筋膜炎做什么检查

颈肩肌筋膜炎症状 颈肩背部广泛疼痛酸胀沉重感、麻木感&#xff0c;僵硬、活动受限&#xff0c;可向后头部及上臂放散。疼痛呈持续性&#xff0c;可因感染、疲劳、受凉、受潮等因素而加重。查体见颈部肌紧张&#xff0c;压痛点常在棘突及棘突旁斜方肌、菱形肌等&#xff0c;压…...

django建站过程(3)定义模型与管理页

定义模型与管理页 定义模型[models.py]迁移模型向管理注册模型[admin.py]注册模型使用Admin.site.register(模型名)修改Django后台管理的名称定义管理列表页面应用名称修改管理列表添加查询功能 django shell交互式shell会话 认证和授权 定义模型[models.py] 模仿博客形式&…...

node开发微信群聊机器人第⑤章

▍PART 序 看本文时&#xff0c;请确保前4章都已经看过&#xff0c;不然本章你看着看着思维容易跳脱&#xff01;再一个机器人教程只在公众号&#xff1a;“程序员野区”首发。csdn会跟着发一份&#xff0c;未经博主同意&#xff0c;请勿转载&#xff01;欢迎分享到自己的微信…...

如何助力企业出海?未来发展趋势是什么?尽在「云通信」Tech专场

2023杭州云栖大会 倒计时4天&#xff01; 阿里云云通信 2大并行Session 6场话题演讲 今日「云通信」Tech 议程内容抢先知晓 01 「云通信」Tech • 国内企业出海&#xff0c;如何更高地提升市场营销的ROI&#xff0c;提升客户的转化率&#xff1f; • 面对海外存量客户&a…...

安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及本地访问虚拟机和配置服务器环境

目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意&#xff1a;VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟…...

使用Typecho搭建个人博客网站,并内网穿透实现公网访问

使用Typecho搭建个人博客网站&#xff0c;并内网穿透实现公网访问 文章目录 使用Typecho搭建个人博客网站&#xff0c;并内网穿透实现公网访问前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 …...

RabbitMQ (4)

RabbitMQ (4) 文章目录 1. 死信的概念2. 死信的来源3. 死信代码案例3.1 TTL 过期时间3.2 超过队列最大长度3.3 拒绝消息 前言   上文我们已经学习完 交换机 &#xff0c;知道了几个交换机的使用 &#xff0c;下面我们来学习一下 死信队列 1. 死信的概念 先从概念解释上搞清楚这…...

导入Embassy库进行爬虫

Embassy是一个基于Lua的轻量级爬虫框架&#xff0c;可以方便地进行网页抓取和数据提取。它提供了简单易用的接口和丰富的功能&#xff0c;可以帮助开发者快速构建爬虫应用。 要使用Embassy进行爬虫&#xff0c;首先需要安装Embassy库。可以通过Lua的包管理工具luarocks来安装E…...

GoLong的学习之路(十三)语法之标准库 log(日志包)的使用

上回书说到&#xff0c;flag的问题。这回说到日志。无论是软件开发的调试阶段还是软件上线之后的运行阶段&#xff0c;日志一直都是非常重要的一个环节&#xff0c;我们也应该养成在程序中记录日志的好习惯。 文章目录 log配置logger配置日志前缀配置日志输出位置自定义logger …...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...