API Gateway para Web3: Cómo APISIX potencia Hyperchain

August 9, 2021

Case Study

Visión general

Como proveedor líder mundial de infraestructura de blockchain de consorcio a nivel empresarial y proveedor de soluciones, Hyperchain Technologies está comprometido en construir infraestructura innovadora y potenciar el desarrollo digital de la sociedad. Durante su rápido crecimiento, Hyperchain enfrentó varios problemas al establecer su plataforma de blockchain Hyperchain, como los siguientes:

  • Falta de gestión estandarizada del tráfico con el riesgo potencial de colapso del sistema
  • Control de seguridad y gestión de autenticación incompletos
  • Control de permisos inconveniente
  • Alto costo en direcciones IP de red pública
  • Nodos de blockchain inestables: un solo nodo vulnerable a ataques
  • Falta de gestión unificada de múltiples protocolos

Hyperchain probó Kong y NGINX, pero desafortunadamente, no pudieron satisfacer los escenarios de negocio de Hyperchain. Sin embargo, después de adoptar Apache APISIX, todos los problemas mencionados se resolvieron, dotando a la plataforma de blockchain Hyperchain de una vitalidad infinita.

Sobre la Plataforma de Blockchain Hyperchain

La plataforma de blockchain Hyperchain se refiere a la integración del marco de blockchain en la plataforma de computación en la nube, aprovechando las ventajas de infraestructura de servicios en la nube para la implementación y gestión. Es una plataforma de blockchain abierta que puede proporcionar a los desarrolladores un ecosistema de blockchain conveniente y de alto rendimiento, junto con servicios de soporte relacionados, y también apoyar la expansión y operación de negocios de los desarrolladores en web3.

La plataforma de blockchain Hyperchain puede construir la red de blockchain de manera rápida y flexible. Con la plataforma, las empresas pueden gestionar el negocio de blockchain de manera uniforme. Por ejemplo, a través de la plataforma, podemos firmar contratos en el entorno de desarrollo integrado y luego desplegar los contratos en la red de blockchain creada. El módulo de servicio superior puede llamar a los contratos relacionados con blockchain para continuar el proceso de negocio.

Dado que hay muchos nodos en la cadena, que van desde docenas hasta miles, se vuelve difícil monitorear y mantener la operación de la cadena sin el soporte de la plataforma. Al utilizar la plataforma de blockchain Hyperchain, los usuarios no solo pueden ahorrar costos, sino también gestionar el blockchain de manera más conveniente y mejorar la seguridad de todo el sistema.

Tomemos a Hyperchain como ejemplo para entender cómo y por qué las empresas de blockchain deberían seleccionar Apache APISIX entre muchas puertas de enlace API. A continuación, analizaremos la aplicación de APISIX tanto en la plataforma de blockchain Hyperchain como en el nodo de blockchain.

Aplicación de APISIX en la Plataforma de Blockchain Hyperchain

A continuación se muestra un diagrama de interacción de la aplicación de APISIX en la plataforma de blockchain Hyperchain. El servicio backend registra la información del servicio en etcd según sus características de negocio y luego registra el servicio en APISIX a través del módulo de registro de rutas.

APISIX funciona como la entrada unificada de los microservicios internos en el sistema. Las solicitudes externas se envían primero a APISIX; luego, visitan la capa de acceso a través de la API después de pasar la autenticación y posteriormente acceden a los servicios centrales a través de RPC (llamada a procedimiento remoto).

Diagrama de interacción de la aplicación Hyperchain

Reenvío de Rutas

A veces, se espera que las API se expongan bajo el mismo nombre de dominio. En este caso, podemos agregar algunos prefijos a la ruta de la API del mismo servicio, como /baas-core o /baas-other. Cuando el cliente solicita estas API, la puerta de enlace API necesita eliminar estos prefijos agregados y luego reenviar la solicitud al servicio backend. El plugin proxy-rewrite de APISIX puede ayudarnos a manejar estos casos de manera conveniente.

