构建未来应用的核心,云原生技术栈解析

news2025/1/15 20:52:52

🐇明明跟你说过:个人主页

🏅个人专栏:《未来已来:云原生之旅》🏅

🔖行路有良友,便是天堂🔖

目录

一、云原生技术栈 

1、容器和容器编排

1.1 Docker

1.2 Kubernetes

2、服务发现和负载均衡

2.1 Envoy

 ​编辑 2.2 Consul

3、持续集成与持续交付(CI/CD)

3.1 Jenkins

3.2 GitLab CI/CD

4、监控与日志

4.1 Prometheus

4.2  Grafana

4.3 ELK Stack(Elasticsearch, Logstash, Kibana)

二、云原生应用开发

1、12因素应用(The Twelve-Factor App)   

2、API设计和治理


上期回顾:在上期文章中,我们详细探讨了云原生的诞生、起源,以及云原生的核心理念与架构,本期作为上期文章的补充,将详细讨论云原生的各技术栈

一、云原生技术栈 

1、容器和容器编排

1.1 Docker

什么是Docker?

Docker 是一种让开发者可以轻松地打包、分发和运行应用的工具,它通过一种叫做容器化的技术,把应用和它的所有依赖(比如库、框架、工具等)打包到一个标准化的单元中,这个单元称为容器。

想象一个场景:

  • 假设你在家里做饭,但家里的厨房设施不太齐全,有的东西没有,做出来的菜可能口味也会受影响。为了避免这些问题,你决定使用一个“移动厨房”,这个厨房里已经准备好了所有的调料、工具和食材,你只需要打开厨房,开始做饭,做出来的菜肴就是一样的美味。
  • Docker就像这个“移动厨房”,它把你的应用和所有必需的环境(操作系统、库、工具等)打包在一起,这样无论你在哪里,只要有Docker的地方,就能运行这个应用。

Docker在云原生领域的作用

Docker在云原生领域起到了至关重要的作用,推动了应用程序的开发、部署和管理方式的变革。云原生架构旨在利用云计算的弹性和规模来开发、部署和运行应用程序,而Docker的容器化技术为这种架构提供了坚实的基础。

1. 一致性和可移植性

  • 一致性:Docker容器将应用程序及其所有依赖项打包在一起,确保无论在开发、测试还是生产环境中运行,应用程序的行为都是一致的。这消除了传统部署过程中常见的“在我机器上能跑”的问题。
  • 可移植性:Docker镜像可以在任何支持Docker的环境中运行,无论是本地服务器、虚拟机、数据中心还是各种云平台。这种可移植性使得应用程序的跨平台部署变得简单而高效。


2. 资源隔离和利用率

  • 资源隔离:Docker容器相互隔离,确保应用程序之间不会相互干扰,提高了系统的稳定性和安全性。每个容器都有自己的文件系统、网络栈和进程空间。
  • 资源利用率:Docker容器是轻量级的,启动速度快,占用资源少,与传统虚拟机相比,容器可以在同样的硬件上运行更多的实例,提高了资源利用率。


3. 敏捷开发和持续交付

  • 敏捷开发:开发者可以在本地环境中快速构建和测试Docker容器,确保应用程序在早期开发阶段就能被验证。
  • 持续交付/持续部署(CI/CD):Docker与CI/CD工具(如Jenkins、GitLab CI、CircleCI等)集成,可以实现自动化的构建、测试和部署流程。每次代码变更后,新的Docker镜像可以自动构建、测试并部署到不同环境中,缩短了发布周期。


4. 微服务架构

  • 微服务支持:Docker容器使得将单体应用拆分为微服务变得更加容易。每个微服务可以独立打包、部署和运行在自己的容器中,便于开发、测试和扩展。
  • 独立扩展:每个微服务可以根据负载情况独立扩展或缩减容器实例,充分利用云平台的弹性能力。

1.2 Kubernetes

什么是Kubernetes?

 背景和问题

 想象你在经营一家快餐店,你每天需要准备很多汉堡包来满足顾客的需求。为了高效地完成这项任务,你雇了很多厨师,每个厨师负责制作部分汉堡包。这样,如果某个厨师生病了,其他厨师可以继续工作,不会影响整个快餐店的运营。

 但是管理这些厨师需要一些技巧,你需要确保每个厨师都有足够的食材、知道怎么制作汉堡包、什么时候该开始工作和什么时候该休息。你还要确保店里所有的汉堡包制作得又快又好,随时满足顾客的需求。

什么是Kubernetes?

 Kubernetes (常简称为 K8s) 就像是这个快餐店的智能经理,它帮助你管理这些“厨师”(也就是容器),确保他们高效地工作,并且让你的“汉堡包”(应用程序)一直运行得很好。 

Kubernetes在云原生领域的作用

Kubernetes(K8s)是一个开源的容器编排平台,在云原生领域发挥着关键作用。它提供了自动化部署、扩展和管理容器化应用程序的功能,帮助企业实现更高的灵活性、效率和可扩展性。

1. 自动化部署和管理

  • 自动部署:Kubernetes能够根据预定义的配置文件自动部署应用程序。这些配置文件定义了应用的各个组件、所需的资源和运行环境,确保应用的快速、一致部署。
  • 自动更新和回滚:Kubernetes支持滚动更新,可以在不中断服务的情况下逐步更新应用程序。如果更新出现问题,Kubernetes还可以自动回滚到之前的版本,保证系统的稳定性。


2. 弹性伸缩

  • 自动伸缩:Kubernetes可以根据应用的负载自动增加或减少容器实例。例如,当访问量增加时,它会自动扩展更多的容器来处理流量;当负载减少时,它会缩减容器数量,节省资源。
  • 资源高效利用:通过智能调度和资源管理,Kubernetes确保资源得到高效利用,避免资源浪费。


3. 自我修复

  • 容器重启:Kubernetes监控容器的健康状况,如果某个容器出现故障,会自动重启该容器,确保应用的持续运行。
  • 自动重调度:如果节点出现问题,Kubernetes会自动将受影响的容器调度到其他健康的节点上,保持服务的可用性。


4. 服务发现和负载均衡

  • 服务发现:Kubernetes提供内置的服务发现机制,通过DNS或者环境变量自动发现并连接运行中的服务,无需手动配置。
  • 负载均衡:Kubernetes会自动对来自外部的请求进行负载均衡,分发到后端的各个容器实例,确保应用的高可用性和可靠性。

2、服务发现和负载均衡

2.1 Envoy

什么是Envoy?

背景和问题
想象你在经营一家大型超市,超市有许多不同的部门(比如食品、服装、电子产品等),每个部门都有自己的工作人员和货架。为了保证超市的高效运营,你需要一个智能的管理系统来协调各个部门之间的通信和资源分配,同时保证每个顾客都能快速、准确地找到他们需要的东西。

在软件开发中,这种超市就像一个复杂的分布式系统,各个部门就像不同的服务。为了保证服务之间的高效通信和管理,我们需要一个智能的“中间人”。这时候,Envoy就派上了用场。

什么是Envoy?
Envoy是一款高性能的开源边车代理(sidecar proxy),由Lyft公司开发,专门用于微服务架构中的服务通信和管理。简单来说,Envoy就像是一个智能的“中间人”,负责处理和优化服务之间的所有网络通信。

Envoy核心功能

1. 服务发现

  • 自动发现服务:Envoy可以通过多种方式(如DNS、服务注册中心等)自动发现和跟踪后端服务实例的变化,无需手动配置。
  • 动态更新:当服务实例的状态发生变化(如增加或减少实例)时,Envoy能够动态更新自身配置,保持最新的服务信息。


2. 负载均衡

  • 多种策略:Envoy支持多种负载均衡策略,如轮询(round-robin)、随机(random)、最少请求(least request)和基于权重的负载均衡(weighted)。
  • 主动健康检查:Envoy可以对后端服务进行主动健康检查,确保只将流量发送到健康的服务实例。
  • 连接池管理:Envoy能够高效地管理连接池,优化连接复用,提高整体性能。


3. 流量管理

  • 请求路由:Envoy支持复杂的请求路由规则,可以基于路径、头信息、请求参数等条件进行流量分发。
  • 流量拆分:Envoy可以将流量按照比例拆分到不同的服务版本,支持蓝绿部署和灰度发布。
  • 重试和熔断:Envoy提供重试机制和熔断器功能,能够在请求失败时自动重试,或者在服务出现问题时触发熔断,保护系统的稳定性。


4. 服务网格集成

  • 边车代理:在服务网格架构中,Envoy作为边车代理与每个微服务一起部署,负责处理进出该服务的所有流量。
  • 全局流量管理:Envoy能够在服务网格中实现全局流量管理,包括全局负载均衡、流量镜像和全局速率限制。

  2.2 Consul

什么是 Consul?

背景和问题
在现代分布式系统中,应用通常由多个服务组成,这些服务可能运行在不同的服务器上。为了让这些服务能够互相通信,需要解决以下问题:

  • 服务发现:如何让服务找到彼此?
  • 配置管理:如何管理和分发配置?
  • 健康检查:如何确保服务处于健康状态?
  • 服务网格:如何管理服务间的流量?


什么是Consul?
Consul是由HashiCorp开发的一款开源工具,专门用于解决上述问题。它提供了服务发现、配置管理、健康检查和服务网格等功能,帮助开发和运维团队高效管理分布式系统。

Consul的核心功能
1. 服务发现

  • 服务注册:服务启动时向Consul注册自己的信息(如IP地址、端口号),让其他服务可以发现它。
  • 服务查询:服务可以向Consul查询其他服务的信息,从而实现自动发现和通信。

 实际应用 

  • 假设你有一个电商系统,包含用户服务、订单服务和支付服务。每个服务启动时都会向Consul注册自己的信息。当用户服务需要调用订单服务时,只需向Consul查询订单服务的地址,而不需要硬编码地址。

2. 健康检查

  • 主动健康检查:Consul可以定期检查服务的健康状态(如检查服务是否在响应请求)。
  • 自动移除不健康服务:如果某个服务的健康检查失败,Consul会自动将其从服务列表中移除,防止将流量发送到不健康的服务。

 实际应用 

  • 继续上面的电商系统例子,假设订单服务有一个实例发生故障。Consul的健康检查会检测到这个问题,并将该实例从服务列表中移除,确保用户服务不会调用已故障的订单服务实例。

3、持续集成与持续交付(CI/CD)

3.1 Jenkins

背景和问题
在软件开发过程中,开发团队需要频繁地构建、测试和部署代码。这一过程如果手动完成,不仅耗时耗力,还容易出错。为了提高效率、减少错误,持续集成(CI)和持续交付(CD)理念应运而生。而Jenkins就是一款非常流行的CI/CD工具。

什么是Jenkins?
Jenkins是一个开源的自动化服务器,主要用于自动化软件开发的各个环节,如构建、测试和部署。它可以通过插件进行扩展,支持几乎所有的开发、测试和部署工具,使得整个软件交付过程更加高效和可靠。

Jenkins的核心功能
1. 持续集成(CI)

  • 自动化构建:Jenkins能够在代码提交到版本控制系统(如Git)时自动触发构建流程。
  • 持续测试:在每次构建后,Jenkins可以自动运行测试用例,确保代码的正确性和稳定性。
  • 报告生成:构建和测试完成后,Jenkins会生成报告,帮助开发者快速了解构建状态和测试结果。

实际应用

  • 想象一个开发团队在开发一个电商应用。每次开发人员提交代码,Jenkins会自动拉取最新代码,进行编译、运行单元测试和集成测试。如果测试通过,Jenkins会生成一份报告并通知开发团队。如果测试失败,Jenkins会标记构建为失败并提供详细的错误信息,帮助开发人员快速定位问题。

2. 持续交付和持续部署(CD)

  • 自动化部署:Jenkins可以自动将通过测试的代码部署到测试环境、预生产环境甚至生产环境。
  • 版本控制:Jenkins能够管理不同环境的版本,确保代码版本的可追溯性和一致性。
  • 回滚机制:如果新版本在部署后出现问题,Jenkins可以快速回滚到之前的稳定版本。

实际应用

  • 在电商应用的开发过程中,经过CI流程验证的代码会自动部署到测试环境,供QA团队进行手动测试。如果测试通过,Jenkins会将代码部署到预生产环境进行进一步验证,最后自动发布到生产环境,减少手动部署的时间和风险。

3.2 GitLab CI/CD

背景和问题
在软件开发过程中,持续集成(CI)持续交付/部署(CD)是确保代码质量和快速交付的关键实践。开发团队需要一种高效、可靠的工具来自动化构建、测试和部署过程。GitLab CI/CD是GitLab提供的一套强大的CI/CD解决方案,帮助开发团队实现这些目标。

什么是GitLab CI/CD?
GitLab CI/CD是GitLab集成的持续集成和持续交付/部署工具。它允许开发者通过编写配置文件(.gitlab-ci.yml)来定义自动化的构建、测试和部署流水线。当代码提交到GitLab仓库时,GitLab CI/CD会自动执行这些流水线,确保代码质量和快速交付。

GitLab CI/CD的核心功能
1. 持续集成(CI)

  • 自动化构建:每次代码提交后,GitLab CI/CD会自动拉取最新代码并执行构建任务。
  • 自动化测试:构建完成后,GitLab CI/CD会运行预定义的测试用例,验证代码的正确性。
  • 并行执行:GitLab CI/CD可以并行执行多个任务,提高构建和测试效率。

实际应用

  • 假设你有一个Web应用项目。每次开发人员提交代码,GitLab CI/CD会自动构建应用、运行单元测试和集成测试。如果测试通过,系统会生成报告并通知开发团队。如果测试失败,开发人员会收到详细的错误信息,以便快速修复问题。

2. 持续交付和持续部署(CD)

  • 自动化部署:通过GitLab CI/CD,你可以自动将通过测试的代码部署到不同的环境(如测试环境、预生产环境和生产环境)。
  • 环境管理:GitLab CI/CD支持多种环境配置,确保代码在不同环境中的一致性。
  • 版本控制:管理和追踪部署版本,确保回滚到稳定版本的能力。

实际应用

  • 在Web应用项目中,通过CI验证的代码会自动部署到测试环境,供QA团队进行进一步测试。如果测试通过,GitLab CI/CD会将代码部署到预生产环境进行最终验证,最后发布到生产环境,减少手动部署的时间和风险。

4、监控与日志

4.1 Prometheus

背景和问题
在现代软件系统中,特别是云原生架构中,应用程序和服务的数量迅速增加,这使得监控和管理它们变得非常复杂。开发团队需要一种强大的工具来收集、存储和查询系统的监控数据,确保系统的健康和性能。Prometheus就是这样一款专为云原生应用设计的开源监控和告警工具。

什么是Prometheus?
Prometheus是一个开源的监控和告警系统,最早由SoundCloud开发,并作为Cloud Native Computing Foundation(CNCF)的一部分。它专注于以时间序列数据为基础的监控,提供强大的数据查询语言(PromQL),以及灵活的告警机制。

Prometheus的核心功能
1. 时间序列数据存储

  • 时间序列数据库:Prometheus将监控数据以时间序列的形式存储,每个数据点包含时间戳、度量名称和一组键值对(标签)。
  • 高效存储:Prometheus设计用于高效存储大量的时间序列数据,支持高写入和查询性能。

实际应用

  • 例如,你的应用程序有多个实例,每个实例都有CPU使用率、内存使用率等度量数据。Prometheus会定期拉取这些数据并存储在时间序列数据库中。每个数据点记录了特定时间点上某个实例的CPU使用率。

2. 多种数据采集方式

  • 主动拉取(Pull)模型:Prometheus通过HTTP协议定期从被监控的目标(如应用程序、服务)拉取监控数据。
  • 服务发现:Prometheus支持多种服务发现机制,如Kubernetes、Consul、Etcd等,自动发现和监控动态变化的服务实例。
  • Pushgateway:对于短期存在的批处理任务,Prometheus通过Pushgateway接受主动推送的数据。

