解析Eureka的架构

news2024/11/13 3:12:36

1. 引言

1.1 Eureka的定义与背景

Eureka是由Netflix开发的一个RESTful服务,用于服务发现。它是微服务架构中的一个核心组件,主要用于管理服务的注册和发现。Eureka允许服务提供者注册自己的服务信息,同时也允许服务消费者查询可用的服务,以便进行通信和数据交互。Eureka的设计目标是简化微服务之间的相互通信,提高系统的灵活性和可扩展性。

1.2 在微服务架构中的重要性

在微服务架构中,服务数量庞大且动态变化,服务实例可能随时上线或下线。Eureka通过提供服务注册和发现功能,使得微服务之间的调用变得更加简单和高效。具体来说,Eureka的重要性体现在以下几个方面:

  • 动态服务管理:Eureka支持服务的动态注册和注销,允许微服务在运行时自我管理,确保系统能够适应变化。
  • 负载均衡:通过Eureka,服务消费者可以获取多个服务实例的信息,从而实现负载均衡,提高系统的可用性和性能。
  • 容错处理:Eureka具备故障检测能力,能够在服务不可用时及时更新服务列表,保证服务调用的可靠性。
  • 简化配置:Eureka集成了许多配置管理功能,减少了开发和运维的复杂度,使得微服务的部署和维护更加便捷。

通过Eureka,微服务架构能够实现高可用、高扩展性的系统设计,为现代应用程序的开发提供了强有力的支持。

2. Eureka架构概述

Eureka是一个RESTful服务,用于中间层服务的注册与发现。它是Netflix开源的一个组件,广泛用于微服务架构中,帮助服务实例相互发现。

2.1 Eureka Server与Eureka Client的角色

Eureka Server:

  • 服务注册中心:Eureka Server充当服务注册中心,负责管理所有服务实例的注册信息。
  • 提供服务发现:Eureka Server能够提供服务实例的信息,供其他服务进行调用和访问。
  • 高可用性:Eureka Server可以部署多个实例,以实现负载均衡和高可用性。通过使用客户端负载均衡,Eureka能够保证在某个实例不可用时,服务仍然可以被发现。

Eureka Client:

  • 服务注册:每个微服务实例作为Eureka Client,启动时会向Eureka Server注册自身的信息(如服务名、实例ID、IP地址、端口等)。
  • 心跳机制:Eureka Client定期向Eureka Server发送心跳,以维持注册状态。如果某个客户端停止发送心跳,Eureka Server会在一定时间后将其标记为下线。
  • 服务发现:Eureka Client能够从Eureka Server获取其他服务实例的信息,从而实现服务调用。

2.2 服务注册与发现流程

服务注册流程:

  1. 服务启动:微服务实例启动时,会初始化Eureka Client。
  2. 发送注册请求:Eureka Client向Eureka Server发送注册请求,包含服务实例的信息。
  3. Eureka Server接收注册:Eureka Server接收注册请求,并将服务实例信息存储在其注册表中。
  4. 返回注册结果:Eureka Server返回注册成功的响应给Eureka Client,服务实例开始向Eureka Server定期发送心跳。

服务发现流程:

  1. 服务请求:当微服务需要调用其他服务时,首先会向Eureka Server请求服务列表。
  2. 获取服务实例:Eureka Server返回当前注册的服务实例列表。
  3. 负载均衡选择:Eureka Client根据负载均衡策略,从服务实例列表中选择一个实例进行调用。
  4. 服务调用:Eureka Client向选定的服务实例发送请求,完成服务调用。

3. Eureka的核心特性

3.1 自我保护机制

Eureka的自我保护机制可以有效防止由于网络抖动或临时性故障导致的服务实例不可用情况。当Eureka Server发现某个服务实例在一定时间内未能心跳(即未定期向Eureka Server发送状态更新),它并不会立即将该实例从注册列表中移除。相反,Eureka会启动自我保护模式,允许服务实例在短时间内保持“存活”状态,防止服务的意外下线。这种机制的主要目的是避免因短暂的网络问题而导致的服务大规模宕机,从而提高系统的稳定性。

3.2 客户端负载均衡

Eureka实现了客户端负载均衡的功能,使得客户端能够在请求服务时根据注册的服务实例动态选择一个合适的实例。Eureka与Spring Cloud Ribbon等负载均衡组件紧密集成,允许开发者通过配置来选择负载均衡策略(如轮询、随机等)。客户端在获取服务实例列表后,可以选择最适合的实例进行请求,从而提高系统的吞吐量和响应速度,优化资源的利用。

3.3 服务实例的健康检查

Eureka提供了服务实例的健康检查机制,以确保客户端请求的服务实例是可用的。每个注册的服务实例在向Eureka Server发送心跳的同时,也可以在心跳请求中包含健康状态信息。Eureka Server会根据这些信息来判断服务实例的健康状态,并在必要时将不可用的实例从服务列表中剔除。这样,客户端在进行负载均衡时就能避免将请求发送到不可用的服务实例,提高了整个系统的可靠性和可用性。

4. Eureka的使用场景

4.1 微服务架构中的应用示例

在微服务架构中,各个服务通常是独立运行的,但它们需要通过网络进行通信和协作。Eureka的服务注册与发现机制为这些服务提供了一个动态的、中心化的注册表,便于服务之间的相互发现和通信。以下是一些典型应用场景:

  • 动态服务发现:当一个服务实例上线时,它会自动注册到Eureka Server,其他需要调用此服务的服务实例可以通过Eureka Server获取其详细信息。这样,服务提供者和服务消费者都不需要硬编码服务地址,增强了系统的灵活性和动态扩展能力。
  • 弹性扩展:在系统负载增加时,可以部署更多的服务实例,它们会自动注册到Eureka Server,从而实现服务的无缝扩展。当负载下降时,多余的实例可以被下线并从Eureka Server中移除。
  • 故障转移:如果某个服务实例宕机,Eureka会在健康检查中发现,并将该实例从可用服务列表中剔除,使得服务消费者可以自动选择其他可用实例进行调用,保证了系统的高可用性。

4.2 与Spring Cloud的集成

Eureka在与Spring Cloud集成时,可以实现更加强大的功能和更便捷的配置。Spring Cloud Netflix是Spring Cloud生态系统中提供Eureka功能的模块。以下是Eureka与Spring Cloud集成的优势和示例:

  • 快速启动和配置:通过Spring Boot和Spring Cloud的自动配置功能,开发者可以快速配置Eureka Server和Eureka Client。只需在application.propertiesapplication.yml文件中添加必要的配置,即可启动Eureka。
  • 服务注册与发现的自动化:Spring Cloud Netflix Eureka使服务在启动时自动注册到Eureka Server。消费者可以通过简单的声明式注解或配置,从Eureka Server获取服务实例列表,实现服务发现。
  • Spring Cloud Ribbon负载均衡:Eureka与Spring Cloud Ribbon无缝集成,提供客户端负载均衡功能,使得请求可以根据负载策略选择服务实例。
  • Spring Cloud Feign支持:通过与Feign结合,开发者可以实现更简洁的服务调用,Feign会自动使用Eureka的服务发现功能来调用远程服务,使服务间调用代码更加简洁和可维护。

例如,一个简单的Eureka Server配置可以如下实现:

# application.yml for Eureka Server
server:
  port: 8761

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
  server:
    enable-self-preservation: true

一个Eureka Client的配置示例如下:

# application.yml for Eureka Client
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

通过这些配置,开发者可以轻松搭建一个支持服务注册与发现的微服务架构。Spring Cloud与Eureka的结合为开发者提供了强大的功能,简化了微服务的管理和交互流程。

5. Eureka的配置

5.1 基本配置示例

在设置Eureka时,基本配置包括Eureka Server和Eureka Client的简单配置,以确保服务能够正常注册和发现。

Eureka Server的基本配置
application.yml中,Eureka Server的基础配置如下:

server:
  port: 8761  # Eureka Server运行的端口

eureka:
  client:
    register-with-eureka: false  # 不向自身注册
    fetch-registry: false        # 不从注册中心获取注册表
  server:
    enable-self-preservation: true  # 开启自我保护机制

Eureka Client的基本配置
Eureka Client需要在application.ymlapplication.properties中进行配置,以便与Eureka Server通信。

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  # 指定Eureka Server的URL
  instance:
    prefer-ip-address: true  # 使用IP地址进行服务注册

上述配置适用于将Eureka Server和Client部署在本地环境中的基本场景。

5.2 高级配置选项

为了应对复杂场景,Eureka提供了一些高级配置选项,以实现更高的灵活性和可用性。