Por ejemplo: Cuando se visita: http://apisix:8080/baas-{service}/api/v1/… La solicitud puede ser reenviada a http://{service}/api/v1/… escribiendo una expresión regular: ^/baas-core/(.*)$,/$1

Edición del plugin proxy-rewrite

Gestión de Límite de Tráfico

Los usuarios pueden elegir blockchains de consorcio según sus necesidades, no solo la de Hyperchain, sino también IBM Data Fabric, Baidu XuperChain, etc. Por lo tanto, Hyperchain necesita realizar la gestión del ciclo de vida de todos los blockchains de consorcio en el sistema.

Al crear una cadena de consorcio, Hyperchain solo necesita escribir el código duro en la plataforma de blockchain y cargar los componentes de controladores enchufables en la plataforma de blockchain para su llamada y creación de la cadena de consorcio. En algunos casos de implementación privada, los componentes de controladores enchufables pueden soportar rápidamente.

Cada llamada a los componentes de controladores es un proceso que necesita ser limitado, especialmente cuando el número es grande. En consecuencia, el plugin limit-req de APISIX puede ser beneficioso para restringir la entrada y salida de tráfico de la plataforma para asegurar su estabilidad.

El plugin limit-req permite una configuración personalizada sobre la tasa y el burst.

Modelo del plugin limit-req

Control de Seguridad y Gestión de Autoridad

Para colaborar con APISIX, Hyperchain desarrolló un plugin para circunstancias de implementación privada. A menudo, la Parte A prefiere utilizar sus servicios de autenticación o sistema de cuentas de servicio. Cuando el tráfico del frontend visita el sitio web, primero pasará por el plugin Access-auth, y solo si pasa la autenticación podrá acceder al backend BFF (Backend for Frontend).

Diagrama del proceso de autenticación

Según los tres factores clave de la especificación estándar Restful (la información de autenticación, la ruta Restful y los verbos HTTP como GET, POST, PUT, DELETE, PATCH, etc.), se realiza la autenticación de cuenta-rol-autoridad. Si la autenticación es exitosa, la información del usuario se devolverá en el encabezado; si no, se devolverá un 403.

Ruta de autenticación de API

Recarga en Caliente

APISIX ofrece recarga en caliente de plugins desarrollados internamente. Ahorra tiempo durante el desarrollo y permite a los usuarios cambiar partes de su código sin reiniciar todo el plugin runner. De esta manera, los desarrolladores pueden hacer ajustes en la interfaz en el backend, que surten efecto inmediatamente, lo que es conveniente y amigable para el lanzamiento en línea.

¿Por qué no Kong?

Hyperchain había usado Kong antes, pero finalmente lo reemplazó con Apache APISIX principalmente porque:

  • Alto Costo de Implementación y Mantenimiento

    El clúster de Kong necesita cooperar con la base de datos Postgresql y requiere un administrador de base de datos específico para alta disponibilidad. La implementación del clúster de la base de datos Postgresql es relativamente difícil de implementar y aumenta el costo de la operación y mantenimiento posterior.

  • Aumenta la Complejidad del Sistema y la Tasa de Fallos

    La plataforma de blockchain Hyperchain utiliza la base de datos MySQL, lo que resulta en dos bases de datos relacionales en el sistema si se adopta Kong, lo que hace que el sistema sea más complicado. También aumenta la tasa de fallos al mejorar la compatibilidad entre dos conjuntos de bases de datos.

Aplicación de APISIX en el Nodo de Blockchain

Diagrama de blockchain Hyperchain

Ahorro de Costos en Direcciones IP de Red Pública

El usuario compra blockchains a través de la plataforma de blockchain Hyperchain. Luego, los negocios de nivel superior y los clientes desarrolladores pueden conectarse a los nodos. Los servicios pueden conectarse a uno o más nodos, y los usuarios pueden acceder a uno o más nodos, lo que genera un problema: casi todos los nodos serán visitados, lo que aumenta la presión de visita en un solo nodo.