实际应用

  • 你的Web应用部署在Kubernetes集群中。Prometheus通过Kubernetes的服务发现机制自动发现所有应用实例,并定期从这些实例拉取监控数据,无需手动配置每个实例。

     

4.2  Grafana

Grafana是一个开源的数据分析和可视化工具,特别适用于监控和分析时间序列数据。它提供了丰富的图表和面板,可以从多个数据源中提取数据,帮助用户创建动态和交互式的仪表板。

Grafana的主要特点:
1. 多数据源支持:

  • Grafana支持多种数据源,包括Prometheus、Graphite、InfluxDB、Elasticsearch等,用户可以从这些数据源中获取数据并在同一个仪表板中进行展示和比较。


2. 灵活的可视化选项:

  • 提供多种图表类型,如折线图、柱状图、仪表盘、热力图等,支持数据的动态和静态展示,用户可以根据需要自定义图表和面板。


3. 强大的查询功能:

  • Grafana提供直观的查询编辑器,允许用户编写和执行复杂的数据查询。用户可以定义时间范围、聚合函数和过滤条件,以获取所需的数据视图。

4.3 ELK Stack(Elasticsearch, Logstash, Kibana)

ELK Stack(Elasticsearch, Logstash, Kibana)是一个流行的开源日志管理解决方案,由三个核心组件组成,每个组件都有其独特的角色和功能:

1. Elasticsearch
角色和功能:

  • 分布式搜索和分析引擎: Elasticsearch是一个实时的分布式搜索和分析引擎,用于存储、搜索和分析大规模的结构化和非结构化数据。
  • 全文搜索: 支持全文搜索和复杂的查询,能够快速地检索和分析大量数据。
  • 数据存储: 提供强大的数据存储和索引功能,支持高可用性和水平扩展。

实际应用:

  • 企业可以使用Elasticsearch来存储和分析大规模的日志数据、指标数据和其他类型的结构化数据。例如,实时监控系统日志、应用程序指标和用户行为分析等。


2. Logstash
角色和功能:

  • 日志数据收集和处理: Logstash是一个灵活的数据收集和处理管道工具,用于从多个来源收集、转换和传输数据到Elasticsearch或其他存储和分析平台。
  • 数据处理和转换: 支持对日志数据进行解析、过滤、转换和丰富化,以便于后续分析和可视化。
  • 插件生态系统: 提供丰富的插件和输入输出插件,支持与各种数据源(如日志文件、消息队列、数据库等)集成。

实际应用:

  • Logstash可以配置为从多个来源(如Apache日志文件、MySQL数据库、Kafka消息队列)收集日志数据,并将处理后的数据发送到Elasticsearch进行存储和分析。


3. Kibana
角色和功能:

  • 数据可视化和分析: Kibana是一个开源的数据可视化和分析平台,提供用户友好的界面和强大的查询功能,用于实时分析和探索Elasticsearch中的数据。
  • 仪表板和可视化: 支持创建丰富的仪表板和图表,展示各种类型的数据可视化,如折线图、柱状图、地图等。
  • 搜索和过滤: 提供直观的搜索和过滤功能,帮助用户快速定位和分析数据。

实际应用:

通过Kibana,用户可以创建定制的仪表板来监控实时数据流、分析趋势和执行深入的数据探索。例如,展示系统的实时日志流、显示应用程序性能指标的趋势、分析用户行为等。

二、云原生应用开发

1、12因素应用(The Twelve-Factor App)   

云原生的十二因素应用(The Twelve-Factor App)是指一组设计原则和最佳实践,旨在帮助开发和部署现代化的云原生应用。这些原则由Heroku的联合创始人Adam Wiggins于2011年提出,并逐渐成为构建云原生应用的标准指南。

云原生的十二因素应用核心原则:


1. 代码库(Codebase):

使用单一的代码库管理应用的所有版本和变化历史。确保所有开发、测试和生产环境都能从同一个代码库中获取代码。


2. 依赖(Dependencies):

