6.2 微服务 负载均衡 架构模式 分类和应用实践

微服务 负载均衡 架构模式 分类

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.1. 微服务架构概述
      • 2.2. 负载均衡概念
      • 3.3. 负载均衡架构模式
        • 3.1 客户端负载均衡 架构模式 要点
        • 3.2 服务器端负载均衡 架构模式
        • 3.3 代理负载均衡 架构模式
      • 4.4.负载均衡算法
        • 3.4 DNS负载均衡 架构模式 要点
        • 负载均衡算法
      • 5.5. 适用场景
      • 6.6. 常用负载均衡工具
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

本文重要讲述微服务 负载均衡 架构模式 分类和应用实践,通过探讨对应的微服务模式的负载均衡的模式,进而用SpringBoot实现迷你版的功能。

需求:

设计思路

实现思路分析

1.1. 微服务架构概述

这里不在赘述

2.2. 负载均衡概念

负载均衡是指在网络通信或计算环境中,将请求或任务分配到多个处理单元上,以达到减轻单个处理单元负载、提高系统性能和可靠性的目的。

负载均衡的作用包括:

  1. 提高系统性能:通过将请求分布到多个处理单元上,避免某个处理单元过载,从而提高整个系统的处理能力。
  2. 提高系统可靠性:当某个处理单元故障时,负载均衡可以将请求重新分配给其他正常工作的处理单元,保证系统的连续性和可用性。
  3. 提供水平扩展能力:通过添加更多的处理单元,负载均衡可以实现系统的水平扩展,增加系统的处理能力,适应不断增长的用户需求。

常见的负载均衡类型包括:

  1. 硬件负载均衡:通过专用的硬件设备来实现负载均衡,例如使用负载均衡器。
  2. 软件负载均衡:通过软件方式来实现负载均衡,例如在应用服务器中使用负载均衡算法。
  3. DNS负载均衡:通过DNS服务器将请求分发到多个IP地址上,实现负载均衡。
  4. 链路负载均衡:将流量分发到不同的网络链路上,实现负载均衡,提高网络吞吐量和连接可靠性。

总之,负载均衡在分布式系统中起到了平衡处理能力、提高系统性能和可靠性的重要作用。

3.3. 负载均衡架构模式

3.1 客户端负载均衡 架构模式 要点

客户端负载均衡是一种架构模式,用于将负载均衡的功能从服务器端转移到客户端。这种模式的主要要点包括以下几个方面:

  1. 选择策略:在客户端负载均衡中,客户端负责选择目标服务器来处理请求。选择策略可以根据不同的需求来定制,例如轮询、随机选择、最少连接等。选择策略应该能够合理地分配负载,并且具有一定的容错机制。

  2. 健康检查:客户端负载均衡需要实时监测服务器的状态,以便及时剔除故障服务器或者添加新的服务器。健康检查可以通过发送心跳包或者定时请求来实现,以确保服务器的可用性和稳定性。

  3. 缓存机制:客户端负载均衡可以将服务器的响应缓存在本地,以减少对服务器的请求次数。缓存机制可以根据响应的有效期和缓存策略进行配置,以提高系统的性能和响应速度。

  4. 异步通信:客户端负载均衡可以使用异步通信方式来提高系统的吞吐量和并发性能。通过使用异步通信,客户端可以并行发送多个请求,并且可以将请求的结果进行合并或者排序,以提高系统的效率。

  5. 高可用性:客户端负载均衡需要具备高可用性的特性,以保证系统的稳定性和可靠性。这可以通过使用多个负载均衡器、多个备份服务器等方式来实现,以防止单点故障的发生。

客户端负载均衡架构模式可以有效地提高系统的性能和可伸缩性,同时也能够增加系统的稳定性和可靠性。这种模式适用于各种规模的系统,包括大型分布式系统和小型应用程序。