Es relativamente fácil de manejar en algunos entornos de empleo privado. Sin embargo, se requieren demasiados nodos y direcciones IP públicas para aquellos sistemas dirigidos a usuarios de internet. El precio de cada dirección IP pública de 4 megabytes de tráfico puede alcanzar casi 200 CNY por mes. Hay miles de nodos en la plataforma Hyperchains, lo que consume un alto costo en direcciones IP públicas.

APISIX gestiona todas las solicitudes de visita y distribuye el tráfico a los nodos de blockchain correspondientes. De esta manera, Hyperchain ahorró un alto costo.

Modo de Hyperchain con APISIX

Control de Permisos Conveniente

Hay varios blockchains en la plataforma de blockchain Hyperchain, y cada cadena tiene un control de permisos RBAC complicado. Por lo tanto, se requieren diferentes tipos de certificados para ser agregados en el lado del cliente, como certificados TLS, lo que también confunde a los usuarios.

Actualmente, el plugin key-auth de APISIX puede usarse para resolver este problema de manera eficiente. Los usuarios autorizados pueden acceder directamente al blockchain sin preocuparse por la configuración de permisos, ya que APISIX unifica la cadena subyacente.

Agrupación Mejora la Estabilidad de los Nodos

Como se mencionó anteriormente, los nodos son visitados con frecuencia. Existe una alta concurrencia en la mayoría de los usuarios bancarios, ya que el TPS (Transacciones Por Segundo) puede alcanzar 40,000-50,000 veces.

Resulta que un solo nodo en el blockchain es vulnerable porque cada transacción impactará el nodo visitado.

Hyperchain implementó Apache APISIX en K8s con el Horizontal Pod Autoscaler. Dado que APISIX utiliza etcd con una buena escalabilidad dinámica, puede resolver efectivamente el problema del impacto de tráfico de un solo punto.

Soporte para Múltiples Protocolos

Los protocolos de las cadenas heterogéneas en la plataforma de blockchain Hyperchain son diversos, como el protocolo HTTP, el protocolo Websocket, el protocolo gRPC, el protocolo TCP, el protocolo UDP, etc.

APISIX soporta múltiples protocolos, adaptándose flexiblemente a las capas subyacentes de diferentes blockchains, reduciendo así los costos de desarrollo.

¿Por qué no NGINX?

Parece que Hyperchain podría utilizar NGINX para resolver sus problemas. Sin embargo, después de la prueba, Hyperchain lo descartó porque:

  • No Adecuado para Expansión Dinámica

    Hyperchain necesita agregar y eliminar nodos en la plataforma de blockchain con frecuencia, lo que solo surte efecto después de reiniciar, lo que es inconveniente para los desarrolladores. Además, los desarrolladores deben escribir código de reglas complejas para los plugins en el archivo conf de NGINX.

  • Difícil de Agrupar

    NGINX no soporta clúster, lo que es relativamente complejo y poco amigable para los usuarios.

  • No Soporta Directamente TCP y UDP

    NGINX solo puede hacer proxy del protocolo de capa 7 en lugar del protocolo de capa 4 y no puede soportar directamente los protocolos TCP y UDP. Además, el módulo no está compilado por defecto, requiriendo un procesamiento adicional.

  • Sin Panel de Control

    No hay una interfaz visualizada de NGINX, lo que dificulta a los desarrolladores y operadores gestionar tantos nodos.

Resumen

De los contenidos mencionados anteriormente, sabemos que Apache APISIX es una puerta de enlace API dinámica que puede aplicarse en el área de blockchain. Además, Apache APISIX proporciona ricas características de gestión de tráfico como Balanceo de Carga, Upstream Dinámico, Lanzamiento Canario, Circuit Breaker, Autenticación, Observabilidad, etc.

Esperamos que APISIX pueda apoyar a más empresas de blockchain para entrar en otra fase de desarrollo. Bienvenido a aprender más sobre Apache APISIX. Puede contactarnos en https://api7.ai/contact.

Tags: