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

济宁市任城区建设局网站wordpress阿里云虚拟机

济宁市任城区建设局网站,wordpress阿里云虚拟机,济南网站建设 选搜点o,做宠物网站需要实现什么功能Spring Cloud和各子项目版本对应关系 Spring Cloud 是一个用于构建分布式系统的开发工具包#xff0c;它基于Spring Boot提供了一组模块和功能#xff0c;用于构建微服务架构中的分布式应用程序。Spring Cloud的不同子项目有各自的版本#xff0c;下面是一些常见的Spring C…Spring Cloud和各子项目版本对应关系 Spring Cloud 是一个用于构建分布式系统的开发工具包它基于Spring Boot提供了一组模块和功能用于构建微服务架构中的分布式应用程序。Spring Cloud的不同子项目有各自的版本下面是一些常见的Spring Cloud子项目及其与Spring Boot版本的对应关系 Spring Cloud Netflix Spring Cloud Netflix 包括了多个与Netflix OSS集成的模块如Eureka服务注册与发现、Ribbon负载均衡、Hystrix熔断器、Feign声明式REST客户端等。Spring Cloud Netflix 的版本通常与Spring Boot的版本保持一致例如Spring Cloud Netflix 2.2.x 需要与 Spring Boot 2.2.x 结合使用。 Spring Cloud Config Spring Cloud Config 用于集中管理应用程序的配置信息。Spring Cloud Config 的版本通常与 Spring Boot 的版本保持一致但也可以在Spring Cloud Config Server的配置中指定特定版本的Spring Cloud Config。 Spring Cloud Gateway Spring Cloud Gateway 是一个基于Spring Framework 5和Spring Boot 2构建的API网关服务用于构建微服务架构中的路由和过滤。Spring Cloud Gateway 的版本通常与 Spring Boot 的版本保持一致例如Spring Cloud Gateway 2.2.x 需要与 Spring Boot 2.2.x 结合使用。 Spring Cloud Sleuth Spring Cloud Sleuth 用于分布式跟踪和日志记录。Spring Cloud Sleuth 的版本通常与 Spring Boot 的版本保持一致但也可以在Spring Cloud Sleuth的配置中指定特定版本的Spring Cloud Sleuth。 Spring Cloud OpenFeign Spring Cloud OpenFeign 是一种声明式的HTTP客户端用于与RESTful服务进行通信。Spring Cloud OpenFeign 的版本通常与 Spring Boot 的版本保持一致例如Spring Cloud OpenFeign 2.2.x 需要与 Spring Boot 2.2.x 结合使用。 Spring Cloud Bus Spring Cloud Bus 用于在分布式系统中广播配置变更事件。Spring Cloud Bus 的版本通常与 Spring Boot 的版本保持一致但也可以在Spring Cloud Bus的配置中指定特定版本的Spring Cloud Bus。 请注意上述是一些常见的Spring Cloud子项目而Spring Cloud生态系统包含了更多的子项目和模块每个子项目都可能有其特定的版本。为了确保兼容性和稳定性通常建议将Spring Boot和Spring Cloud的版本保持一致并在项目中使用相同版本的子项目。你可以在Spring Cloud官方文档或GitHub页面上查找有关特定子项目版本的详细信息和发布说明。 Spring Cloud OpenFeign Spring Cloud OpenFeign 是 Spring Cloud 微服务框架的一部分用于简化基于 REST 的服务之间的通信。它建立在 Netflix 的 Feign 基础之上提供了一种声明性的方式来编写 HTTP 客户端代码使得调用远程服务就像调用本地方法一样简单。 以下是 Spring Cloud OpenFeign 的主要特性和用途 声明式 REST 客户端OpenFeign 允许您使用注解来定义接口并通过这些接口来描述远程服务的调用。这种声明式的方式使代码更加清晰和易于维护。 自动化的负载均衡OpenFeign 集成了 Spring Cloud Ribbon可以自动处理负载均衡。您可以通过服务名来调用远程服务而不需要硬编码目标服务的 URL。 集成 Spring Cloud 的服务发现OpenFeign 可以与 Spring Cloud Eureka 或其他服务发现组件集成从而可以动态地发现和调用注册在服务注册中心的服务。 请求和响应的自定义您可以通过注解自定义请求头、请求参数、请求体以及响应处理以满足不同的需求。 支持断路器OpenFeign 可以集成 Spring Cloud Circuit Breaker通常使用 Hystrix以增加对服务故障的容错能力。 集成其他 Spring Cloud 组件OpenFeign 可以与 Spring Cloud Config、Spring Cloud Sleuth 等其他 Spring Cloud 组件集成以提供配置管理和分布式跟踪等功能。 日志和调试OpenFeign 可以生成详细的请求和响应日志帮助您诊断和调试问题。 下面是一个简单的示例展示了如何在 Spring Boot 应用程序中使用 Spring Cloud OpenFeign 来调用远程服务 import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping;FeignClient(name remote-service) public interface RemoteServiceClient {GetMapping(/api/resource)String getResource(); }在上述示例中RemoteServiceClient 接口使用 FeignClient 注解声明了一个远程服务客户端其中 name 属性指定了要调用的服务的名称。然后可以像调用本地方法一样使用 RemoteServiceClient 接口来调用远程服务。 要使用 Spring Cloud OpenFeign您需要添加相关的依赖并在应用程序的配置中指定服务的名称、端口和其他配置。然后您可以使用注入的 Feign 客户端来调用远程服务。 总之Spring Cloud OpenFeign 是一个强大的工具可用于简化微服务架构中的服务调用和通信使得开发人员能够更轻松地构建分布式系统。 springcloud核⼼组件及其作⽤以及springcloud⼯作原理 Spring Cloud 是一个用于构建分布式系统的开发工具箱它提供了一组核心组件和模式以简化分布式系统的开发和部署。下面是 Spring Cloud 的核心组件及其作用以及 Spring Cloud 工作原理的概述 Spring Cloud 核心组件及其作用 Eureka服务注册与发现 作用Eureka 是一个服务注册和发现组件用于构建分布式系统中的服务注册表。服务提供者将自己注册到 Eureka 服务器上服务消费者可以从 Eureka 服务器获取可用服务的列表从而实现服务之间的通信。 Ribbon客户端负载均衡 作用Ribbon 是一个负载均衡器用于将客户端的请求分发到多个服务提供者实例中以实现负载均衡和容错。 Feign声明式 REST 客户端 作用Feign 提供了一种声明式的方式来编写 REST 客户端代码将远程服务的调用看作是本地方法调用从而简化了远程服务的调用。 Hystrix容错和断路器 作用Hystrix 用于增加对分布式系统中服务的容错性和弹性。它提供了断路器模式可以防止服务故障时的级联失败同时还提供了降级机制。 ZuulAPI 网关 作用Zuul 是一个 API 网关用于路由、过滤、验证和监控微服务的请求。它可以集中处理请求提供负载均衡、安全性和日志记录等功能。 Config分布式配置管理 作用Config 用于集中管理和分发配置使得微服务可以动态地获取配置信息而不需要重新部署。 Bus消息总线 作用Bus 使用消息队列如RabbitMQ或Kafka来传播配置更改事件使得微服务能够实时更新配置。 Spring Cloud 工作原理概述 Spring Cloud 的核心原理是通过各种组件来简化分布式系统的开发和管理。下面是一般情况下 Spring Cloud 的工作原理 服务注册与发现服务提供者在启动时将自己注册到服务注册中心如Eureka服务消费者从注册中心获取可用服务的列表。Ribbon负责将请求分发到这些服务提供者中。 负载均衡Ribbon 提供负载均衡功能通过轮询、随机或其他策略将请求分发到不同的服务实例上以实现负载均衡。 声明式 REST 客户端Feign 允许开发者通过接口和注解定义远程服务的调用底层使用Ribbon来实现负载均衡和容错。 容错和断路器Hystrix 提供了断路器模式可以监控服务的调用情况当服务出现故障或超时时Hystrix可以进行降级或者提供备用响应防止级联失败。 API 网关Zuul 作为网关接收外部请求可以进行路由、过滤、验证和监控并将请求转发给相应的微服务。 分布式配置管理Config 允许将应用程序的配置集中管理配置更改时可以通过消息总线Bus来实时通知各个微服务。 消息总线Bus 允许微服务之间通过消息队列来传播配置更改事件实现动态配置更新。 总之Spring Cloud 提供了一整套工具和模式帮助开发者构建和管理分布式系统使得微服务之间的通信、负载均衡、容错性、配置管理等任务更加容易和可靠。这些组件可以根据具体的需求组合使用从而构建出符合特定场景需求的分布式应用。 接⼝限流⽅法 接口限流是一种用于控制接口请求频率的方法以防止恶意或过度频繁的请求对服务器造成不必要的负担。以下是一些常见的接口限流方法 基于令牌桶算法Token Bucket 令牌桶算法是一种常用的限流算法它维护了一个固定容量的令牌桶令牌以固定速率往桶中放入每个请求需要获取一个令牌才能执行。如果桶中没有足够的令牌则请求被限制。优点平滑控制请求速率适用于突发请求。缺点难以应对突发大量请求。 基于漏桶算法Leaky Bucket 漏桶算法维护了一个固定容量的漏桶请求以固定速率加入漏桶请求需要等待漏桶中有足够的空间才能被处理。如果请求到来速度超过了漏桶的处理速度则请求被限制。优点平滑控制请求速率适用于稳定的流量。缺点不适用于突发请求。 基于计数器 简单的限流方法是维护一个计数器记录在一定时间内的请求次数。如果请求次数超过了限制则请求被限制。优点简单易实现。缺点不适用于平滑控制请求速率容易受到突发请求的影响。 基于分布式限流器 在分布式系统中可以使用分布式限流器如Redis或ZooKeeper来实现接口限流。每个服务节点共享一个分布式限流器可以协调限制请求。优点适用于分布式系统可以协调多个节点的限流。缺点需要额外的分布式存储和协调机制。 基于第三方服务 使用第三方的限流服务如Google的Rate Limiting或云服务提供商的API网关限流功能。这些服务通常提供了强大的限流和配额管理功能。优点易于使用可扩展性好。缺点可能需要支付额外的费用。 选择适合您应用程序需求的限流方法取决于多个因素包括请求特征、系统架构和性能要求。通常令牌桶和漏桶算法是常见的选择但在特定情况下其他方法也可能更合适。最佳实践是根据您的具体需求进行测试和调优以找到最适合您的限流策略。 Spring Cloud Task Spring Cloud Task 是 Spring Cloud 生态系统中的一个项目用于支持短暂、一次性任务的开发和执行。它旨在简化任务的创建、调度和执行以及任务状态的管理。Spring Cloud Task 通常用于处理批处理任务、ETL提取、转换、加载任务、数据导入等一次性任务场景。 以下是 Spring Cloud Task 的一些关键特点和用途 任务创建和配置Spring Cloud Task 允许开发者创建和配置任务通过简单的注解和属性设置来定义任务的输入、输出和其他属性。 任务调度您可以使用 Spring Cloud Task 来调度任务的执行可以手动触发任务或根据计划来执行任务。 任务执行Spring Cloud Task 提供了任务执行环境可用于运行任务。它可以运行在单个应用程序中也可以在分布式环境中执行。 任务状态管理Spring Cloud Task 允许您管理任务的状态包括任务的启动、停止、失败等状态。您可以查看任务的执行历史和结果。 任务监听器Spring Cloud Task 提供了任务监听器您可以使用它来监视任务的执行以及在任务生命周期中执行自定义操作。 任务失败和恢复Spring Cloud Task 允许您定义任务的失败处理策略例如重新尝试、回滚或通知。 任务追踪和监控Spring Cloud Task 可以集成 Spring Cloud Stream 和 Spring Cloud Data Flow以实现任务的追踪、监控和管理。 分布式任务虽然 Spring Cloud Task 主要用于短暂的一次性任务但也可以在 Spring Cloud Data Flow 等工具的帮助下实现分布式任务。 Spring Cloud Task 通常与 Spring Batch 结合使用以处理大规模的批处理任务。Spring Cloud Data Flow 可以用于创建和管理 Spring Cloud Task 任务将其部署到不同的执行环境中并提供任务的监控和管理。 总的来说Spring Cloud Task 是一个有助于简化一次性任务的创建和管理的框架特别适用于需要执行批处理、ETL 或数据导入任务的场景。它提供了任务的生命周期管理、状态管理和任务调度功能使任务执行变得更加可靠和可控。 什么是Oauth OAuthOpen Authorization是一种开放标准的授权协议用于授权用户或应用程序访问另一个应用程序的资源而无需共享用户凭据例如用户名和密码。OAuth 的设计目标是允许用户在不泄露其密码的情况下授予第三方应用程序对其受保护资源的有限访问权限。 OAuth 协议的基本概念涉及以下几个主要角色和概念 资源所有者Resource Owner资源所有者是指拥有受保护资源的用户。这可以是一个人也可以是一个应用程序。 客户端Client客户端是请求访问资源的应用程序它可能是一个Web应用、移动应用、桌面应用或后端服务等。 授权服务器Authorization Server授权服务器是负责验证资源所有者身份并向客户端颁发访问令牌的服务器。通常授权服务器也是身份验证服务器。 资源服务器Resource Server资源服务器是存储受保护资源的服务器资源服务器会验证客户端的令牌并提供受保护资源。 访问令牌Access Token访问令牌是客户端用来访问资源服务器上受保护资源的凭证。访问令牌的有效期通常较短以增加安全性。 授权码Authorization Code在某些 OAuth 流程中客户端首先会重定向到授权服务器在资源所有者授权后授权服务器会返回一个授权码给客户端然后客户端再用授权码交换访问令牌。 OAuth 定义了不同的授权流程或授权方式以满足不同的应用和安全需求。其中最常见的 OAuth 2.0 是一种现代化的 OAuth 版本广泛用于互联网应用程序和API的授权。 OAuth 的核心优势在于它允许用户授予有限的、特定范围的访问权限而无需共享他们的凭据。这对于保护用户隐私和安全非常重要并允许用户有更多的控制权来管理他们的数据。OAuth 在许多互联网服务、社交媒体平台和API中被广泛使用以实现安全的第三方访问授权。 什么是微服务架构中的DRY DRY 是 “Don’t Repeat Yourself”不要重复自己的缩写它是软件开发中的一项重要原则。在微服务架构中DRY 原则同样适用其核心思想是避免在系统中重复的、冗余的代码和功能。 在微服务架构中DRY 原则具有以下含义和重要性 避免代码冗余DRY 原则鼓励开发者避免在不同的微服务或服务组件中重复编写相同的代码。这不仅减少了代码量还减少了维护成本因为当需要进行更改或修复时只需在一个地方进行操作。 一致性和可维护性DRY 原则有助于保持系统的一致性因为相同的逻辑只需实现一次。这提高了系统的可维护性因为开发者只需关注单一实现的问题而不必担心多个副本的一致性问题。 Bug 降低和问题排查由于逻辑只存在于一个地方因此在出现问题或 bug 时开发者可以更容易地定位和修复问题而不必检查多个地方。 性能和资源利用避免重复的代码和功能可以提高系统性能因为不再需要多次执行相同的操作。此外也可以减少资源的浪费因为不会为相同的功能分配多个资源。 可扩展性和灵活性DRY 原则有助于系统的可扩展性因为新的微服务或功能可以重复使用现有的逻辑而不必从头开始编写。这提高了系统的灵活性因为它更容易适应新的需求和变化。 总之DRY 原则在微服务架构中具有重要意义它有助于确保代码的一致性、可维护性和可扩展性。开发者应该努力避免在不同的微服务中复制和粘贴相同的代码而是通过模块化、库、共享代码或微服务之间的通信来实现代码的重用。这有助于构建更高效、更稳定和更易于维护的微服务应用程序。 设计微服务的最佳实践是什么 设计微服务的最佳实践涵盖了许多方面包括微服务的拆分、通信、可维护性、安全性、监控等。以下是一些设计微服务时的最佳实践 领域驱动设计DDD 了解业务领域将微服务划分为逻辑上的边界每个微服务关注一个特定的业务子领域。这有助于确保微服务的职责清晰且高内聚。 单一职责原则SRP 每个微服务应该具有单一的职责负责一个明确定义的功能。这有助于简化微服务的设计和维护。 松耦合Loose Coupling 通过使用适当的通信机制如HTTP REST或消息队列将微服务之间的依赖关系降至最低。避免硬编码的依赖而是使用服务发现和注册等机制来查找其他微服务。 API 设计 设计清晰、稳定和易于理解的API以便其他微服务可以轻松调用。使用版本控制来管理API的演进。 独立部署和可伸缩性 每个微服务应该能够独立部署和伸缩这有助于实现高可用性和系统弹性。使用容器化技术如Docker和Kubernetes来管理微服务的部署。 断路器模式 实施断路器模式如Hystrix来处理微服务之间的故障和延迟以防止级联故障。 日志和监控 在微服务中实施日志记录和监控以便能够追踪和分析微服务的行为和性能。使用分布式追踪工具如Zipkin来跟踪请求的流经。 安全性 为微服务实施适当的安全措施包括身份验证、授权、API令牌等。确保敏感数据在传输和存储时受到保护。 持续集成和持续交付 自动化构建、测试和部署过程以便能够频繁地交付新版本。使用CI/CD工具来支持自动化流程。 文档和API文档 编写适当的文档以描述每个微服务的功能、API、使用方式和依赖关系。维护好的文档有助于团队协作和快速开发。 容错性和故障处理 考虑微服务的容错性处理故障情况并提供适当的回退机制以确保系统在出现问题时能够继续运行。 团队组织 将团队按照微服务的拆分组织每个团队负责维护和开发一个或多个微服务。确保团队有足够的自治权以便快速响应需求变化。 最佳实践可能因组织和项目而异但上述原则通常适用于大多数微服务架构设计。微服务的设计和实施需要平衡多个因素包括性能、可维护性、安全性和可伸缩性因此在设计阶段要进行慎重考虑并不断根据反馈和需求进行调整和改进。 负载平衡的意义什么 负载平衡Load Balancing是计算机网络和系统设计中的一项重要技术其主要目的是将网络流量或工作负载均匀分布到多个服务器或资源上以提高性能、可用性、稳定性和可伸缩性。以下是负载平衡的主要意义和作用 提高性能 负载平衡可以将流量分配到多个服务器上从而减轻每台服务器的负载。这可以提高系统的整体性能缩短响应时间并降低延迟。 提高可用性 当一个服务器发生故障或维护时负载平衡器可以自动将流量重定向到其他正常运行的服务器上。这提高了系统的可用性减少了服务中断的风险。 增加稳定性 负载平衡可以防止某个服务器过载导致性能下降或崩溃。通过均匀分布负载可以提高系统的稳定性减少故障的可能性。 实现横向扩展 负载平衡允许在需要时添加更多的服务器来应对增加的流量。这种横向扩展方式增加了系统的可伸缩性使其能够处理更多的请求。 资源利用率 负载平衡可以确保每台服务器都能充分利用其资源从而提高硬件资源的利用率。这有助于降低服务器成本因为不需要过度投资于高端硬件。 故障检测和自动恢复 负载平衡器通常具有故障检测机制可以检测到服务器的故障并自动将流量路由到正常运行的服务器上。这有助于快速恢复服务。 优化用户体验 用户可以通过更快的响应时间和更高的可用性获得更好的用户体验从而提高用户满意度。 分布式系统支持 在分布式系统中负载平衡可以协调不同节点之间的工作负载以确保任务分配合理提高系统效率。 总之负载平衡在现代计算环境中扮演着关键角色它不仅提高了系统性能、可用性和稳定性还支持了云计算、分布式系统、高可用性应用程序等众多重要应用。通过均匀分配负载负载平衡有助于确保计算资源的有效利用并提供无缝的用户体验。 服务网关的作用 服务网关Service Gateway是微服务架构中的一个重要组件它充当了客户端和后端微服务之间的入口点具有多种重要作用 路由请求 服务网关可以根据请求的URL、HTTP方法、头部信息等条件将请求路由到适当的后端微服务。这允许客户端通过单个入口点访问多个微服务。 负载均衡 服务网关可以在多个相同微服务实例之间均衡分发请求以确保各个实例均匀分担负载提高系统的性能和可伸缩性。 安全性 服务网关可以充当安全性的边界执行身份验证、授权、访问控制等安全功能。它可以保护后端微服务免受恶意请求和安全威胁的影响。 请求转换 服务网关可以对请求和响应进行转换以适应不同的客户端和后端微服务的需求。这包括请求和响应的协议转换、数据格式转换等。 缓存 服务网关可以缓存响应以减轻后端微服务的负载并提高响应时间。这对于频繁请求相同资源的场景很有帮助。 日志和监控 服务网关通常负责记录请求和响应以及执行监控和分析功能。这有助于跟踪系统性能和问题排查。 限流和熔断 服务网关可以实施请求限流和熔断机制以防止过多的请求影响后端服务的性能和可用性。 静态资源服务 服务网关可以提供静态资源如图像、CSS、JavaScript文件的服务减轻后端服务的负担提高页面加载速度。 API版本管理 服务网关可以处理不同版本的API为客户端提供适合其需求的API版本而不需要直接影响后端微服务的API。 服务发现和注册 服务网关可以与服务发现机制集成动态地发现后端微服务的实例并自动更新路由信息。 总之服务网关在微服务架构中扮演了重要的角色提供了一系列关键功能包括请求路由、负载均衡、安全性、缓存、监控等以帮助构建可扩展、高性能和安全的微服务应用程序。它提供了一个单一的入口点简化了客户端与多个微服务之间的交互同时提供了一些必要的基础设施支持。 spring cloud 断路器的作用是什么 Spring Cloud断路器Spring Cloud Circuit Breaker是用于构建分布式系统中的容错和故障处理机制的一种重要组件。断路器的主要作用是在服务之间的通信中提供容错保护以确保系统在面临故障或高负载情况下继续可用。 以下是Spring Cloud断路器的主要作用 故障处理断路器能够检测到远程服务的故障或延迟并在发现故障时采取措施而不是继续请求可能失败的服务。这有助于防止故障扩散到整个系统。 避免过载当后端服务不可用或响应时间过长时持续发起请求可能导致服务过载。断路器会在适当时机停止发起请求从而减轻后端服务的负载。 快速失败断路器会快速响应故障而不是等待超时。这有助于降低客户端等待的时间使系统更加灵敏。 自我恢复断路器通常具有自我恢复的机制它们会周期性地尝试请求后端服务以检查服务是否已恢复正常。一旦服务正常断路器将允许请求通过。 状态监控Spring Cloud断路器通常提供监控和度量功能可以实时跟踪断路器的状态、失败率、超时率等指标。这有助于运维团队了解系统的健康状况。 降级策略断路器可以定义降级策略当服务降级时可以返回预先定义的备用数据或执行备用逻辑以确保系统的基本功能继续可用。 适应性断路器可以根据后端服务的状态和性能动态调整其行为。这使得系统能够适应不同情况下的负载和故障。 Spring Cloud断路器通常与其他Spring Cloud组件如Eureka、Ribbon、Feign等集成以提供全面的容错和负载均衡解决方案。Hystrix是Spring Cloud中常用的断路器实现它提供了丰富的功能和配置选项可以根据具体需求进行配置和使用。断路器是构建可靠和鲁棒的分布式系统的关键组件之一特别适用于微服务架构中其中多个服务之间的故障难以避免。 Spring Cloud Security 当将Spring Cloud Security与Spring Cloud Gateway一起使用并使用数据库中的用户信息进行身份验证时需要执行以下步骤 添加依赖 在项目的pom.xml文件中添加Spring Cloud Gateway和Spring Cloud Security的依赖 dependencies!-- Spring Cloud Gateway --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!-- Spring Cloud Security --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-security/artifactId/dependency /dependencies创建自定义UserDetailsService 创建一个实现UserDetailsService接口的自定义服务该服务从数据库中检索用户信息并返回UserDetails对象。确保该服务能够根据用户名查询数据库中的用户信息。 Service public class CustomUserDetailsService implements UserDetailsService {// 注入 UserRepository 或相应的数据访问层Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {// 查询数据库中的用户信息并构建 UserDetails 对象// ...} }配置Spring Security 创建一个Spring Security配置类注册UserDetailsService和密码编码器并配置安全规则。确保配置适当的角色和访问权限。 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate UserDetailsService userDetailsService;Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/secure/**).authenticated().anyRequest().permitAll().and().httpBasic();} }测试安全性 确保你的数据库中包含用户信息包括用户名和加密后的密码。使用合适的用户名和密码进行测试。 这样当你的Spring Cloud Gateway应用程序启动时它将使用数据库中的用户信息进行身份验证。如果用户名和密码匹配并且用户具有所需的角色和访问权限请求将被允许通过否则将返回身份验证错误。这种方式使你能够确保只有授权的用户可以访问你的微服务。请注意上述示例是一个基本的配置你可以根据实际需求扩展和自定义安全性配置。 什么是 Hystrix 断路器我们需要它吗 Hystrix 是一个开源的断路器Circuit Breaker库最初由 Netflix 创建并开源。它的主要目标是帮助构建分布式系统中的容错性特别是在面临服务之间的通信失败、超时、延迟或资源不足等问题时提供一种可靠的解决方案。断路器的作用是防止故障的扩散提高系统的可用性和稳定性。 以下是 Hystrix 断路器的一些主要特性和功能 故障保护Hystrix 可以监视依赖服务的调用并在发生故障时采取措施而不是继续发起失败的请求。这有助于防止故障扩散到整个系统。 快速失败Hystrix 快速响应故障而不是等待超时。这可以减少客户端等待的时间使系统更加灵敏。 自我恢复Hystrix 具有自我恢复的能力它会周期性地尝试请求依赖服务以检查服务是否已经恢复正常。一旦服务正常断路器将允许请求通过。 限流Hystrix 可以设置请求的并发限制以确保不会过多的请求涌入系统从而保护后端服务免受过载。 度量和监控Hystrix 收集有关断路器的性能和状态的度量数据这些数据可以用于监控和分析。它还可以与监控工具如Hystrix Dashboard、Turbine等集成实时查看断路器的状态。 降级策略当依赖服务发生故障时Hystrix 可以执行降级策略例如返回备用数据或执行备用逻辑以确保系统的基本功能继续可用。 是否需要使用 Hystrix 断路器取决于你的应用程序的性质和架构。以下是一些情况下你可能需要考虑使用 Hystrix 断路器 微服务架构在微服务架构中多个服务相互依赖故障可能会传播到整个系统。使用 Hystrix 可以有效地控制和管理这种情况防止故障扩散。 对外部依赖如果你的应用程序依赖于外部服务或资源如HTTP调用、数据库连接、消息队列等这些依赖可能会出现故障或不可用。Hystrix 可以帮助你对这些外部依赖进行故障保护。 容错性如果你的应用程序对可用性和容错性有较高要求那么使用 Hystrix 可以帮助你实现这些目标。 资源隔离Hystrix 使用线程池或信号量来隔离依赖服务的调用从而可以防止一个故障的服务影响其他服务。 需要注意的是Hystrix 在近年来的发展中已经进入维护模式Netflix 宣布停止 Hystrix 项目的开发。因此如果你正在考虑在新项目中使用断路器你可能会考虑使用其他替代方案如Resilience4j或Sentinel它们提供了类似的功能并持续进行维护。选择合适的断路器库应该基于你的具体需求和技术栈来做出。 springcloud如何实现服务的注册? 使用Consul作为配置中心是一种常见的做法Consul不仅可以用作服务发现和注册中心还可以存储和分发应用程序的配置信息。以下是使用Consul作为配置中心的一般步骤 添加依赖 首先你需要在项目的pom.xml文件中添加Spring Cloud Consul配置的相关依赖 dependencies!-- Spring Cloud Consul Config --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-consul-config/artifactId/dependency /dependencies配置Consul连接信息 在Spring Boot应用程序的配置文件中配置连接到Consul的信息包括Consul服务器的地址和端口。 spring:cloud:consul:host: consul-server-hostport: consul-server-port将consul-server-host和consul-server-port替换为你的Consul服务器的主机和端口。 创建配置文件 创建一个配置文件通常是YAML或Properties格式并将应用程序的配置信息存储在其中。你可以根据需要创建多个配置文件例如application.yml、application-dev.yml、application-prod.yml等以区分不同环境的配置。 # application.yml message: Hello from Consul Config启用配置中心 在Spring Boot应用程序的启动类上添加EnableAutoConfiguration注解并启用Consul配置中心。 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.context.config.annotation.RefreshScope;SpringBootApplication EnableDiscoveryClient RefreshScope public class YourApplication {public static void main(String[] args) {SpringApplication.run(YourApplication.class, args);} }RefreshScope注解用于实现配置信息的动态刷新以便在配置发生更改时自动更新应用程序。 访问配置信息 在你的应用程序中可以通过Spring的Value注解或Environment对象来访问配置信息。 import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ConfigController {Value(${message})private String message;GetMapping(/message)public String getMessage() {return message;} }启动应用程序 启动你的Spring Boot应用程序它将自动连接到Consul配置中心并使用配置中心中的配置信息。 修改配置信息 当需要更改配置信息时可以直接在Consul的键值存储中进行修改。应用程序会自动检测到配置的更改并重新加载。 监控配置变更 如果你希望监控配置的变更可以使用Spring Cloud Bus和消息代理如RabbitMQ或Kafka来通知所有应用程序实例更新配置。 以上步骤基于Spring Cloud和Consul的集成让你的应用程序能够动态地从Consul配置中心获取配置信息。这种方式使得配置管理更加灵活可以轻松地更新配置而不需要重新部署应用程序。 Spring Cloud Sleuth Spring Cloud Sleuth是一个用于分布式跟踪的开源框架它是Spring Cloud生态系统的一部分。它帮助开发人员跟踪分布式系统中的请求以识别问题并分析性能瓶颈。Spring Cloud Sleuth的主要功能包括 分布式跟踪Spring Cloud Sleuth能够为分布式应用程序中的请求创建唯一的跟踪标识通常使用traceId和spanId。这些标识可以跨越不同的服务和组件允许你追踪请求的整个生命周期。 集成Spring Cloud Sleuth可以轻松集成到Spring Cloud应用程序中包括Spring Boot。它还支持与其他分布式跟踪系统如Zipkin、Jaeger等的集成。 自动化标识Sleuth可以自动为请求生成唯一的标识你无需手动编写代码来管理这些标识。这使得在分布式系统中跟踪请求变得更加容易。 跟踪数据收集Spring Cloud Sleuth可以将跟踪数据发送到集中式的跟踪服务器如Zipkin以便分析请求的流程和性能。这些数据包括请求的持续时间、每个服务的处理时间等。 跟踪数据可视化通过与跟踪服务器如Zipkin集成你可以可视化查看跟踪数据分析请求的流程并识别潜在的性能瓶颈。 错误和异常跟踪Spring Cloud Sleuth还可以跟踪请求中的错误和异常帮助你快速定位和解决问题。 自定义跟踪虽然Sleuth提供了自动化的跟踪机制但你也可以根据需要自定义跟踪信息以更精细地监控应用程序的行为。 使用Spring Cloud Sleuth可以改善分布式系统的可观察性有助于开发人员识别和解决性能问题、故障和延迟。它是构建微服务架构的有用工具之一尤其是在大型和复杂的微服务系统中能够提供关键的分布式跟踪和性能分析功能。与其他Spring Cloud组件一起使用可以构建高度可观察的微服务应用程序。 ZuulFilter常用有那些方法 在Spring Cloud中使用Zuul作为API网关时你可以创建自定义的Zuul过滤器来在请求和响应的不同阶段执行逻辑。以下是一些常用的Zuul过滤器方法 pre Filters前置过滤器 shouldFilter()该方法决定是否启用当前过滤器。返回true表示启用返回false表示禁用。run()这是实际过滤器逻辑的主要方法。在请求被路由之前执行。例如可以在此处添加身份验证、认证、请求日志记录等逻辑。 route Filters路由过滤器 shouldFilter()类似于前置过滤器决定是否启用当前过滤器。run()在请求被路由时执行。这里可以对请求进行修改例如修改请求头、请求路径等。 post Filters后置过滤器 shouldFilter()类似于前置和路由过滤器决定是否启用当前过滤器。run()在响应被发送回客户端之前执行。通常在这里可以修改响应、添加响应头、记录响应日志等。 error Filters错误过滤器 shouldFilter()决定是否启用当前过滤器。run()在处理请求过程中发生错误时执行。例如可以在此处记录错误信息、处理异常等。 这些方法是Zuul过滤器的常用方法。你可以根据需要创建自定义过滤器并在这些方法中编写逻辑来实现不同的功能。过滤器在Zuul的请求处理管道中以特定的顺序执行你可以通过设置过滤器的顺序来控制它们的执行顺序。 在创建自定义Zuul过滤器时你需要扩展ZuulFilter类并实现上述方法中的适当方法。然后将过滤器注册到Zuul中以便它能够在请求和响应处理中执行相应的逻辑。通过使用Zuul过滤器你可以实现许多有用的功能例如身份验证、授权、请求转发、响应处理等。 Spring Cloud Gateway Spring Cloud Gateway是一个构建在Spring Framework 5、Project Reactor和Spring Boot 2之上的API网关工具。它允许你以响应式编程的方式构建和部署API网关用于路由、过滤、负载平衡、熔断器、限流等一系列微服务架构中常见的任务。以下是Spring Cloud Gateway的主要特点和功能 动态路由Gateway允许你基于请求的路径、查询参数、请求头等信息动态地将请求路由到不同的后端服务。 过滤器Gateway支持自定义过滤器你可以在请求前、请求后以及错误处理时执行各种操作如身份验证、请求和响应的修改、日志记录等。 负载平衡它集成了负载平衡功能可以将请求均衡地分发到多个后端服务实例上。 熔断器Gateway支持熔断器模式可以在后端服务不可用时避免请求的连锁失败提高系统的稳定性。 限流你可以使用Gateway来实现请求限流以防止某个服务被过度请求而导致的性能问题。 路由匹配支持灵活的路由匹配规则可以根据不同的URL路径和请求条件将请求路由到不同的后端服务。 响应式编程Gateway是基于响应式编程的原则构建的利用了Project Reactor可以处理高并发的请求。 集成Spring生态系统Gateway与Spring生态系统无缝集成可以与Spring Boot、Spring Cloud Config、Spring Cloud Discovery等组件一起使用。 动态刷新支持动态刷新路由配置使得你可以在不重启应用程序的情况下修改路由规则。 高度可扩展Gateway的体系结构允许你轻松地添加自定义功能扩展其功能。 Spring Cloud Gateway是构建微服务架构的关键工具之一它提供了一个灵活、高性能和可扩展的方式来管理API请求和响应。通过使用Gateway你可以更好地控制请求流量、提高系统的可用性并实现各种微服务架构中常见的功能。不过它也需要一定的学习曲线特别是对于响应式编程的概念和使用方式。 Spring Cloud OpenFeign Spring Cloud OpenFeign是Spring Cloud生态系统中的一个组件它为开发者提供了一种简单而强大的方式来定义和使用声明式的REST客户端。通过OpenFeign你可以像调用本地方法一样调用远程服务而无需手动编写HTTP请求和处理HTTP响应。 以下是Spring Cloud OpenFeign的主要特点和功能 声明式REST客户端OpenFeign允许你使用注解来定义REST客户端接口接口的方法对应于远程服务的HTTP端点。这使得远程调用的代码更加简洁和易于理解。 自动化的HTTP请求当调用声明式客户端接口的方法时OpenFeign会自动生成和发送HTTP请求你无需手动构建HTTP请求。 集成了Ribbon负载均衡OpenFeign集成了Ribbon因此它可以自动地将请求分发给多个服务实例实现了客户端负载均衡。 集成了Hystrix熔断器OpenFeign还集成了Hystrix使你能够为远程调用设置熔断器处理远程服务不可用或延迟的情况。 支持Spring Cloud ContractOpenFeign可以与Spring Cloud Contract一起使用用于定义和测试API契约以确保客户端和服务端的契约一致性。 可定制性虽然OpenFeign提供了许多默认配置但你仍然可以通过自定义配置来满足特定需求例如添加请求拦截器、更改编码方式等。 使用Spring Cloud OpenFeign你可以大大简化微服务之间的通信减少了手动编写HTTP请求和处理HTTP响应的工作量。这使得开发者能够更专注于业务逻辑同时保持了代码的清晰性和可维护性。它特别适用于构建微服务架构中的客户端应用程序如微服务网关、Web应用程序等。 Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别 Eureka和ZooKeeper都可以用作服务注册与发现的工具但它们在设计、特点和适用场景上有一些区别 Eureka: 设计理念 Eureka是Netflix开源的工具专门设计用于构建基于云的微服务架构。Eureka采用了一种服务注册表的设计模式服务提供者将自己注册到Eureka服务器并定期发送心跳以保持注册信息的最新。 CAP定理 Eureka追求高可用性和分区容错性AP模型即在网络分区的情况下它更注重可用性而不是一致性。这意味着在网络分区的情况下Eureka可以继续提供服务注册与发现的功能但可能会导致数据的最终一致性问题。 用途 Eureka适用于构建云原生应用和基于微服务的架构特别是在AWS环境中。 ZooKeeper: 设计理念 ZooKeeper是一个分布式协调服务最初设计用于构建分布式系统的协调和管理功能。ZooKeeper提供了一个分布式文件系统和基于节点的数据存储可以用于实现各种分布式系统的共享配置、分布式锁、领导选举等功能服务注册与发现只是其中之一。 CAP定理 ZooKeeper追求强一致性CP模型即在网络分区的情况下它更注重数据的一致性而不是可用性。这意味着在网络分区的情况下ZooKeeper可能会导致部分服务不可用但数据一致性得到保障。 用途 ZooKeeper的应用范围更广泛不仅用于服务注册与发现还用于分布式配置管理、分布式锁、领导选举等分布式协调任务。 总结 如果你构建的系统主要是基于微服务架构并且对高可用性要求较高Eureka可能是更合适的选择。如果你需要一个通用的分布式协调服务包括服务注册与发现以及其他分布式任务而且可以容忍在网络分区的情况下牺牲一些可用性以保证数据一致性那么ZooKeeper可能更适合你。此外现在在Spring Cloud中Eureka已经被官方宣布停止维护推荐使用其他服务发现工具如Consul或ZooKeeper。所以Eureka在新项目中可能不再是首选。 什么是Hystrix它如何实现容错 Hystrix是Netflix开源的一款容错和延迟容忍性库用于构建分布式系统中的弹性服务。它的目标是防止分布式系统中的故障和延迟问题影响整个系统提供了一系列机制来处理故障和降低服务的影响。 以下是Hystrix的主要特点和容错实现方式 隔离服务调用Hystrix通过隔离服务调用将每个服务的调用都放置在独立的线程池中。这意味着一个服务的问题不会传播到其他服务防止了故障的扩散。如果一个服务调用失败或者超时只会影响到该服务的线程池而不会影响整个系统的稳定性。 熔断器模式Hystrix实现了熔断器模式它会监控服务调用的失败率和响应时间。如果服务调用失败率超过一定阈值或者响应时间超过指定时间Hystrix会将熔断器打开停止向该服务发出请求。这可以避免对不可用服务的不必要调用并且在一段时间后会尝试关闭熔断器以恢复服务。 降级机制Hystrix允许定义降级策略当服务调用失败时可以执行备用的操作或返回默认值以确保系统的正常运行。例如可以返回缓存的数据或者一个友好的错误消息。 超时控制Hystrix允许设置服务调用的超时时间如果服务调用在规定时间内没有完成Hystrix会认为它超时并执行降级策略。 回退策略Hystrix支持定义回退策略可以指定在服务调用失败时要执行的备用逻辑以确保系统的可用性。 度量和监控Hystrix提供了丰富的度量和监控功能可以收集和报告有关服务调用的性能和状态信息。这些信息可以帮助运维人员了解服务的健康状况并及时采取措施来处理故障。 自动恢复Hystrix具有自动恢复功能一旦服务调用恢复正常它将自动关闭熔断器并恢复对服务的请求。 总之Hystrix是一种用于构建弹性和容错的库通过隔离、熔断、降级、超时控制、回退策略等机制使得分布式系统在面对故障和延迟时能够更加稳定和可靠。它在Netflix等大型分布式系统中得到广泛使用并在微服务架构中起到了重要作用。不过需要注意的是Hystrix在Netflix的维护下已经不再活跃推荐使用Spring Cloud Circuit Breaker等替代方案。 SpringCloud Config 可以实现实时刷新吗 是的Spring Cloud Config 可以实现实时刷新配置的功能。通过 Spring Cloud Config你可以将配置信息集中存储在一个外部配置服务器中并让应用程序从该服务器获取配置。当配置服务器上的配置发生变化时Spring Cloud Config 可以通知已经获取配置的应用程序以实现实时刷新配置的效果。 以下是实现配置实时刷新的一般步骤 设置配置服务器首先你需要设置一个配置服务器可以使用 Spring Cloud Config Server 来实现。在配置服务器上你需要存储应用程序的配置文件例如使用 Git、SVN、本地文件系统等来管理这些配置文件。 在应用程序中集成 Spring Cloud Config 客户端在你的应用程序中引入 Spring Cloud Config 客户端依赖并在配置文件中指定配置服务器的位置和应用程序的名称。例如在 bootstrap.properties 或 bootstrap.yml 文件中配置 spring:cloud:config:uri: http://config-server:8888 # 配置服务器的地址name: your-application-name # 应用程序的名称配置实时刷新为了实现实时刷新配置你可以使用 Spring Cloud Bus通常与消息代理如RabbitMQ或Kafka结合使用。配置 Spring Cloud Bus 后你可以使用 /actuator/refresh 端点来触发配置的实时刷新。 在应用程序中使用配置在你的应用程序中使用 Spring 的 Value 注解或 ConfigurationProperties 来注入配置属性。这些属性将从配置服务器获取并在配置更改时实时刷新。 触发配置刷新当需要刷新配置时发送一个 POST 请求到 /actuator/refresh 端点。这将通知应用程序重新加载配置。 通过上述步骤你可以实现 Spring Cloud Config 的实时刷新配置功能以便在运行时更新应用程序的配置而不需要重启应用程序。这对于动态配置和故障恢复非常有用。 什么是Spring引导的执行器 Spring Boot引导的执行器Spring Boot Actuator是Spring Boot框架的一个重要组成部分它提供了一套用于监控和管理Spring Boot应用程序的功能和端点。Actuator允许你在运行时查看应用程序的内部状态、性能指标、应用程序环境等信息并且可以在需要时采取管理操作如重新加载配置或关闭应用程序。Spring Boot Actuator的主要目标是提供对应用程序的运行时管理和监控的支持以便更好地了解和维护应用程序。 Spring Boot Actuator包括了多个内置的端点endpoints每个端点都提供了不同的管理和监控功能。以下是一些常用的Actuator端点 /actuator/health提供应用程序的健康状态信息可以用于健康检查。 /actuator/info允许应用程序提供自定义的信息例如版本号或其他元数据。 /actuator/metrics提供了丰富的度量指标如内存使用、线程池情况、HTTP请求数量等。 /actuator/env提供应用程序的环境属性和配置信息。 /actuator/loggers用于查看和修改日志记录级别。 /actuator/auditevents提供了安全审计事件的信息。 /actuator/httptrace记录HTTP请求和响应的跟踪信息。 /actuator/threaddump用于获取线程转储信息有助于分析应用程序的线程情况。 /actuator/mappings显示Spring MVC控制器的映射信息包括URL路径和处理方法。 /actuator/beans提供了应用程序中所有Spring Bean的信息。 Spring Boot Actuator还支持自定义端点你可以创建自定义端点来暴露应用程序特定的信息或执行特定的管理操作。 Actuator的功能对于监控和管理Spring Boot应用程序非常有用它可以帮助你快速诊断问题、监控性能并且可以与各种监控系统如Prometheus、Grafana、Elasticsearch等集成以实现更复杂的监控和警报策略。要使用Actuator只需将相应的依赖项添加到你的Spring Boot项目中并在配置中启用所需的端点。不过要注意由于Actuator提供了强大的管理和监控功能需要适当地进行安全配置以避免未经授权的访问。
文章转载自:
http://www.morning.knlyl.cn.gov.cn.knlyl.cn
http://www.morning.mhnrx.cn.gov.cn.mhnrx.cn
http://www.morning.dncgb.cn.gov.cn.dncgb.cn
http://www.morning.brld.cn.gov.cn.brld.cn
http://www.morning.jnrry.cn.gov.cn.jnrry.cn
http://www.morning.jfgmx.cn.gov.cn.jfgmx.cn
http://www.morning.nlnmy.cn.gov.cn.nlnmy.cn
http://www.morning.mxdiy.com.gov.cn.mxdiy.com
http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn
http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn
http://www.morning.flqbg.cn.gov.cn.flqbg.cn
http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn
http://www.morning.etsaf.com.gov.cn.etsaf.com
http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn
http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn
http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn
http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn
http://www.morning.duqianw.com.gov.cn.duqianw.com
http://www.morning.xqwq.cn.gov.cn.xqwq.cn
http://www.morning.yggdq.cn.gov.cn.yggdq.cn
http://www.morning.kcbml.cn.gov.cn.kcbml.cn
http://www.morning.xkppj.cn.gov.cn.xkppj.cn
http://www.morning.wrkhf.cn.gov.cn.wrkhf.cn
http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn
http://www.morning.ydmml.cn.gov.cn.ydmml.cn
http://www.morning.pngdc.cn.gov.cn.pngdc.cn
http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn
http://www.morning.jpydf.cn.gov.cn.jpydf.cn
http://www.morning.tytly.cn.gov.cn.tytly.cn
http://www.morning.tfbpz.cn.gov.cn.tfbpz.cn
http://www.morning.krdxz.cn.gov.cn.krdxz.cn
http://www.morning.zrks.cn.gov.cn.zrks.cn
http://www.morning.gsjw.cn.gov.cn.gsjw.cn
http://www.morning.rjnky.cn.gov.cn.rjnky.cn
http://www.morning.nrzbq.cn.gov.cn.nrzbq.cn
http://www.morning.rqkck.cn.gov.cn.rqkck.cn
http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn
http://www.morning.rtbj.cn.gov.cn.rtbj.cn
http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn
http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn
http://www.morning.sqnxk.cn.gov.cn.sqnxk.cn
http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn
http://www.morning.nchsz.cn.gov.cn.nchsz.cn
http://www.morning.zxybw.cn.gov.cn.zxybw.cn
http://www.morning.csznh.cn.gov.cn.csznh.cn
http://www.morning.rzrbw.cn.gov.cn.rzrbw.cn
http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn
http://www.morning.srgnd.cn.gov.cn.srgnd.cn
http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn
http://www.morning.qmnjn.cn.gov.cn.qmnjn.cn
http://www.morning.xbkcr.cn.gov.cn.xbkcr.cn
http://www.morning.wmglg.cn.gov.cn.wmglg.cn
http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn
http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn
http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn
http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn
http://www.morning.qrsrs.cn.gov.cn.qrsrs.cn
http://www.morning.nspbj.cn.gov.cn.nspbj.cn
http://www.morning.qkkmd.cn.gov.cn.qkkmd.cn
http://www.morning.bauul.com.gov.cn.bauul.com
http://www.morning.gwqq.cn.gov.cn.gwqq.cn
http://www.morning.wcghr.cn.gov.cn.wcghr.cn
http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn
http://www.morning.qsbcg.cn.gov.cn.qsbcg.cn
http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn
http://www.morning.kfcz.cn.gov.cn.kfcz.cn
http://www.morning.rykx.cn.gov.cn.rykx.cn
http://www.morning.rcqyk.cn.gov.cn.rcqyk.cn
http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn
http://www.morning.fkflc.cn.gov.cn.fkflc.cn
http://www.morning.zfgh.cn.gov.cn.zfgh.cn
http://www.morning.wyzby.cn.gov.cn.wyzby.cn
http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn
http://www.morning.bzfld.cn.gov.cn.bzfld.cn
http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn
http://www.morning.kaakyy.com.gov.cn.kaakyy.com
http://www.morning.wnpps.cn.gov.cn.wnpps.cn
http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn
http://www.morning.slfmp.cn.gov.cn.slfmp.cn
http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn
http://www.tj-hxxt.cn/news/237679.html