在一个迷你版Springboot应用中实现客户端负载均衡可以使用以下架构模式:

  1. 服务注册和发现:在每个客户端启动时,将自身的服务信息注册到服务注册中心,服务注册中心会记录下每个可用服务的地址和状态。当客户端需要调用服务时,会通过服务注册中心获取可用服务的地址。

  2. 负载均衡算法:客户端通过负载均衡算法选择一个可用服务进行调用。常用的负载均衡算法有轮询、随机、加权轮询等。

  3. 客户端调用:客户端通过使用HTTP或其他通信协议,向选中的服务发送请求,并接收服务的响应结果。

下面是一个简单的实现客户端负载均衡的示例代码:

// 服务注册中心
public class ServiceRegistry {private List<String> servers = new ArrayList<>();public void register(String server) {servers.add(server);}public String getServer() {int size = servers.size();if (size == 0) {throw new RuntimeException("No available servers");}// 轮询算法int index = new Random().nextInt(size);return servers.get(index);}
}// 客户端
public class Client {private ServiceRegistry serviceRegistry;public Client(ServiceRegistry serviceRegistry) {this.serviceRegistry = serviceRegistry;}public void callService() {// 获取可用服务地址String server = serviceRegistry.getServer();// 发送请求给服务// ...System.out.println("Calling service on server: " + server);// 处理服务的响应// ...}
}// 应用入口
public class Main {public static void main(String[] args) {// 创建服务注册中心ServiceRegistry serviceRegistry = new ServiceRegistry();// 注册可用服务serviceRegistry.register("http://server1");serviceRegistry.register("http://server2");serviceRegistry.register("http://server3");// 创建客户端Client client = new Client(serviceRegistry);// 调用服务client.callService();}
}

在上述示例中,我们创建了一个ServiceRegistry类来实现服务注册和发现的功能。客户端在调用服务时,会通过ServiceRegistry类获取可用服务的地址,并进行调用。ServiceRegistry内部使用了轮询算法来选择可用服务。

3.2 服务器端负载均衡 架构模式

服务器端负载均衡是一种架构模式,用于将网络流量分配到多个服务器上,以达到负载均衡的目的。以下是该架构模式的一些要点:

  1. 负载均衡器:负载均衡器是系统的核心组件,用于接收客户端请求并将其分发到后端的多个服务器上。负载均衡器通常具有智能算法,可以根据服务器的可用性、负载和性能等因素来决定分发策略。

  2. 服务器集群:服务器集群是由多个服务器组成的组合,每个服务器都可以处理客户端请求。服务器集群的规模可以根据业务需求和系统负载进行调整。

  3. 健康检查:负载均衡器需要定期检查服务器的健康状态,以确保只有正常运行的服务器接收到请求。健康检查可以通过发送心跳包、检查服务器的响应时间或检查服务器的资源利用率等方式进行。

  4. 容错机制:服务器端负载均衡应该具有容错机制,以确保系统的可用性。例如,当一个服务器发生故障时,负载均衡器可以自动将流量路由到其他可用的服务器上。

  5. 扩展性:服务器集群应该具有良好的扩展性,以便根据需要添加或删除服务器。负载均衡器也应该具有相应的扩展性,以支持更多的后端服务器。

  6. 监控和日志:要及时了解系统的运行状态和性能,监控和日志是必不可少的。负载均衡器应该提供相应的监控和日志功能,以便管理员可以实时监测和分析系统的运行情况。

通过采用服务器端负载均衡架构模式,可以提高系统的可靠性、可扩展性和性能,从而提供更好的用户体验。
服务器端负载均衡 架构模式 迷你版Springboot 实现为:
服务器端负载均衡是一种通过将请求分发到多个服务器上来提高系统性能和可靠性的架构模式。迷你版Springboot是指使用Springboot框架来实现服务器端负载均衡的简化版本。

下面是一个简单的实现思路:

  1. 创建一个Springboot项目,并添加必要的依赖,如Springboot Web和Spring Cloud Ribbon。

