Mejores prácticas de contenedorización de la plataforma blockchain de Zhongke Jincai

Autor: Chen Chao, director técnico del centro de I+D de Beijing Zhongke Jincai Technology Co., Ltd., domina Java/Go y otros lenguajes de desarrollo, domina Kubernetes, Docker y la arquitectura de microservicios, y comprende la tecnología de cadenas públicas sistemas como Bitcoin y Ethereum Fabric y otros sistemas de tecnología de cadenas de alianzas, competentes en soluciones digitales panfinancieras.

Hola, socios de la comunidad de código abierto de KubeSphere. Soy Chen Chao, la persona a cargo de la I + D del producto de plataforma como servicio de Beijing Zhongke Jincai Technology Co., Ltd. Blockchain Center.

Introducción comercial

Estrategia corporativa de cadena de bloques

Han pasado dos años desde que blockchain se promovió a una estrategia nacional el 24 de octubre de 2019. Después de que la cadena de bloques se incluyera en la "nueva infraestructura" en 20 años, el 21 de marzo, la cadena de bloques se incorporó al "14.º Plan quinquenal para el desarrollo económico y social nacional de la República Popular China y el plan a largo plazo de 2035". Esquema de objetivos". Se propone cultivar y fortalecer industrias digitales emergentes como blockchain.

La empresa estudia las tendencias de las políticas y combina años de experiencia en servicios de tecnología B-end, incorpora la tecnología blockchain y la construcción de aplicaciones en la estrategia de la empresa, y continúa construyendo sobre la capa inferior de la tecnología blockchain, las aplicaciones comerciales de nivel superior y la operación y el mantenimiento en general. gestión.

Posicionamiento de la plataforma blockchain

La tecnología Blockchain es la culminación de muchas tecnologías y aún se encuentra en la etapa de exploración continua en términos de valor de aplicación en la industria. Desde la perspectiva de la tecnología de la cadena subyacente, la cadena de alianzas extranjeras Fabric, la cadena pública Ethereum, etc., la cadena de alianzas de código abierto nacional fisco bcos, la cadena de chispas respaldada por el gobierno, la cadena de Changan, el mapa del árbol, etc., y algunas empresas nacionales desarrollaron de forma independiente la tecnología Blockchain, como la cadena de bloques de Qulian Company, la cadena dorada Zhongke de Zhongke Jincai, la cadena Tianhe de Tianhe Guoyun y la cadena33 de Complex Beauty, el despliegue, el mantenimiento y el acceso a aplicaciones involucrados en diferentes tecnologías subyacentes de la cadena Los métodos pueden ser diferentes, lo que resulta en un alto costo de desarrollo de aplicaciones de la industria Para reducir el costo práctico y el costo de aprendizaje de los usuarios al acceder y mantener las instalaciones de blockchain, y para adaptarse a las diferentes capas técnicas inferiores tanto como sea posible, Según la definición estándar de middleware de cadena de bloques, se requiere una plataforma de cadena de bloques como servicio (Blockchain as a Service).

introducción de fondo

Estado actual de la construcción de la plataforma BaaS

Zhongke Jincai comenzó la construcción de la plataforma BaaS en 2018, utilizando una arquitectura de aplicaciones relativamente madura y estable para el desarrollo, y agregó gradualmente un sistema de autoridad RBAC basado en múltiples inquilinos, monitoreo de red de blockchain y recursos, implementación dinámica de blockchain y gestión de nodos y otros funciones, y puesto en uso en algunos escenarios de proyectos.

Sin embargo, debido a los defectos de la arquitectura general, encontró grandes dificultades técnicas en términos de eficiencia de implementación, gestión dinámica de los recursos de implementación, monitoreo en tiempo real del estado del servicio de la red blockchain, alta disponibilidad de registros, custodia de certificados, etc., y el costo de más actualizaciones iterativas fue muy alto. Por lo tanto, es muy importante rediseñar el diseño general de BaaS, adoptar Kubernetes y adoptar la nube nativa.

Por qué BaaS adopta la nube nativa

La nube nativa se trata de velocidad y agilidad. Es beneficioso para las organizaciones crear y ejecutar aplicaciones escalables elásticamente en nuevos entornos dinámicos, como la nube pública, la nube privada y la nube híbrida. Puede crear tolerancia a fallas, fácil de administrar y aplicaciones fáciles de observar Sistemas débilmente acoplados.

Las aplicaciones que se ajustan a la arquitectura nativa de la nube deben usar pilas de tecnología de código abierto (Kubernetes+Docker) para la implementación en contenedores y usar las capacidades de administración de la infraestructura para lograr una escalabilidad elástica de los recursos, la implementación dinámica de los servicios y la optimización de la utilización de los recursos.

Las necesidades urgentes de la plataforma SinoBaaS en términos de gestión de implementación dinámica, detección de operaciones y expansión elástica de recursos de la red blockchain encajan bien con algunas características de la nube nativa, por lo que decidió integrar completamente Kubernetes durante el proceso de transformación de la nueva versión.

Instrucciones de selección

Cuando decidimos adoptar la arquitectura nativa de la nube, decidimos utilizar Kubernetes muy activo y maduro como soporte subyacente de nuestra plataforma. Sin embargo, el sistema general de Kubernetes es relativamente complicado y el costo de aprendizaje es relativamente alto, lo cual es muy antipático para los usuarios no profesionales. Después de una consideración exhaustiva, decidimos elegir una versión de lanzamiento de Kubernetes más completa. Evaluamos algunas de las plataformas más populares del mercado y finalmente elegimos KubeSphere como nuestra plataforma de gestión.

Las principales razones para elegir KubeSphere son las siguientes:

  1. El código de KubeSphere es de código abierto, lo que es muy beneficioso para nuestro desarrollo secundario en la etapa posterior;
  2. La función general de KubeSphere es relativamente completa y también integra una gran cantidad de complementos funcionales. A través de estos complementos, no solo podemos construir rápidamente un entorno estable, sino también facilitar nuestra integración posterior con la plataforma BaaS;
  3. La reputación general de KubeSphere es muy alta y la comunicación con la comunidad y el soporte oficial son relativamente activos;
  4. KubeSphere fue desarrollado por Qingyun Company en China. El diseño general está más en línea con los hábitos de uso de los chinos, lo que reduce en gran medida el costo de aprendizaje.

integración general

KubeSphere tiene un conjunto muy completo de funciones de soporte, lo que nos permite centrarnos solo en el desarrollo de componentes funcionales relacionados con blockchain. La plataforma Zhongke Jincai BaaS ha realizado las siguientes integraciones en KubeSphere:

  1. Se agrega un nuevo componente de gestión de alianzas, que incluye principalmente la creación de redes de cadenas de bloques, la descripción general de la información de cadenas de bloques, la gestión de organizaciones, canales y códigos de cadena, la consulta de detalles de transacciones, el certificado de almacenamiento de datos, la transferencia de activos y otras funciones.
  2. Confiar en el sistema de roles de usuario de KubeSphere para crear un sistema de roles de usuario como el líder de la red blockchain.
  3. La operación y el mantenimiento de los nodos en la red blockchain se supervisan a través de componentes de servicio como registros, monitoreo y auditoría proporcionados por KubeSphere.
  4. Personalice la herramienta de instalación ks-installer para realizar la construcción rápida y estandarizada de una plataforma BaaS estable.

proceso de práctica

La estructura general de la plataforma.

Zhongke Jincai ha llevado a cabo la cadena de bloques de Zhongke Jincai como un servicio para las capacidades básicas que deben tener las plataformas BaaS, como implementación flexible, gestión dinámica de escalado de recursos, operación y mantenimiento visuales, monitoreo detallado y alerta temprana, y alta confiabilidad de operación El diseño general de la plataforma SinoBaaS, el diagrama de diseño es el siguiente:

archivo

  1. Seguro y controlable: proporcione un sistema de gestión de autoridad de nivel basado en RBAC, proporcione auditoría de registros y garantice de manera integral la seguridad y confiabilidad de la plataforma y los servicios;
  2. Comience rápidamente: al proporcionar el empoderamiento de todo el proceso para la construcción de la ecología de la aplicación blockchain, ayuda a los usuarios a concentrarse en la innovación y el acceso a la capa de aplicaciones comerciales y reduce el umbral para usar blockchain;
  3. Alta disponibilidad: admite la implementación en clúster de plataformas y nodos de cadena, y puede expandir dinámicamente la capacidad bajo demanda para cumplir con los requisitos de seguridad de nivel empresarial;
  4. Operación y mantenimiento inteligentes: admita servicios de monitoreo multidimensionales en tiempo real para cadenas de alianzas, nodos, hosts, etc., proporcione formularios de visualización de gráficos enriquecidos a través del Tablero, realice la visualización de datos de monitoreo y comprenda fácilmente el estado de funcionamiento de las cadenas, nodos, hosts y otros recursos;
  5. Admite múltiples modos de implementación (host en la nube, máquina física) de formas conectables de varias capas inferiores de blockchain (Zhongke Jinlian e Hyperledger Fabric, etc.) en diferentes entornos, cumpliendo de manera flexible las opciones técnicas de la capa empresarial y reduciendo la necesidad de ambiental. atributos Dependencia, puede integrar y administrar continuamente la capa inferior de otras tecnologías de cadena en el mercado;
  6. Alta escalabilidad: admite la ampliación del rendimiento de la plataforma mediante la adición de complementos personalizados y complementos nativos de la nube de terceros, como la adición de complementos de servicio de CA, que pueden centralizar la administración de complementos.

La solución de almacenamiento adoptada por la plataforma

SinoBaaS usó el modo localhost de PersistentVolume en la práctica inicial, este método hace que el acoplamiento entre los nodos de blockchain y los nodos físicos sea muy alto, y los certificados también se almacenan en el entorno físico, lo que limita severamente la función de programación automática de Kubernetes. En el establecimiento de una red blockchain, también se requiere el cifrado del certificado, y los riesgos de seguridad de guardar el certificado localmente también son muy altos. Una vez que el disco está dañado, el certificado puede perderse. El servicio de nodo que pierde el certificado es el mismo. como la persona que perdió la identidad Las medidas de compensación posteriores son muy difíciles.

Por lo tanto, en el proceso de desarrollo, se introduce un almacenamiento distribuido independiente, y la información, como los certificados, se almacena en el ConfigMap de Kubernetes. Los datos del libro mayor, los datos de estado, los certificados, etc. generados por la operación de toda la red de la cadena de bloques se almacenan. de manera altamente confiable, lo que resuelve el problema de la dependencia de recursos en el proceso de programación de deriva de Kubernetes.

Esquema de implementación de la plataforma

Antes de que la plataforma BaaS se integre con la transformación de KubeSphere, el proceso de implementación de la red blockchain es bastante engorroso. Primero, debemos generar manualmente los certificados requeridos por la red blockchain y luego copiarlos en las máquinas del nodo, y luego generar el yaml para la organización de implementación. nodos modificando los archivos de parámetros del script antes de que puedan implementarse en cada máquina. Todo el proceso de implementación es muy poco estándar y propenso a errores. Es difícil solucionar problemas y la eficiencia general de la implementación es baja.

Cuando elegimos KubeSphere, consideramos que tiene un proceso de implementación estándar y que la herramienta ks-installer también es de código abierto, lo que nos resulta muy adecuado para optimizar los puntos débiles de la implementación. El clúster optimizado de ks-installer puede implementar una plataforma BaaS estándar sin problemas solo modificando algunos parámetros específicos de acuerdo con los diferentes entornos del proyecto.

Solución blockchain de integración de plataforma

Implementar red blockchain

Creemos que hay varios elementos a considerar al usar BaaS para implementar una red blockchain:

  1. facilidad de uso
  • El concepto de ocultar las tecnologías clave de blockchain, como el algoritmo de consenso, la red P2P, la criptografía, la gestión de transacciones, etc.
  • Ocultar los detalles técnicos, la construcción de la red de la plataforma BaaS, como las reglas de caída de bloques, la configuración de nodos de anclaje de pares, la elección de LevelDB o CouchDB para la base de datos estatal, etc.
  • La operación es bastante simple y se puede construir una red de cadena de bloques ingresando algunos datos de configuración.
  1. seguridad y estabilidad
  • Autenticación basada en RBAC.
  • Alertas de monitoreo de la plataforma.
  • Mecanismos de alta disponibilidad, como integridad de datos y conmutación de recuperación ante desastres.
  1. Implementación flexible, negocios simultáneos
  • Es posible la expansión y contracción horizontal, por ejemplo, los nodos se pueden agregar rápidamente y los servicios de la plataforma no se verán afectados cuando se cierren los nodos Node.
  • Al mismo tiempo, soporta operaciones multiusuario y multiservicio en la cadena.
  1. Apertura y gestión de la privacidad
  • Es necesario mantener la apertura a varias tecnologías de cadena de bloques y varios escenarios de aplicación, como almacenes de código de cadena para almacenar contratos inteligentes y gestión de código de cadena.
  • La información de usuario, los certificados, la información de implementación, los datos del libro mayor y la información de transacciones están aislados.

La estructura de la alianza creada es la siguiente:

Toda la alianza de blockchain utiliza Namespace como aislamiento de recursos, y la construcción general también se divide en tres capas: capa de servicio (servicio), capa de contenedor (Pod) y almacenamiento distribuido.

archivo

Gestión de red de cadena de bloques

La gestión de la cadena de bloques está directamente de cara al usuario y se presta a la operación y mantenimiento oa los usuarios ordinarios para operar, por lo que es necesario asegurar tanto la operatividad como la presentación de los datos clave.

Por supuesto, también proporcionamos códigos de cadena integrados para varios escenarios de aplicación, como certificados de capa de datos, transferencias de activos y otros escenarios comunes.Si necesita personalizar contratos inteligentes, puede cargar el código de cadena a través del almacén de código de cadena y realizar operaciones como la creación de instancias. Mejor apertura.

archivo

modelo de desarrollo de localización

En el proceso de desarrollo secundario de KubeSphere, el desarrollo de localización del front-end es relativamente fácil y solo necesita server/config.yamlreemplazar server:apiServer:url/wsUrlla dirección en . Sin embargo, el desarrollo localizado del back-end implica varios problemas: cómo garantizar que el entorno de desarrollo sea coherente con el entorno de prueba, cómo desarrollar y depurar rápidamente, y ¿qué sucede si el desarrollo involucra llamadas mutuas entre múltiples servicios en múltiples nubes? Estos problemas se han convertido en los puntos débiles del desarrollo del equipo.

Esto le permite a nuestro equipo explorar activamente métodos de desarrollo localizados. Telepresence y kt-connect pueden resolver los puntos débiles anteriores y lograr efectos similares, los cuales pueden reenviar el tráfico del clúster al área local. _Aquí usamos la imagen original oficial de kt-connect para explicar_.

archivo

Integración multiusuario

La plataforma KubeSphere proporciona gestión multiinquilino, gestión de roles y gestión de permisos más detallada para espacios y proyectos empresariales. La combinación de la plataforma BaaS de cadena de bloques también requiere la tenencia múltiple, la creación de una alianza de cadena de bloques y la creación de nodos y servicios de cadena de bloques en la alianza. BaaS está integrado sobre la base de multiinquilino de KubeSphere, que proporciona capacidades de inicio de sesión de multiinquilino, y cada inquilino crea su propio servicio de cadena de bloques; el servicio de cadena de bloques creado por BaaS cumple con los requisitos de encadenamiento del sistema comercial.

La cadena de bloques crea una alianza, que incluye una o más organizaciones, y cada organización tiene una cierta cantidad de nodos de cadena de bloques para proporcionar servicios de cadena de bloques. Cree usuarios a través de la plataforma BaaS y asocie las organizaciones correspondientes, e invite a las organizaciones relevantes a unirse a la alianza al crear una alianza.

archivo

La información básica del usuario es la siguiente: Incluyendo el nombre de usuario, la organización a la que pertenece el usuario, el buzón de correo del usuario y otra información.

archivo

En la gestión de la organización de la plataforma Baas, las organizaciones se pueden agregar y asociar con los usuarios, y luego invitarlas a la alianza creada para operaciones de canales y contratos inteligentes.

archivo

Problemas encontrados en la práctica

La plataforma SinoBaaS ha enfrentado muchos problemas y desafíos desde el comienzo de la transformación, hasta la adopción activa de la arquitectura nativa de la nube y finalmente la elección de KubeSphere como la plataforma de desarrollo de tecnología:

  • No familiarizado con K8: aprenda y explore todos los aspectos del concepto, la implementación y el uso de K8.
  • No está familiarizado con el desarrollo nativo de la nube y el proceso de depuración: no está familiarizado con el front-end y el script de instalación de KubeSphere ks-install, ejecuta ks-apiserver en modo binario desde el principio, depuración localizada del front-end, hasta la implementación en contenedores, también falta en el proceso de desarrollo Para el método de desarrollo y depuración en contenedores, se selecciona el método de proxy de telepresencia para depurar el servicio al final.
  • Desconocimiento del código y los componentes funcionales de KubeSphere: familiarícese gradualmente con la interfaz kapi a través de los documentos oficiales y la comunidad, la arquitectura de KubeSphere y la exploración continua en la expansión de CRD, y finalmente rediseñe la estructura de CRD de la parte de blockchain en la parte de CRD personalizada.
  • Integración de funciones de blockchain y KubeSphere: en términos de integración, todavía existen muchas diferencias entre los servicios de blockchain y las funciones de KubeSphere. La integración y visualización de la gestión de alianzas, los roles del proyecto y el espacio corporativo, etc., para lograr un efecto discreto, tuvo varias discusiones dentro del equipo.

Efecto

La plataforma SinoBaaS ha experimentado la transformación inicial y la actualización de KubeSphere, y ha completado la creación de alianzas de cadena de bloques, gestión de organizaciones, gestión de canales, almacén de código de cadena, gestión de código de cadena, consultas de bloques y transacciones, almacenamiento de datos y funciones de transferencia de activos. La creación y eliminación de la alianza es más conveniente, y la integración del espacio empresarial y los proyectos de KubeSphere ha llevado a cabo una gestión de autoridad de varios niveles. Los usuarios con diferentes roles pueden tener diferentes vistas de blockchain y ver diferentes nodos de blockchain e información de servicio. El efecto simple es el siguiente:

Página del navegador de cadena de bloques:

archivo

Página de descripción general de la alianza:

archivo

Página de consulta de información (las operaciones de consulta se pueden realizar por número de bloque, hash de bloque, ID de transacción, etc.):

archivo

Planificación futura y perspectiva

Una vez que se completa el desarrollo de la versión 1.0 de SinoBaaS, también estamos intensificando la planificación y la iteración de las versiones posteriores, y aquí hay algunas descripciones para referencia e intercambio.

Modelo de Desarrollo Colaborativo Local

En la actualidad, es posible interceptar todo el tráfico en la nube ks-apserver localmente, pero aún existen deficiencias frente al desarrollo colaborativo de varias personas. El siguiente paso es crear reglas de enrutamiento para redirigir el tráfico específico para que varias personas los escenarios de colaboración no se afectan entre sí.depuración local.

componentes de servicio personalizados

En la actualidad, la red blockchain aún está conectada en forma de SDK localizado, que aún es insuficiente en términos de comodidad y estandarización, y no puede auditar y controlar el acceso, por lo que es necesario desarrollar servicios API basados ​​en AK/SK en la plataforma Como la entrada para el acceso externo a la red blockchain, el servicio API se usa como un componente de servicio de KubeSphere, y se configura en ks-installer, y la implementación se inicializa junto con la plataforma, y ​​el estado del servicio puede consultarse en Componentes de servicio.

archivo

En el futuro, se pueden agregar aún más aplicaciones DApp, que pueden incluirse en el componente de servicio para una administración unificada e integrarse profundamente en varias funciones de la plataforma en el enlace de la aplicación.

Creación de una red de federación de cadena de bloques bajo la federación de clústeres

Para adaptarse mejor a las necesidades de escenarios de red complejos, la plataforma SinoBaas, como múltiples organizaciones participantes que tienen LAN independientes y se comunican entre sí en forma de líneas dedicadas, considera confiar en el modo de alojamiento de múltiples clústeres de KubeSphere para realizar cross- cluster blockchain networking and district La comunicación entre redes de la cadena de bloques realmente resuelve el impacto de la red compleja en la operación y gestión de la cadena de bloques bajo la aplicación de la cadena de alianza.

Cree una tienda de contratos basada en una tienda de aplicaciones

KubeSphere proporciona la función de tienda de aplicaciones y los usuarios pueden cargar e implementar aplicaciones en la tienda de aplicaciones o personalizar aplicaciones. Hay muchas aplicaciones basadas en contratos inteligentes en la cadena de bloques (trazabilidad, almacenamiento de certificados, gatos encriptados, colecciones digitales basadas en ERC721, etc.), y las aplicaciones basadas en contratos inteligentes están integradas en plantillas de contratos estándar y la tienda de contratos está construida. con la ayuda del mecanismo de la tienda de aplicaciones, que es conveniente para los usuarios de la plataforma SinoBaaS para elegir de forma independiente las aplicaciones de contrato para su implementación.

¡Este artículo está publicado por OpenWrite, una plataforma de publicación múltiple para blogs !

Supongo que te gusta

Origin blog.csdn.net/zpf17671624050/article/details/124887743
Recomendado
Clasificación