高级配置选项示例

  1. 自定义实例ID
    配置服务实例的唯一ID,以便于在注册表中识别。

    eureka:
      instance:
        instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
    
  2. 心跳间隔和超时设置
    自定义Eureka Client发送心跳的频率和超时参数,以确保服务的状态更新及时。

    eureka:
      client:
        lease-renewal-interval-in-seconds: 10  # 心跳间隔(默认30秒)
        lease-expiration-duration-in-seconds: 90  # 超时期限(默认90秒)
    
  3. 服务过滤和注册管理
    配置只允许某些服务注册到Eureka Server。

    eureka:
      server:
        registry-sync-retries: 3  # 注册表同步重试次数
        eviction-interval-timer-in-ms: 60000  # 实例剔除间隔时间
    
  4. 自我保护机制设置
    可以启用或禁用自我保护机制,以防止网络故障时大规模服务下线。

    eureka:
      server:
        enable-self-preservation: false  # 禁用自我保护
    
  5. 配置多区域支持
    在跨数据中心或多区域部署时,可以配置Eureka以支持多区域注册表同步。

    eureka:
      client:
        availability-zones:
          default: us-east-1, us-west-2  # 多个可用区域
        service-url:
          us-east-1: http://eureka-east-1.example.com/eureka/
          us-west-2: http://eureka-west-2.example.com/eureka/
    

通过以上基本和高级配置示例,开发者可以根据不同的需求灵活调整Eureka的配置,以满足生产环境下的高可用性、稳定性和扩展性需求。

6. Eureka的监控与管理

6.1 Eureka Dashboard介绍

Eureka Dashboard是Eureka Server提供的一个可视化界面,用于监控和管理已注册的服务实例。通过该Dashboard,运维人员和开发者可以直观地查看服务注册中心的状态、注册的服务列表、每个服务的实例信息及其状态。

主要功能

  • 服务列表:显示所有已注册的服务,包括服务名、实例ID、IP地址、端口、状态等。
  • 实例详情:点击某个服务,可以查看其注册的实例详情,如实例的健康状态、最后一次心跳时间等。
  • 自我保护状态:Dashboard还会显示Eureka Server当前是否处于自我保护模式,并提示潜在的问题。
  • 状态检查:提供了Eureka Server自身的状态检查信息,如是否处于UP状态,以及一些统计数据。

如何访问

  • 默认情况下,Eureka Server的Dashboard可以通过http://<Eureka-Server-Host>:<port>访问。例如,如果Eureka Server运行在本地的8761端口上,访问地址为http://localhost:8761
  • 该界面不需要额外的配置,只需确保Eureka Server正确启动。

6.2 常见的监控指标

Eureka在运行中会暴露一系列监控指标,用于监控Eureka Server和Eureka Client的性能和健康状态。以下是一些常见和关键的监控指标:

  1. 注册实例数量

    • 已注册实例总数:显示当前在Eureka Server上注册的所有服务实例数量。
    • 可用实例数量:显示目前被认为健康、可用的实例数量。
  2. 心跳和续租

    • 心跳频率:监控Eureka Client发送到Eureka Server的心跳频率,以确保客户端的健康状态。
    • 续租失败次数:统计未能成功续租(心跳)请求的次数,用于识别客户端可能存在的连接或网络问题。
  3. 自我保护模式

    • 自我保护触发状态:监控Eureka Server是否已进入自我保护模式。如果心跳失败次数超过一定阈值,自我保护模式会被触发以防止大规模实例下线。
    • 心跳丢失阈值:用于监控是否达到触发自我保护的条件。
  4. 请求和响应延迟

    • 服务注册请求延迟:统计Eureka Client注册到Eureka Server的请求延迟。
    • 服务发现请求延迟:统计客户端请求服务实例列表的平均响应时间。
    • 实例取消注册延迟:监控服务实例取消注册时的延迟。
  5. 健康检查状态

    • 健康检查结果:显示所有实例的健康检查状态,用于确定哪些实例在心跳检测中被认为是不可用的。
    • 健康检查失败次数:记录检测到服务实例不健康的次数。

这些监控指标可以帮助开发者和运维人员快速定位和排查问题,确保Eureka的运行状况良好。借助这些数据,可以采取必要的措施来优化Eureka Server和客户端的配置,提升系统的可靠性和可用性。

7. Eureka的性能优化

7.1 调整心跳间隔

Eureka Client和Eureka Server通过心跳机制来维护服务实例的注册状态。心跳间隔的调整对于优化Eureka的性能和系统的整体稳定性至关重要。

