Cómo construir una aplicación web WordPress utilizando una arquitectura de microservicios

WordPress 是一个功能强大的内容管理系统(CMS),可以为不同类型的网站和应用程序奠定基础。它使用的是典型的 “单体架构”,但随着网站的发展,这可能不是最合适的架构。这就是 “微服务架构 “的优势所在。

图片[1]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

什么是微服务

在单体架构中,应用程序的所有组件之间都是紧密耦合的。它本质上是作为单一服务运行的。这是一种开发应用程序的简单方法,但随着复杂性的增加,维护和可扩展性可能会成为一个挑战。

相比之下,微服务可以帮助将应用程序分解成一系列更小的服务。每个服务在开发、部署和扩展方面都相互独立。每个服务处理特定的任务,并通过应用编程接口(API)与其他服务通信。例如,一个典型的电子商务网站有购物车、结账、订单处理、产品页面等。

图片[2]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

是什么让微服务从整体架构中脱颖而出

微服务的高级“电梯推销”是指如何结合不同的技术和工具来创建一个整体。还有其他更深层次的特征值得注意:

  • 解耦:每个服务都保持独立性。这意味着你可以为每项工作使用最好的技术,而不是应对不合适的框架。
  • 自治:通过扩展,集成的服务不需要相互依赖来实现高性能运行。
  • 专业化:当然,每个服务都会专注于自己的工作,这又会影响性能。
  • 弹力:这种固有的高性能资产的一部分是,一次服务故障不会导致整个站点瘫痪。

除了这些方面之外,使用微服务还有更多优势:

  • 可扩展性:可以根据个人需求扩展个人服务,而不会影响应用程序的其余部分。
  • 灵活性:已经简要概述了服务如何使用最好的技术来完成工作。这甚至扩展到用来创建它们的编程语言。
  • 更快的发展:可以更快地开发小型且集中的服务,更好地了解服务的功能,并更轻松地维护系统。
  • 改进的故障隔离:通过“模块化”设置,可以在服务失败时隔离该服务,而不会影响其他服务。

另一方面,微服务可能会带来通信、数据一致性和管理分布式系统的复杂性。因此,必须仔细权衡应用程序的要求。

图片[3]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

微服务架构的组件

微服务架构可以由多个组件组成。就像“齿轮”在整个“轮子”中协同工作,提供可扩展且可维护的应用程序。

因此,有一些组件对于顺利实施至关重要:

  • API网关:这是任何客户端请求的入口点。它将这些请求转移到适当的微服务。它还可以处理速率限制和身份验证等任务。
  • 服务发现:需要采用动态方式让微服务发现并相互通信。Consul或 Eureka等工具可以在这方面提供帮助。
  • 容器化:使用Docker等工具将微服务打包并部署为容器是很常见的。这就是为每项服务提供隔离的方式。
  • 编排:当向应用程序添加微服务时,管理它们变得更加复杂。Kubernetes等工具可以帮助实现服务管理的自动化。
  • 缓存:Redis或Memcached等缓存机制通常会提高性能。考虑到后端服务和数据库的压力更大,这一点至关重要。
  • 消息传递:当然,服务也需要相互通信。这是RabbitMQtal vezApache Kafka等“异步”消息传递解决方案的工作。这些“消息代理”可实现微服务之间的松散耦合。

不过,工具只是设置的一方面。还有其他考虑因素,例如如何在完整架构中设计每个微服务。

图片[4]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

微服务的设计模式

微服务的设计模式在这里与开发工作流程中的其他地方一样重要。考虑到应用程序的潜在复杂性,重要的是要考虑哪些模式会产生最大的影响。主要有三点:

  • 每个服务数据库:每个微服务都使用自己的专用数据库,这有助于数据隔离和自治。
  • API 组合:可以组合微服务来创建更高级别的服务或 API。这种灵活性和可重用性是最大的好处。
  • 事件驱动架构:在这里,服务将通过事件进行通信。这有利于更松散的耦合和异步处理。

微服务和 WordPress REST API

WordPress REST API 在实现站点和微服务之间的集成方面发挥着至关重要的作用。它的端点可以让你使用 JSON 输出来检索和操作 WordPress 帖子、页面、用户、分类法etc.

[
  {
    "id": 1,
    "date": "2020-04-01T10:30:00",
    "date_gmt": "2020-04-01T14:30:00",
    "guid": {
      "rendered": "https://example.com/?p=1"
    },
    "modified": "2020-04-01T10:30:00",
    "modified_gmt": "2020-04-01T14:30:00",
    "slug": "hello-world",
    "status": "publish",
    "type": "post",
    "link": "https://example.com/hello-world/",
    "title": {
      "rendered": "Hello World"
    },
    …

因此,REST API 是架构中所有其他服务的枢纽。这意味着必须选择将哪些当前网站服务提取为微服务。我们会在后面的文章中更详细地讨论这个问题。

关键在于确定网络应用中的不同功能和职责。在此基础上,可以将它们拆分为独立、集中和可部署的微服务。

使用 Create Block 主题和微服务构建 Web 应用程序

了解使用微服务和创建块主题插件构建 Web 应用程序的过程。第一步是设置开发环境。

1.搭建开发环境

每个应用程序都从一个用于创建它的空间开始。因此,需要一个开发环境。开发空间有两个位置:本地计算机和服务器。设置本地开发环境的方法有很多。

2. 设置创建块主题插件

设置好开发环境后,就可以开始使用创建块主题插件来创建自定义的基于块的主题。还需要以下内容:

  • 一个可以使用的 WordPress 网站。
  • 编码编辑器。
  • 创建块主题插件。

可以按照典型的 WordPress 方式安装该插件。从那里,前往WordPress 中的“外观”>“创建块主题”链接:

图片[5]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

comprobar"Apariencia".选项卡,可以发现“管理主题字体”选项。创建块主题还可以访问此选项,这是WordPress 6.5 字体库Función.

图片[6]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

这些将成为你文件中的主题标识字段style.css。它们也很简单,包括为WordPress 主题目录选择名称、屏幕截图、URL 和一些标签。

点击确认后,再次转到“外观”>“主题”屏幕,就可以看到你的新主题已经准备就绪:

图片[7]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

设置和使用创建块主题的提示

由于超出了本篇文章的讨论范围,我们将不对新的区块主题进行过多的定制。不过,这里有一些使用创建区块主题的提示:

  • 可以在两个地方进行修改。可以使用 “全站编辑器 “中的 “全局样式 “选项,也可以自定义theme.jsonDocumentación.
  • 创建区块主题可以让你根据当前活动主题生成一个子主题。

3. 提取选择的微服务

区块主题准备就绪后,就可以更仔细地检查微服务了。需要做出的一个关键决定是,哪些服务将成为 “微服务”。

根据自己的需求来决定就好。不过,有几个因素需要注意:

  • 网站的功能:查看网站提供的任何独特功能,并考虑将其拆分为单独的微服务,例如支付功能。
  • 独立可扩展性:依赖于独立扩展的现有服务将是微服务的良好候选者。缓存就是一个例子。
  • 技术多样性:如果需要摆脱 WordPress 的 PHP 架构,这也是另一种微服务的候选方案。对于特定的电子商务平台或后台组件来说,情况差不多就是这样。
  • 数据隔离:具有自定义数据存储要求的服务可以是微服务。如果这些服务不需要与其他服务共享数据,也属于这种情况。
图片[8]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

开发和部署微服务

要处理并最终部署微服务,需要依赖其他工具。下面是可以用的一些关键注意事项和工具:

  • Docker通常是容器化微服务的方式。它将微服务及其依赖项打包在一起,使其易于部署和扩展。
  • 每个微服务也需要一个Dockerfile。它应该指定需要的必要依赖项、配置和运行时环境。
  • 使用Kubernetes进行容器编排和管理。
  • 持续集成和部署 (CI/CD) 管道可以成为自动化构建、测试和部署的方式。GitLab和Travis CI等工具可以帮助简化 CI/CD 流程。
  • 无服务器功能不需要成熟的服务器,因此它们非常适合微服务。AWS Lambda、Google Cloud Functions 或 Azure Functions等平台无需预置或管理服务器即可运行代码。
  • API 网关为微服务提供单一入口点。Kongtal vezAmazon API Gateway等工具可以帮助管理和保护 API。此外,它们还可以处理身份验证、速率限制和请求路由等任务。

这时候,拥有一个彼此独立的 WordPress 网站和微服务。最后一步是将它们集成。

4. 将微服务与 WordPress 集成

开发并部署微服务后,需要将它们与 WordPress 集成。为此,需要从 WordPress 向微服务公开的端点进行 API 调用。需要彻底了解 REST API。

在 WordPress 中执行此操作的典型方法是使用wp_remote_get()tal vezwp_remote_post()。这可以让你发送 HTTP 请求并处理响应。以下是一些示例代码,说明它们如何组合在一起:

// API endpoint URL

$api_url = 'https://api.example.com/endpoint';

// API request parameters

$params = array(
    'param1' => 'value1',
    'param2' => 'value2',
);


// Make the API request using wp_remote_get
$response = wp_remote_get(add_query_arg($params, $api_url));

// Check if the request was successful
if (is_wp_error($response)) {
    // Handle the error
    $error_message = $response->get_error_message();

    // Log or display the error message
} else {
    // Process the API response
    $response_body = wp_remote_retrieve_body($response);

    $data = json_decode($response_body, true);

    // Use the retrieved data as needed

    // ...
}

微服务通常受益于异步数据获取以避免阻塞主线程。 WordPress 可以结合两个元素来做到这一点。可以使用API Fetch 包async以及deferWordPress 6.3 中引入的支持。

import apiFetch from '@wordpress/api-fetch';

// Microservice API endpoint URL
const microserviceUrl = 'https://api.example.com/microservice';
...


// Make the API request to the microservice
apiFetch({
  path: microserviceUrl,
  method: 'GET',
  data: params,
})

  .then((response) => {
    // Process the response
    console.log(response);

    // Use the retrieved data from the microservice

    // ...
  })
...

还可以考虑使用 AJAX来执行动态用户界面 (UI) 更新。适当的身份验证和安全措施也至关重要。 WordPress REST API 包括几种对会话进行身份验证的方法,例如使用 cookie、JSON Web 令牌 (JWT) 或应用程序密码。鉴于对外部解决方案的依赖,保持微服务和站点的安全至关重要。

鉴于我们使用的是自定义 Block 主题,该过程由三个部分组成:注册 Blocky渲染内容和处理数据。JavaScript将是您选择的语言,该registerBlockType函数将处理注册和渲染::

// JavaScript function that builds the Block to enable access within the Block Editor.
( function( blocks, element ) {
    var el = element.createElement;

    blocks.registerBlockType( 'my-micro/stripe-api', {
        title: 'Stripe Payment Gateway',
        icon: 'dashicons-cart',
        category: 'embed',

        edit: function() {
            return el(
                'div',
                {},
                '' // Create the visual elements of the microservice to display within the Block Editor.
            );
        },
…

resúmenes

WordPress 是单体式的,但这并不妨碍它采用微服务。这样做有很多好处,比如提高可扩展性、灵活性和开发速度。创建块主题插件可以让你为项目的其他部分创建一个简洁、安全的代码库。微服务会给网站带来复杂性。使用自定义块主题意味着可以根据需要以最佳方式实现这些服务。


Contacte con nosotros
¿No puede leer el artículo? ¡Póngase en contacto con nosotros para obtener una respuesta gratuita! Ayuda gratuita para sitios personales y de pequeñas empresas
Tel: 020-2206-9892
QQ咨询:1025174874
(iii) Correo electrónico: info@361sale.com
Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres
© Declaración de reproducción
Este artículo fue escrito por Harry
EL FIN
Si le gusta, apóyela.
felicitaciones0 compartir (alegrías, beneficios, privilegios, etc.) con los demás
comentarios compra de sofás

Por favor, inicie sesión para enviar un comentario

    Sin comentarios