显式声明和管理应用的依赖关系,使用明确的依赖管理工具和版本控制系统(如npm、Maven、pip等)。


3. 配置(Config):

将应用的配置从代码中分离出来,使用环境变量来存储配置信息。不同环境(开发、测试、生产)可以使用不同的配置,而不需要修改代码。


4. 后端服务(Backing services):

将后端服务(如数据库、缓存、消息队列)视为附加的资源,通过URL或配置来连接这些服务。在开发环境和生产环境中使用相同的服务配置。


5. 构建、发布、运行(Build, release, run):

明确区分构建(build)、发布(release)、运行(run)三个阶段。确保每个阶段的步骤都是自动化的、可重复的,并且能够确保环境的一致性。


6. 进程(Processes):

将应用视为一组独立的进程或服务,每个进程都应该是无状态的,可以随时扩展和替换。进程间通过网络通信进行连接和协作。


7. 端口绑定(Port binding):

应用以端口的形式暴露服务,通过监听指定的端口来处理进来的网络请求。这种方式能够方便地进行水平扩展和负载均衡。


8. 并发(Concurrency):

支持通过进程模型进行并发处理,能够有效地处理大量的并发请求和任务。


9. 快速启动和停止(Disposability):

应用应该能够快速启动和停止,以便于部署和扩展。进程间的状态不应该依赖于本地磁盘或长期的存储。


10. 环境等价性(Dev/prod parity):

保持开发、测试和生产环境尽可能的一致。尽量使用相同的工具链、依赖和配置,以减少部署过程中的问题和差异。


11. 日志(Logs):

将应用生成的日志视为事件流,通过标准输出(stdout)和标准错误(stderr)进行记录。这些日志应该易于收集、分析和监控。


12. 管理进程(Admin processes):

提供管理任务作为一次性脚本运行,与应用进程分离。这些任务应该能够在生产环境中安全地执行和回滚。

2、API设计和治理

API设计原则
1. 一致性和简洁性:

设计清晰、简洁且一致的API,使得API易于理解和使用,减少学习成本。


2. RESTful风格:

遵循REST原则(Representational State Transfer),使用标准的HTTP方法(GET、POST、PUT、DELETE等)来操作资源。


3. 资源导向:

将数据视为资源,并通过URI来表示资源的唯一标识。资源应该具有自描述性,API用户可以直观地理解和使用。

API治理
1. 访问控制和权限管理:

管理和控制API的访问权限,根据用户、角色或组织设置访问级别和限制。


2. 监控和分析:

实时监控API的性能指标(如响应时间、吞吐量、错误率等),并进行分析和报告。及时发现和解决问题。


3. 负载均衡和限流:

实施负载均衡策略,确保API服务的可靠性和性能。同时设置限流机制,防止恶意或异常请求对系统造成影响。

  

 💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于云原生的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JaveEE进阶----Spring Web MVC入门

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、什么是 Spring Web MVC??1.1MVC 定义1.2 什么是Spring MVC ?1.3过浏览器和用户程序交互 二、 RequestMapping 注解三、Postman 前言…

能理解你的意图的自动化采集工具——AI和爬虫相结合

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

计网:网络应用层【Email应用/SMTP协议】

Email应用与SMTP协议 Email应用层的构成 客户端服务器协议 用户代理 用于读写邮件消息;与服务器交互,收发邮件消息 常见的客户端:Outlook,Foxmail(这两个是需要下载的客户端),Web客户端&…

浏览器插件利器-allWebPluginV2.0.0.14-bata版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…

【数据建模】微分方程与动力系统

文章目录 微分方程与动力系统1. 微分方程的理论基础1.1 函数、导数与微分1.2 一阶线性微分方程的解1.3 二阶常系数线性微分方程的解 2. 使用python求解微分方程2.1 求解微分2.2 求解定积分2.2.1 quad函数求解2.2.2 梯型法则求解 3. 使用Scipy和Sympy解微分方程3.1 使用sympy求解…

4. DSL入门_01

1. 常见的DSL (1) 查询所有: 查询出所有数据,一般测试的时候使用,例如: match_all .但是受分页限制,一般返回10条数据 (2) 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引中匹配&a…