心跳间隔的优化策略

  • 缩短心跳间隔:如果需要更加实时地反映服务的健康状态,可以缩短心跳间隔,使Eureka Client更频繁地发送心跳。这样Eureka Server能够更快地检测到服务的状态变化,但这会增加网络和Eureka Server的负载。
  • 延长心跳间隔:在稳定性和网络带宽要求较高的场景中,可以适当延长心跳间隔,减少Eureka Client和Eureka Server之间的通信频率,从而降低系统资源的消耗。

配置示例
在Eureka Client的application.ymlapplication.properties中调整心跳间隔:

eureka:
  client:
    lease-renewal-interval-in-seconds: 10  # 心跳间隔,单位为秒,默认是30秒
    lease-expiration-duration-in-seconds: 90  # 服务过期时间,默认是90秒

通过调整这些参数,可以在性能和服务可用性之间取得平衡。需要根据具体应用场景进行压力测试,以选择最合适的配置。

7.2 服务实例数量的管理

Eureka Server需要处理大量的服务注册和发现请求,因此优化服务实例的数量和分布可以显著提高Eureka的性能和稳定性。

优化策略

  • 服务实例分组:在大型系统中,将服务实例按功能或区域分组,并使用多个Eureka Server实例来分别管理这些组。这样可以减轻单个Eureka Server的负载,提高系统的扩展性和容错能力。
  • 合理配置实例数量:在高负载的系统中,应确保Eureka Server有足够的资源来处理所有服务实例的心跳和注册请求。可以通过垂直扩展(增加Eureka Server的资源)或水平扩展(增加Eureka Server的数量)来优化性能。
  • 实例剔除策略:确保Eureka Server能及时剔除不再活跃的服务实例,以防止注册表冗余和性能下降。定期检查服务实例的健康状态,并在必要时移除长时间未发送心跳的实例。

配置示例
在Eureka Server中,可以调整实例剔除的间隔时间和策略:

eureka:
  server:
    eviction-interval-timer-in-ms: 60000  # 实例剔除间隔,默认是60秒

负载均衡与缓存策略

  • 本地缓存:Eureka Client可以启用本地缓存,减少对Eureka Server的频繁访问,降低Eureka Server的负载。客户端会定期从缓存中获取服务实例列表,确保请求在短时间内不会多次访问Eureka Server。
  • 负载均衡器的使用:结合Ribbon或其他负载均衡器,均衡请求的流量,避免某些实例过载。

通过调整心跳间隔和管理服务实例数量,可以实现Eureka的高效运转,确保微服务架构在高并发场景下的稳定性和性能。

8. 常见问题与解决方案

8.1 服务无法注册的原因

  1. 网络问题:检查服务实例与Eureka Server之间的网络连接是否正常。
  2. 配置错误:确保服务实例的Eureka配置(如eureka.client.serviceUrl.defaultZone)正确指向Eureka Server的地址。
  3. 服务端未启动:确认Eureka Server是否正在运行,并监听正确的端口。
  4. 注册信息不完整:确保服务实例的元数据(如应用名、实例ID等)正确配置。
  5. 过期时间设置:检查Eureka的心跳配置,确保服务实例的注册信息未过期。

8.2 Eureka Server的高可用性配置

  1. 集群部署:在多台机器上部署多个Eureka Server实例,配置eureka.client.registerWithEurekaeureka.client.fetchRegistryfalse以避免自我注册。
  2. 负载均衡:使用负载均衡器(如Nginx或HAProxy)在客户端与Eureka Server之间实现请求分发,增强可用性。
  3. 数据复制:配置Eureka Server之间的复制,确保注册信息在所有实例中保持一致,通过eureka.client.serviceUrl.defaultZone指定其他Eureka Server的地址。
  4. 监控与报警:使用监控工具监控Eureka Server的状态,及时处理故障。

这些解决方案能够帮助快速定位和解决服务注册中的常见问题,并提高Eureka Server的可用性。

9. 总结

9.1 Eureka 的优缺点

优点:

  1. 简化服务注册与发现: Eureka 提供了简单易用的 API,使得微服务的注册和发现变得轻松,无需复杂的配置。
  2. 高可用性: Eureka 通过服务的自我注册和心跳机制,实现了高可用性。当某个实例下线时,其他实例能够快速知晓并进行处理。
  3. 与 Spring Cloud 的集成: Eureka 是 Spring Cloud 的核心组件之一,与 Spring Boot 的集成非常顺畅,适合微服务架构的开发。
  4. 灵活的负载均衡: Eureka 支持客户端负载均衡,能够根据注册信息动态调整流量分配。
  5. 可扩展性: 可以轻松添加和删除服务实例,适应服务规模的变化。

缺点:

  1. 单点故障问题: 默认的 Eureka Server 如果没有配置高可用集群,可能成为单点故障,影响服务的可用性。
  2. 性能瓶颈: 当服务实例数量增多时,Eureka 可能面临性能瓶颈,需要进行合理的资源分配和监控。
  3. 复杂的网络配置: 在多区域或多云环境中,Eureka 的网络配置可能较为复杂,需要额外的设置以确保服务之间的通信顺畅。
  4. 服务发现延迟: 在实例注册与更新过程中,可能存在一定的延迟,导致客户端获取的服务信息不是实时的。
  5. 与 Kubernetes 的兼容性: 在 Kubernetes 环境中,Eureka 的角色和使用场景可能会有所不同,可能需要结合其他工具来实现最佳效果。

9.2 未来的发展方向

  1. 提升高可用性: 加强 Eureka 的高可用性设计,支持更简单的集群配置和故障转移机制,确保在多节点环境下的稳定性。
  2. 性能优化: 对于大规模微服务架构,继续优化性能,减少服务发现和注册的延迟,提高处理效率。
  3. 与云原生架构的集成: 进一步与 Kubernetes、Service Mesh(如 Istio)等云原生架构整合,提升微服务的灵活性和可管理性。
  4. 多租户支持: 开发多租户功能,使得多个团队或项目可以在同一个 Eureka 实例上安全地运行,互不干扰。
  5. 智能路由与负载均衡: 集成智能路由和负载均衡功能,提升服务调用的效率和准确性,满足更复杂的业务需求。
  6. 监控与管理工具: 提供更友好的监控和管理界面,帮助开发和运维人员实时监控服务状态,快速定位和解决问题。

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

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

相关文章

【黑马点评debug日记】

q1:登录无session跳转主页 p30&#xff0c;页面登录后返回&#xff0c;然后点击我的&#xff0c;需要重新设置&#xff0c;拦截器都没有问题。 参考&#xff1a; redis 黑马点评p30 login没有正常跳转&#xff0c;修改前端代码后还是一直跳转主界面_黑马点评登录后跳转到主页…

地面远阴影对光伏电站的影响

影响因素 1、太阳高度角和方位角 太阳高度角是指太阳光的入射方向和地平面之间的夹角。太阳高度角随时间、季节和地理位置的变化而变化。 方位角是指太阳光线在水平面上的投影与正南方向的夹角。方位角也随时间和地理位置的变化而变化。 可以通过天文公式或者专业的太阳位置…

消息队列高级

目录 消息可靠性 生产者消息确认 第一步&#xff1a;修改application.yml配置文件信息 第二步&#xff1a;定义发送者确认confirm回调方法 第三步&#xff1a;创建消息发送者回执return回调方法&#xff08;确保消息从交换机到消息队列&#xff09; 总结&#xff1a; 消息持…

宏观经济学笔记

【拯救者】宏观经济学速成 国民生产总值GNP: GNP 衡量一国(地区)成员在一定时期内运用生产要素所生产的全部最终产品和服务的市场价值。凡是本国国民所 创造的收入&#xff0c;不管生产要素是否在国内&#xff0c;都计入本国GNP中。 GDP本国居民在本国创造的价值外国居民在本国…

ONLYOFFICE 8.2测评:功能增强与体验优化,打造高效办公新体验

引言 随着数字化办公需求的不断增长&#xff0c;在线办公软件市场竞争愈加激烈。在众多办公软件中&#xff0c;ONLYOFFICE 无疑是一个颇具特色的选择。它不仅支持文档、表格和演示文稿的在线编辑&#xff0c;还通过开放的接口与强大的协作功能&#xff0c;吸引了众多企业和个人…

独显装完ubuntu后启动黑屏显示/dev/sda:clean files blocks的解决方案

解决方案如下&#xff1a; 选中Ubuntu按E键 在编辑界面倒数第2行的linux那行&#xff08;后面有quiet splash选项&#xff09;的最后添加nomodeset 然后按F10保存重启 然后管理员权限打开/etc/modprobe.d/blacklist.conf&#xff0c;在文件末尾添加&#xff1a; blacklist…

[Docker#2] 发展历史 | Namespace环境隔离 | Cgroup资源控制

目录 1.发展历史 Jail 时代 云时代 云原生时代 技术标准的确立 虚拟机 vs Docker 2. 容器化技术 2.1 Namespace 命令详解 1. dd 命令 2. mkfs 命令 3. df 命令 4. mount 命令 5. unshare 命令 实战 进程隔离 文件隔离 2.2 CGroup 相关命令 2.1 pidstat 2.…

AI生活之我用AI处理Excel表格

AI生活之我用AI处理Excel表格 场景再现AI提问词AI代码运行调试结果心得感受 场景再现 因学习需要&#xff0c;整理了某个题库&#xff0c;方便自己刷题使用。 已将每套题打上了制定标签&#xff0c;得到一个Excel表格。截图如下&#xff1a; 需求是&#xff1a;一共35套题&…

Stable Diffusion Web UI - ControlNet 姿势控制 openpose

openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势&#xff0c;把姿势信息传递给 Stable Diffusion 扩散模型&#xff0c;让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果&#xff1a; 同样的姿势&#xff0…

第三百一十九节 Java线程教程 - Java线程中断

Java线程教程 - Java线程中断 我们可以通过使用interrupt()方法中断一个活动的线程。 这个方法调用在线程只是一个指示。它是由线程如何响应中断。 例子 下面的代码显示了中断主线程并打印线程中断状态的代码。 public class Main {public static void main(String[] args)…

人工智能(AI)和机器学习(ML)技术学习流程

目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…

Cynet:全方位一体化安全防护工具

前言 1999年&#xff0c;布鲁斯施奈尔曾说过&#xff1a;“复杂性是安全最大的敌人。”彼时还是19年前&#xff0c;而现在&#xff0c;网络安全已然变得更加繁杂。 近日我在网上冲浪过程中发现了这么一个平台性质的软件&#xff0c;看似具有相当强的防护能力。 根据Cynet的描…

可变类型参数

将形参设为可变类型参数&#xff0c;首先自己的函数要先有一个确定的形参&#xff0c;然后剩余的参数为 ... 用到三个宏&#xff0c;va_list, va_start, va_arg . va_list: 当作一个类型&#xff0c;底层是一个char* 被 typedef va_strat: 先定义一个va_list 类型的变量&#x…

AlphaFold3 开源啦!喜大普奔!

2024年5月8日&#xff0c;AlphaFold3 正式发布&#xff01;时隔半年&#xff0c;今天&#xff0c;AlphaFold3 终于开源啦&#xff01;&#x1f389; 不过别太激动哈哈哈哈哈&#xff0c;权重还是要额外申请的&#xff01; 半年前&#xff0c;AlphaFold3 的发布激起了学术界的广…

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程&#xff0c;要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素&#xff08;通常是用户名和密码&#xff09;保护资源会使它们容易受到泄露&#xff0c;添加…

Autosar CP Can State Mangement规范导读

CanSM的主要功能 CAN网络通信模式控制 管理CAN网络的启动、停止和不同通信模式(如全通信、静默通信、无通信)之间的切换。通过状态机实现对CAN网络状态的精确控制,确保网络在不同条件下稳定运行。错误处理与状态报告 根据AUTOSAR基础软件的错误分类方案处理错误,包括开发错…

【Python爬虫实战】全面解析 DrissionPage:简化 Python 浏览器自动化的三种模式

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、DrissionPage简介 &#xff08;一&#xff09;ChromiumPage &#xff08;二&#xff09;WebPage &a…

测试驱动:编写完善测试用例的艺术

测试驱动&#xff1a;编写完善测试用例的艺术 如何编写测试用例 如何撰写高效的测试用例&#xff0c;为产品的稳定性和质量保驾护航。无论你是新手还是经验丰富的测试工程师&#xff0c;让我们一起深入探讨&#xff0c;掌握测试用例编写的精髓&#xff01; 1. 明确测试目标 …

Linux系统编译boot后发现编译时间与Windows系统不一致的解决方案

现象 如下图&#xff0c;从filezilla软件看虚拟机Linux中编译的uboot.img修改时间与Windows系统时间不同 解决过程 在Linux中查看编译的uboot详细信息&#xff0c;从而得到编译时间。终端输入ls -l后&#xff0c;如下图&#xff1a; 结论 说明在Linux是按照Windows系统时…

24.11.10

星期一&#xff1a; 补 23ICPC 合肥 G cf传送门 思路&#xff1a;由使第 k个最大这种条件易联想到二分&#xff0c;但是如何check是个问题 check使用dp&#xff0c;先想到个比较朴素的状态设定&#xff0c;dp【i】【j】…