  2. 在配置文件中指定服务器的列表,如:

server.list=server1,server2,server3
  1. 创建一个Controller类,用于处理请求,并使用Ribbon来实现负载均衡。例如,可以使用@LoadBalanced注解来开启负载均衡功能:
@RestController
public class LoadBalanceController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/hello")public String hello() {String serverUrl = "http://server/hello";return restTemplate.getForObject(serverUrl, String.class);}
}
  1. 在启动类中创建一个RestTemplate的bean,并使用@LoadBalanced注解标注该bean以启用负载均衡功能:
@SpringBootApplication
public class LoadBalanceApplication {@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(LoadBalanceApplication.class, args);}
}
  1. 启动多个服务器实例,如server1、server2和server3,并在每个服务器实例中实现/hello接口:
@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "Hello from server!";}
}
  1. 使用浏览器或其他工具发送请求到负载均衡器的/hello接口,可以看到请求被平均分发到不同的服务器实例上。

这只是一个简单的例子,实际的负载均衡实现可能需要更复杂的配置和处理逻辑。另外,Spring Cloud提供了更完整的负载均衡解决方案,如Eureka和Zuul,可以根据需求选择合适的架构模式和组件。

3.3 代理负载均衡 架构模式

代理负载均衡是一种常见的架构模式,它用于在一个系统中分配并处理请求的负载。下面是代理负载均衡的一些要点:

  1. 代理服务器:代理负载均衡使用代理服务器作为请求的入口。代理服务器接收来自客户端的请求,并将它们分发到后端服务器上。

  2. 负载均衡算法:代理服务器使用负载均衡算法来决定将请求分发给哪个后端服务器。常见的负载均衡算法有轮询、权重、最少连接等。

  3. 健康检查:代理服务器通常会对后端服务器进行健康检查,以确保它们能够正常处理请求。如果某个后端服务器发生故障或不可用,代理服务器将停止将请求转发给它。

  4. 缓存:代理服务器可以通过缓存常用的请求结果来提高系统性能。当代理服务器接收到一个请求时,它会先检查缓存,如果缓存中已经有该请求的结果,代理服务器就直接返回缓存的结果,而不需要将请求转发给后端服务器。

  5. 水平扩展:代理负载均衡的架构模式支持水平扩展。当系统的负载增加时,可以添加更多的后端服务器,并更新负载均衡算法,以保证请求能够均衡地分发给所有的后端服务器。

  6. 安全性:代理服务器可以用于增强系统的安全性。代理服务器可以对来自客户端的请求进行认证和授权,以确保只有合法的请求被转发到后端服务器。

总结来说,代理负载均衡架构模式通过使用代理服务器来分发和处理系统的请求,以提高系统的性能、可扩展性和安全性。

4.4.负载均衡算法

代理负载均衡是一种常见的架构模式,它通过将客户端请求转发到不同的服务实例上来实现负载均衡。在这种架构中,通常有一个代理服务器作为入口,负责接收客户端请求,并根据一定的策略将请求转发给后端的服务实例进行处理。

下面是一个迷你版Spring Boot实现代理负载均衡的示例:

  1. 创建一个Spring Boot项目,引入相关的依赖:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>
</dependencies>
  1. 在应用主类上添加@EnableDiscoveryClient注解,开启服务发现功能:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ProxyLoadBalancerApplication {public static void main(String[] args) {SpringApplication.run(ProxyLoadBalancerApplication.class, args);}
}
  1. 创建一个代理控制器类,用于接收客户端请求并进行转发:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class ProxyController {@Autowiredprivate LoadBalancerClient loadBalancerClient;@GetMapping("/proxy")public String proxy() {ServiceInstance serviceInstance = loadBalancerClient.choose("service-name"); // 替换成实际的服务名String url = serviceInstance.getUri() + "/api"; // 替换成实际的接口路径RestTemplate restTemplate = new RestTemplate();return restTemplate.getForObject(url, String.class);}
}

在上面的示例中,ProxyController类使用LoadBalancerClient来选择一个服务实例,并使用RestTemplate来发送请求并获取响应。

  1. 在配置文件中添加服务发现相关的配置(使用Eureka作为服务注册中心):
spring:application:name: proxy-load-balancer
eureka:client:service-url:default-zone: http://localhost:8761/eureka/

在上面的配置中,default-zone指定了Eureka的地址。

  1. 启动项目,并访问/proxy路径,代理服务器将根据负载均衡策略选择一个服务实例,并将请求转发给该实例进行处理。

以上就是一个简单的代理负载均衡的实现示例,你可以根据实际需求进行扩展和优化。

3.4 DNS负载均衡 架构模式 要点

DNS负载均衡是一种常见的负载均衡架构模式,通过DNS服务器来实现对多个服务器的负载均衡。下面是DNS负载均衡的要点:

  1. 多个服务器:DNS负载均衡需要有多个服务器来处理请求。这些服务器可以是相同的,也可以是不同的。通过将请求分发到不同的服务器上,可以实现负载均衡。

  2. 域名解析:DNS负载均衡的核心是通过域名解析来将请求分发给不同的服务器。当客户端发送请求时,DNS服务器会解析域名,并返回相应的服务器IP地址。这个过程中,可以使用一些策略来选择要返回的服务器,比如轮询、随机等。

  3. 缓存:为了提高性能,DNS服务器通常会对解析结果进行缓存。这样,在多次请求中,对同一域名的解析就可以直接返回缓存中的IP地址,而不需要再次解析。

  4. 健康检查:为了保证负载均衡的可用性,DNS负载均衡通常会对服务器的健康状态进行检查。如果某个服务器不可用,DNS服务器会从可用的服务器中选择一个返回给客户端。

  5. 动态更新:由于服务器的可用性是动态变化的,DNS负载均衡需要能够根据服务器的变化来动态更新解析结果。这可以通过定期检查服务器状态,或者使用监控系统来实现。

  6. 可扩展性:DNS负载均衡可以很好地适应服务器数量的变化。当需要增加或减少服务器时,只需要更新DNS服务器的配置即可。

总结来说,DNS负载均衡通过域名解析和服务器选择策略来实现对多个服务器的负载均衡。它具有简单、可靠、可扩展等特点,在互联网应用中得到广泛的应用。

DNS负载均衡是一种通过将域名映射到多个IP地址来实现流量分发的方法。在这种架构模式下,DNS服务器会返回多个IP地址给客户端,客户端随机选择其中一个IP地址进行连接。

要实现DNS负载均衡的架构模式,在迷你版Spring Boot中可以使用如下的步骤:

  1. 创建一个Spring Boot项目,并添加相应的依赖。你可以在pom.xml文件中添加spring-boot-starter-web依赖。

  2. 创建一个Controller类,用于处理请求和返回结果。在这个类中,添加一个路由方法,用于接收客户端的请求。

@RestController
public class LoadBalancerController {@RequestMapping("/api")public String api() {// 处理业务逻辑return "Hello, World!";}
}
  1. 配置DNS服务器。你可以使用任何一个DNS服务器,例如Bind,PowerDNS等。在DNS服务器的配置文件中,添加一个主机记录,将域名映射到多个IP地址。例如:
example.com. IN A 192.0.2.1
example.com. IN A 192.0.2.2
example.com. IN A 192.0.2.3
  1. 在应用的application.properties文件中,配置DNS服务器的地址。例如:
dns.server=192.168.0.1
  1. 在Spring Boot应用的启动类中,添加DNS解析的逻辑。在@SpringBootApplication注解的类中,添加一个@PostConstruct注解的方法,用于初始化DNS解析器:
@SpringBootApplication
public class Application {@Value("${dns.server}")private String dnsServer;@PostConstructpublic void init() {System.setProperty("sun.net.spi.nameservice.nameservers", dnsServer);}public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. 使用浏览器或其他客户端工具访问应用的接口。每次请求时,客户端会从DNS服务器返回的IP地址列表中随机选择一个IP地址进行连接。

这样,就实现了迷你版Spring Boot中的DNS负载均衡架构模式。当有多个实例运行时,客户端请求会分发到不同的实例上,从而实现负载均衡。

负载均衡算法

负载均衡算法是指将网络请求分配到多个服务器上,以实现并发请求的处理和资源利用的最优化。常见的负载均衡算法包括随机算法、最少连接算法和IP哈希算法。

随机算法是最简单的负载均衡算法之一,它通过随机选择一个服务器来处理每个请求。虽然随机算法简单,但并不能保证每个服务器的负载均衡,因为随机选择可能导致某些服务器负载过高,而其他服务器负载较轻。

最少连接算法是根据服务器当前的连接数来选择一个负载最轻的服务器来处理请求。这种算法能够有效地避免某些服务器负载过高的情况,但是可能会导致请求集中在某一或几个连接数最少的服务器上,其他服务器负载较轻。

IP哈希算法是根据客户端的IP地址进行哈希计算,然后将计算结果与服务器列表进行匹配,从而选择一个服务器来处理请求。这种算法可以使同一IP地址的请求被分配到同一个服务器上,从而确保一定程度上的会话保持,而且比较均衡地分配到不同的服务器上。

每种负载均衡算法都有其优缺点,根据实际情况选择适合的算法,或者结合多种算法进行负载均衡,可以更好地满足业务需求。

5.5. 适用场景

高并发应用是指同时有大量的用户请求访问系统,系统需要能够快速响应并处理这些请求。为了应对高并发,可以使用分布式系统架构,将应用划分为多个服务单元,每个服务单元只关注自己的业务,通过多个服务单元同时处理请求,提高整体的处理能力。

微服务架构是一种将应用划分为多个小型、自治的服务的架构风格。每个服务都可以独立开发、部署和扩展,通过接口通信,并可以使用不同的技术栈实现。微服务架构可以提高开发效率、灵活性和可扩展性,同时也可以更好地应对高并发和大数据处理的需求。

大数据处理是指处理海量数据的技术和方法。由于数据量庞大,传统的数据处理工具和方法无法胜任,因此需要使用分布式计算框架和存储系统来处理大规模数据。常用的大数据处理框架包括Hadoop和Spark,它们可以将数据分布式存储和处理,提高数据处理的速度和可靠性。

负载均衡是一种将网络流量分发到多个服务器上的技术。通过负载均衡,可以提高系统的性能和可靠性,避免单个服务器的过载。负载均衡可以通过不同的算法来决定流量的分发方式,如轮询、加权轮询、最少连接等。常用的负载均衡软件包括Nginx和HAProxy,它们可以根据流量情况动态分配请求到不同的服务器上。

6.6. 常用负载均衡工具

常用的负载均衡工具有Nginx、HAProxy、Envoy和Consul。

  1. Nginx:Nginx是一个高性能的HTTP和反向代理服务器,具有强大的负载均衡功能。它可以通过基于算法和权重的负载均衡来分发流量到多个后端服务器,同时还支持健康检查和故障转移。

  2. HAProxy:HAProxy是一种高性能的负载均衡器,主要用于TCP和HTTP应用程序的代理和负载均衡。它支持多种负载均衡算法,并提供健康检查和故障转移功能。HAProxy还具有可扩展性和高可用性的特性。

  3. Envoy:Envoy是一个云原生的高性能代理和通信总线,主要用于负载均衡和微服务架构。Envoy具有灵活的配置选项,可以根据应用程序的需要进行定制。它支持动态服务发现、请求路由和负载均衡,并具有流量管理和故障恢复功能。

  4. Consul:Consul是一个分布式的服务发现和配置工具,也可以用作负载均衡器。它提供了服务注册和发现机制,可以自动将流量分发到可用的后端服务。Consul还提供了健康检查和故障转移的功能,可以保证应用程序的高可用性。

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐
暂无

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~,如果有兴趣,可以加文末的交流群,大家一起进步哈

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

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

相关文章

通信工程学习:什么是FTP文件传输协议

FTP&#xff1a;文件传输协议 FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;是一种用于在网络上交换文件的协议&#xff0c;它定义了文件传输时使用的命令和响应。作为最古老的互联网协议之一&#xff0c;FTP至今仍被广泛使用&#xff0c;并在网…

PCL 投影滤波器

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 投影滤波 2.1.2 可视化 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、…

算法课习题汇总(3)

循环日程表 设有N个选手进行循环比赛&#xff0c;其中N2M&#xff0c;要求每名选手要与其他N−1名选手都赛一次&#xff0c;每名选手每天比赛一次&#xff0c;循环赛共进行N−1天&#xff0c;要求每天没有选手轮空。 例如4个人进行比赛&#xff1a; 思路&#xff1a; 把表格…

20道面试题001

常考语法就是指针&#xff0c;指针与数组、指针与字符串、指针与结构体、指针与函数之间的关系与使用&#xff0c; 以上课为准&#xff0c;辅助《深度理解C指针》这本书。 1. 指针与数组 定义: 数组名在表达式中通常被视为指向数组首元素的指针。 访问元素: 可以通过指针访问数…

递归函数设计技巧

目录 1.路飞吃桃子的问题--应试难度 2.弹簧板问题--应试难度 3.递归实现指数型枚举--校招难度 4.递归实现组合型枚举--校招难度 5.递归实现排列型枚举--校招难度 1.路飞吃桃子的问题--应试难度 我们可以说下两个案例&#xff0c;反正是最后一天的时候&#xff0c;只剩下了一…

pnpm在monorepo架构下不能引用其他模块的问题

一、研究背景 monorepo架构项目目录结构&#xff1a; - common- index.ts- ... - main- index.ts- ... - web- vue-demo- ... pnpm在monorepo架构下使用以下命令 pnpm -F main add common # or pnpm --filter main add common 并不能在main/index.ts中使用common/index.ts…

从概念到使用全面了解Llama 3 这个迄今为止最强大的开源模型

概述 mate最近发布了 Llama3&#xff0c;下一代最先进的开源大语言模型&#xff08;LLM&#xff09;。正如本文的综合评论所述&#xff0c;Llama 3 以其前身奠定的基础为基础&#xff0c;旨在增强 Llama 2 成为 ChatGPT 重要开源竞争对手的能力 Llama 2&#xff1a;深入探讨 C…

Spring Boot驱动的足球青训俱乐部管理解决方案

1 绪论 1.1研究背景 随着科技的发展&#xff0c;计算机的应用&#xff0c;人们的生活方方面面都和互联网密不可分。计算机的普及使得人们的生活更加方便快捷&#xff0c;网络也遍及到我们生活的每个角落&#xff0c;二十一世纪信息化时代的到来&#xff0c;随着社会科技的不断…

中国电信解锁万亿参数大模型:TeleAI的创新与突破

首个由万卡集群训练出来的万亿参数大模型&#xff0c;已被一家央企解锁。 具体而言&#xff0c;为了推动纯国产人工智能的探索&#xff0c;带来这条新路径的正是中国电信人工智能研究院&#xff08;TeleAI&#xff09;。 该研究院由中国电信集团的CTO、首席科学家兼院长李学龙…

docker零基础入门教程

注意 本系列文章已升级、转移至我的自建站点中&#xff0c;本章原文为&#xff1a;Docker入门 目录 注意1.前言2.docker安装3.docker基本使用4.打包docker镜像5.docker进阶 1.前言 如果你长期写C/C代码&#xff0c;那你应该很容易发现C/C开源项目存在的一个严重问题&#xff…

【React】入门Day01 —— 从基础概念到实战应用

目录 一、React 概述 二、开发环境创建 三、JSX 基础 四、React 的事件绑定 五、React 组件基础使用 六、组件状态管理 - useState 七、组件的基础样式处理 快速入门 – React 中文文档 一、React 概述 React 是什么 由 Meta 公司开发&#xff0c;是用于构建 Web 和原生…

XFTP-8下载安装教程

下载地址 https://www.xshell.com/zh/free-for-home-school/ 新建XFTP文件夹 安装过程 选择新建的文件夹 此处默认即可 填写信息提交注册 点击生成的链接 点击后来&#xff0c;完成安装

WebRTC Connection Negotiate解决

最近有个项目 &#xff0c;部署之后一直显示&#xff0c;查了一些资料还是没有解决&#xff0c;无奈只有自己研究解决&#xff1f; 什么是内网穿透&#xff1f; 我们访问我们自己的官网产品页面&#xff0c;我们的服务器是一个单独的个体&#xff0c;有独立的公网ip&#xf…

Redis实现每日签到(大数据量)

PHP语言使用Redis NoSQL服务器二进制数据类型实现大数据情况下签到功能 目录 问题 解决方式 封装签到类 功能调用 总结 问题 实现用户每日签到功能不难&#xff0c;但随着用户量上升之后&#xff0c;不论是存储还是判断对数据量来说都很麻烦&#xff1b;假如每天有100万用…

文心一言 VS 讯飞星火 VS chatgpt (359)-- 算法导论24.3 1题

一、在图 24-2上运行Dijkstra算法&#xff0c;第一次使用结点 s s s作为源结点&#xff0c;第二次使用结点 z z z作为源结点。以类似于图 24-6 的风格&#xff0c;给出每次while循环后的 d d d值和 π π π值&#xff0c;以及集合 S S S中的所有结点。如果要写代码&#xff0c…

使用容器启动的zk无法暴露3888问题解决

1. 问题描述 zk配置如下&#xff1a; 我通过容器启动了一个zk&#xff0c;通过-p 参数暴露了2181和3888端口&#xff0c;容器启动脚本如下&#xff1a; #!/bin/shdocker rm -f myzookeeper1docker run -p 12181:2181 -p 13888:3888 --name myzookeeper1 --restart always …

利士策分享,国庆日,共筑梦想,同庆辉煌

利士策分享&#xff0c;国庆日&#xff0c;共筑梦想&#xff0c;同庆辉煌 今天是我们的祖国成立的第75个国庆日&#xff0c;在这个举国同庆的日子里&#xff0c;我感受到了浓厚的节日氛围。 此刻的你&#xff0c;是否也在和家人朋友一起享受这份难得的宁静与快乐呢&#xff1f…

AI产品经理PRD文档与传统产品经理PRD有什么不同呢?

目录 模型输出&#xff1a;说白了&#xff0c;就是你的AI要干啥数据接入&#xff1a;你的AI要吃啥“粮食”验收标准&#xff1a;怎么判断你的AI干得好不好经验总结 你好&#xff0c;我是三桥君 在工作中&#xff0c;当我作为传统产品经理时&#xff0c;通常只需提供产品需求文…

SigmaStudio控件Cross Mixer\Signal Merger算法效果分析

衰减与叠加混音算法验证分析一 CH2:输入源为-20dB正弦波1khz CH1叠加混音&#xff1a;参考混音算法https://blog.csdn.net/weixin_48408892/article/details/129878036?spm1001.2014.3001.5502 Ch0衰减混音&#xff1a;外部多个输入源做混音时&#xff0c;建议参考该算法控件&…

宝塔的软件商店打不开怎么办?

宝塔的软件商店打不开怎么办&#xff1f; 请从下面这个按钮进入&#xff1a; 或者尝试直接打开链接&#xff1a;https://127.0.0.1:1234/soft