相关文章:

  • 怎么做好网站营销ext做的网站有那些
  • 深圳住 建设局网站首页信用网站建设招标书
  • 网站备案证书怎么下载不了wordpress 图片命名吗
  • 湘潭网站建设 磐石网络荣誉新冠咳嗽吃什么药止咳效果好
  • 上海网站开发招聘东莞服务
  • 建设网站的叫什么职位房屋建筑设计师哪里找
  • 成品网站建设价格网站快速备案价格
  • linux建设网站php打开提示404怎么做企业网站推广
  • 单网页网站内容邢台168交友最新信息
  • 做游戏动画外包网站logo创意设计
  • 南京做网站seo的小说网站排名怎么做
  • 做网站的工具+论坛做个有用网站
  • 全球网站访问量排名ru后缀的网站
  • 网站备案的要求是什么样的搭建网站账户系统
  • 商业网站开发模式江西智能网站建设哪里有
  • 网站后期维护很难吗网站的功能性
  • 甘肃网站seo推广影视采集网站怎么做收录
  • 深圳罗湖网站设计公司价格wordpress设计
  • wordpress 站内搜索慢不同网站模块分析
  • 做响应式网站设计wordpress查看站点
  • 公司网页网站建设+ppt模板下载网站建设现在市场大不大
  • 成都网站关键词优化用qq空间做网站
  • 注册网站刀具与钢材范围如何做网站的维护
  • 零基础企业管理培训课程巩义关键词优化推广
  • 合肥网站设计建设公司宁波十大广告传媒公司
  • wordpress 增加小工具seo网站代码
  • 广州h5网站制作公司个人网站整站下载
  • 建筑公司网站图片网站做微信接口吗
  • 做网站成品销售管理软件crm
  • 三台县城乡建设网网站qq手机版在线登录入口