三个 insert 导致的死锁问题

锁种类 插入意向锁(insert intention lock)对已有数据行的修改与删除,必须加强互斥锁 X 锁,那对于数据的插入,是否还需要加这么强的锁,来实施互斥呢?插入意向锁,孕育而生。插入意向…

任务5.2 掌握DStream基础操作

实战:DStream基础操作 了解DStream编程模型:DStream是Spark Streaming中对实时数据流的抽象,可以看作一系列持续的RDD。DStream可以通过外部数据源获取或通过现有DStream的高级操作获得。 操作本质:DStream上的操作最终会转化为对…

OneNote for Windows 10 下载

OneNote for Windows 10 安装 1.在浏览器中输入地址:https://apps.microsoft.com/detail/9wzdncrfhvjl?hlzh-cn&glUS2OneNote for Windows 10 - 在 Windows 上免费下载并安装 |Microsoft StoreOneNote 是用于在设备上捕获和组织你的一切内容的数字笔记本。快速…

对日期的处理

对日期的处理 对编码进行统一,在脚本最开始: # -*- coding: utf-8 -*-这里涉及到两个操作,一个是将数据进行标准化,比如有些日期是2024/05/06这并不符合日期的标准格式,需要转换成这样的2024-05-06 def tran_std(st…

八爪鱼现金流-030,升级日志

八爪鱼现金流 八爪鱼 2024年4月4日09:27:02 v-0.0.1 资产包、负债包,功能优化 2024年4月15日09:27:26 v-0.0.2 增加公告模块 2024年4月18日12:14:32 v-0.0.3 市场查询优化。创建人脱敏处理。增加市场风云菜单。 2024年4月18日15:57:10 v-0.0.4 对于无截止日…

[MYSQL] 数据库基础

1.什么是数据库 从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据 以文件形式存储数据的缺点 文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便 为了解决上述问…

【Vue-Vben-Admin】1、初次运行和介绍

【Vue-Vben-Admin】1、初次运行和介绍 Vben-Admin 初次运行和介绍 小小的介绍规定版本文件树安装依赖运行项目 小小的介绍 一款 Vue3 Typescript4 Vite2 后台管理项目,功能挺多的,还有组件库 规定版本 此个人文档规定版本为 2.8.0,可能版本…

消息队列MQ相关面试题

消息队列MQ相关面试题 1 RabbitMQ 1.1 你们项目中哪里用到了RabbitMQ ? 难易程度:☆☆☆ 出现频率:☆☆☆☆ 我们项目中很多地方都使用了RabbitMQ , RabbitMQ 是我们项目中服务通信的主要方式之一 , 我们项目中服务通信主要有二种方式实现 : 通过Fei…

STM32 温湿度采集与OLED显示

目录 一、I2C总线通信协议 1、I2C介绍 2、软件I2C和硬件I2C (1)硬件I2C (2)软件I2C 差异 二、AHT20温湿度传感器 接口原理介绍 1. 温度测量原理 2. 湿度测量原理 实物引脚 传感器性能 电气特性 三、任务实现 具…

【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-37微调

37微调 import os import torch import torchvision from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt from d2l import torch as d2l# 获取数据集 d2l.DATA_HUB[hotdog] (d2l.DATA_URL hotdog.zip,fba480ffa8aa7e0febbb511d181409f899b9baa5…

setInterval 定时任务执行时间不准验证

一般在处理定时任务的时候都使用setInterval间隔定时调用任务。 setInterval(() > {console.log("interval"); }, 2 * 1000);我们定义的是两秒执行一次,但是浏览器实际执行的间隔时间只多不少。这是由于浏览器执行 JS 是单线程模式,使用se…

二进制炸弹的fp是什么?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Go日常分享 - error类型是指针类型吗?

背景 这个问题的产生来源于小泉在开发rpc接口时返回error遇到的问题,开发时想在defer里对err进行最终的统一处理赋值,发现外层接收一直都未生效。问题可以简化为成下面的小demo。 func returnError() error {var err errordefer func() {//err errors…