Este artículo es el segundo de la serie de celebración del segundo aniversario de CloudWeGo.
Esta sesión para compartir primero le brindará una breve descripción general de la construcción de usabilidad de CloudWeGo, luego presentaremos lo que hemos hecho para la construcción de usabilidad y, finalmente, esperamos con ansias el trabajo futuro.
01
fondo
CloudWeGo es un conjunto de middleware de código abierto del equipo de marco de servicios de infraestructura de ByteDance que puede construir rápidamente una arquitectura de microservicio nativa de la nube a nivel empresarial. Los proyectos bajo CloudWeGo tienen tres características principales: alto rendimiento , alta escalabilidad y alta confiabilidad . Además, después del código abierto, también prestamos más atención a la construcción de facilidad de uso . Nos damos cuenta de que la facilidad de uso puede atraer a muchos usuarios a la comunidad. y, por lo tanto, forma una atmósfera comunitaria activa y promueve el desarrollo sostenible de la comunidad. Su facilidad de uso puede ayudar a los usuarios a completar rápidamente el desarrollo de la lógica empresarial y mejorar la eficiencia.
En cuanto a la facilidad de uso, hemos trabajado mucho en la experiencia de I + D, la experiencia del usuario y la promoción de la comunidad. Permítanme presentarlos uno por uno a continuación. Además, este intercambio se centrará principalmente en Hertz y la construcción de usabilidad en torno a cwgo.
02
Facilidad de uso Construcción de funciones
Como marco HTTP de nivel empresarial, la facilidad de uso de Hertz siempre ha sido un aspecto al que le damos gran importancia porque puede mejorar en gran medida la experiencia de investigación y desarrollo. Por lo tanto, desde el código abierto, siempre hemos otorgado gran importancia a las diversas sugerencias hechas por los usuarios con respecto a la facilidad de uso, y las hemos resumido: El primer problema es que nuestro uso de algunas funciones es algo diferente de los marcos comunes, lo que resulta en migración. Es posible que los usuarios no estén acostumbrados; el segundo problema es que el marco tiene muchas herramientas de andamiaje. Por ejemplo, CloudWeGo tiene dos andamios, Hertz y Kitex, lo que sin duda aumenta el costo de aprendizaje del usuario. A partir de los problemas y los comentarios de los usuarios del grupo de usuarios, podemos ver que nuestros documentos actuales tienen problemas como descripciones poco claras y contenido faltante, lo que a menudo lleva a que los usuarios encuentren problemas que a menudo no se pueden resolver rápidamente.
En respuesta a los problemas anteriores, hemos desarrollado una variedad de capacidades para satisfacer rápidamente las necesidades de los usuarios.
-
Compatibilidad con múltiples protocolos : Lo primero que debe introducirse es que Hertz puede admitir la conmutación perfecta de múltiples protocolos. Actualmente, algunos marcos de código abierto ya admiten el protocolo h2/h3, por lo que se basan en las capacidades de expansión de la capa de protocolo de Hertz. , hemos completado la implementación de http2/http3 y lo colocamos en hertz-contrib. Su uso es muy sencillo, sólo es necesario registrar el protocolo correspondiente en el motor Hertz. El soporte para el protocolo http3 también es similar, pero debemos especificar la capa de transporte como la capa de transporte del protocolo quic extendido por Hertz. Las demás operaciones son las mismas que para http2.
-
Secuestro del Escritor de Respuestas : A continuación, permítanme presentarles la capacidad de secuestro del Escritor de Respuestas. Antes de presentar el secuestro de Writer, hablemos sobre el proceso de lectura y escritura de mensajes de Hertz (la parte numérica en la figura primero leerá y analizará los datos en la conexión y luego realizará la coincidencia de rutas, el procesamiento de lógica de negocios y creará una respuesta). datos según el contenido de la solicitud Espere y, una vez completadas estas tareas, el marco envía los datos al par. Esto puede simplificar completamente las operaciones del usuario, pero hay problemas en algunos escenarios. En primer lugar, los usuarios no pueden controlar el tiempo del flujo real al par. Por lo tanto, en algunos escenarios donde los datos se generan de forma incremental y los requisitos en tiempo real son altos, los usuarios tienen que hacerlo. muchas restricciones.
Por lo tanto, desarrollamos la capacidad de secuestro del escritor de respuestas. Basándonos en el proceso de escritura de respuestas original, ayudamos a los usuarios a secuestrar el escritor de respuestas en el controlador empresarial/middleware y enviar los datos de respuesta al par con anticipación para lograr solicitudes de escritura más flexibles. Forma. Hemos implementado capacidades como handler flush, SSE y streaming Gzip basadas en las capacidades de Response Writer, y esperamos sus contribuciones para obtener más capacidades.
-
Reconstrucción de vinculación de parámetros: después de presentar el secuestro de Writer, le presentaremos una característica importante: la vinculación de parámetros. Antes de la reconstrucción, la vinculación de parámetros de Hertz dependía de implementaciones de terceros, lo que causaba los siguientes problemas:
Para resolver estos problemas, reconstruimos la capacidad de vinculación de parámetros y colocamos su implementación dentro de Hertz como una implementación importante de nuestra capa de aplicación. Después de la reconstrucción, admite las mismas reglas de vinculación y métodos de uso que antes, y tendrá un mejor rendimiento. completamente mejor que antes. Además, también admite carpetas y validadores personalizados para facilitar a los usuarios el uso de su sintaxis familiar. Además, consolidamos todas las configuraciones en una estructura y la inyectamos en el motor de Hertz en forma de withOption.
-
Al depender de la implementación de terceros, los usuarios deben apelar a los desarrolladores para satisfacer sus necesidades.
-
Se proporcionan menos interfaces y los estudiantes que migran aumentarán sus costos de aprendizaje.
-
El rendimiento es deficiente. La implementación anterior está adaptada al modelo de almacenamiento de la biblioteca http estándar. Requiere una conversión más y el rendimiento es deficiente.
-
Las tres anteriores son las características más importantes de Hertz en términos de facilidad de uso.
03
Construcción ecológica
A continuación, les presentaré la construcción ecológica relacionada con Hertz.
En la actualidad, proporcionamos algunas capacidades comunes a todos en forma de middleware, para que los desarrolladores puedan centrarse mejor en la lógica empresarial y solo necesiten llamar al middleware para utilizar estas capacidades comunes. Hasta ahora, hemos proporcionado más de 20 extensiones de middleware que incluyen autenticación/autorización, seguridad, rendimiento, capacidades generales de HTTP, capacidades de expansión de observación de gobernanza, etc., que básicamente pueden satisfacer la mayoría de las necesidades comerciales.
Por supuesto, continuaremos invirtiendo en la construcción de estos ecosistemas de middleware y todos son bienvenidos a participar en el desarrollo de nuestra comunidad.
04
Optimización de andamios
Permítanme presentarles la optimización de las herramientas de andamio a continuación.
Hz
Cuando era de código abierto, la herramienta de andamio hz de Hertz ya proporcionaba la capacidad de generar servidores basados en IDL, es decir, hemos admitido las partes 3, 4 y 5 en la figura. Actualmente, el registro de enrutamiento y los códigos de controlador se pueden generar automáticamente en función. en la definición de interfaz de IDL y otras funciones; pero como marco de comunicación, también necesitamos completar el trabajo de generación del lado del cliente, que es el proceso de 1, 2 y 6 en la figura, por lo que hz admite la capacidad de Generar código de cliente después de ser de código abierto.
El objetivo principal de la generación de clientes es bloquear una serie de operaciones fijas, como inicializar el cliente de Hertz y enviar solicitudes, brindar a los usuarios la capacidad de enviar solicitudes HTTP con un solo clic y comunicarse directamente con el servidor generado por hz.
CWGO
A continuación presentaré otra herramienta, cwgo. cwgo es una herramienta unificada que lanzamos para el marco CloudWeGo Golang.
Como puede ver en la imagen a continuación, CloudWeGo tiene múltiples herramientas de generación de código en Golang. Aunque Kitex y Hertz han proporcionado una capa de encapsulación, su uso sigue siendo ligeramente diferente, lo que genera altos costos de aprendizaje para los usuarios. Este problema es exactamente uno de los problemas que cwgo quiere resolver.
Además, el proyecto Go en la comunidad CloudWeGo actualmente enfrenta los siguientes problemas:
-
Las capacidades de gestión de API son relativamente débiles. El propio IDL se puede utilizar como herramienta de descripción/definición de interfaz durante todo el proceso de iteración del desarrollo empresarial. Sin embargo, CloudWeGo en realidad no tiene un plan práctico claro para el mundo exterior. Básicamente, el lado comercial debe centrarse en la gestión relacionada con IDL.
-
Cada componente es relativamente independiente y no puede funcionar a la perfección cuando se usan juntos.
-
Falta de generación y configuración de código común para pruebas unitarias, bases de datos, etc.
A medida que la cantidad de componentes de código abierto de CloudWeGo continúe aumentando en el futuro, la experiencia del usuario fragmentada continuará fragmentándose. Por lo tanto, lanzamos la herramienta todo en uno CloudWeGo, cwgo, con el objetivo de resolver los problemas anteriores desde una perspectiva global. Proporcione un formulario de gestión y generación de microservicios más simple y fácil de usar.
Presentemos varias características de cwgo.
-
cwgo integra las capacidades del andamio hz/kitex, abstrae y simplifica sus comandos y los muestra de manera uniforme en la herramienta cwgo. También abrirá las estructuras generadas, anotaciones, validadores y otras funciones, ya sea que los usuarios usen RPC o HTTP. Proporcionar a los usuarios una experiencia de generación de código unificada
-
Línea de comando interactiva, esta capacidad está destinada a usuarios de nivel básico. Genera código de destino para los usuarios de forma interactiva, lo que reduce en gran medida los costos de aprendizaje. Los usuarios pueden completar la generación de microservicios con solo unos pocos clics.
-
Generaremos plantillas mvc que satisfagan mejor las necesidades de las empresas, como se muestra en la imagen de la derecha, para ayudar en el rápido desarrollo e implementación del negocio y facilitar futuras iteraciones y mantenimiento. Además, cwgo admite plantillas personalizadas, alojamiento de plantillas y; otras capacidades, lo que facilita la administración completa de plantillas y el reemplazo rápido.
-
Proporcionamos un nuevo formulario de implementación de microservicios en cwgo, actualmente denominado plan hexadecimal, que es la abreviatura de Hertz y Kitex. El objetivo del plan Hex es permitir que los microservicios monitoreen simultáneamente las solicitudes HTTP/RPC en el mismo puerto, lograr una distribución de solicitudes sin gastos generales basada en el rastreo de protocolos y distribuir solicitudes a Hertz y Kitex para su procesamiento. Esto puede resolver los numerosos compromisos en la eficiencia, la complejidad y el rendimiento de la investigación y el desarrollo cuando las empresas necesitan proporcionar interfaces API HTTP para servicios rpc. Actualmente, esta capacidad se ha lanzado oficialmente en cwgo y todos pueden experimentarla bajo demanda.
05
Optimización de la experiencia del usuario
Optimización de documentos : desde el código abierto, los proyectos de CloudWeGo siempre han prestado atención a los problemas de los documentos, pero cada vez que hay un problema, se soluciona en alguna parte y el problema no se puede resolver de manera integral.
Por lo tanto, participamos en el proyecto CCF GLCC y lanzamos un proyecto especial de optimización de documentos. En este proyecto especial, realizamos principalmente el siguiente trabajo:
-
Vuelva a experimentar el documento de manera integral, incluido el código, las imágenes, el contenido, etc., y registre los problemas relacionados.
-
Con base en los problemas relacionados registrados, contamos con personal dedicado a optimizar los documentos, resolviendo algunos problemas como lógica confusa y descripciones poco claras, y enfocándonos en optimizar documentos de uso común, como tutoriales para recién llegados y capacidades principales de Hertz. Según los comentarios, la documentación optimizada ya puede resolver básicamente todos los problemas habituales.
-
Además, también hemos realizado ajustes unificados en el formato del documento y la estructura del directorio para brindar una mejor experiencia visual.
Actualmente, este proyecto de optimización se está llevando a cabo en otros proyectos de CloudWeGo. Invitamos a todos a que nos brinden comentarios sobre problemas de documentos.
Biblioteca de códigos de muestra : en segundo lugar, proporcionamos una rica biblioteca de códigos de muestra.
Actualmente, proporcionamos bibliotecas de códigos hertz-example y kitex-example, que contienen ejemplos de uso ejecutables de todas las funciones comúnmente utilizadas y se actualizan y mantienen periódicamente.
Además, para permitir que las empresas utilicen el proyecto CloudWeGo para completar el desarrollo de la lógica empresarial más rápido, proporcionamos varias demostraciones de escenarios reales. Actualmente, se proporcionan las siguientes demostraciones. Los siguientes códigos comerciales se desarrollan utilizando Hertz y Kitex. Sobre esta base, puede ampliar su lógica empresarial para completar el rápido lanzamiento del negocio.
-
Bookinfo : Reimplementar IstioBookinfo usando Hertz+Kitex
-
Easy Note : implemente un servicio de notas utilizando los microservicios de Hertz+Kitex
-
Librería : utilice Hertz+Kitex para implementar un ejemplo de comercio electrónico
-
Plataforma de pago abierta : utilice Hertz+Kitex para implementar una plataforma de pago abierta que admita múltiples comerciantes
Actividades CSG : También realizamos actividades CSG con regularidad. Las actividades CSG están diseñadas para ayudar a los desarrolladores a comprender el código fuente y el mejor uso del marco.
Hasta ahora, los eventos CSG se han realizado 5 veces. Han introducido muchos códigos fuente y mejores prácticas del marco Hertz/kitex/volo para ayudar a los desarrolladores a comprender y utilizar mejor el marco. Puede ver presentaciones de problemas y repeticiones de actividades anteriores en los problemas del almacén comunitario/de cloudwego.
06
panorama
En el futuro, continuaremos invirtiendo y mejorando la facilidad de uso de Cloudwego para brindar a los usuarios una mejor experiencia de I+D.
-
Proceso universal de I + D: proporcione a los usuarios un conjunto de procesos de I + D a nivel empresarial que se puedan utilizar directamente y colabore con varios marcos para completar todo el proceso de desarrollo empresarial eficiente.
-
Gestión integral de API: unifique el método de administración de API del proyecto CloudWeGo y complete todo el proceso de descripción, desarrollo y prueba en una sola parada.
-
Gestión distribuida de IDL: los productos IDL& y los códigos comerciales se gestionan por separado para reducir los costos de mantenimiento.
-
-
CWGO x LLM: proporcione capacidades de asistencia más inteligentes basadas en LLM
-
Generación de código inteligente: agregue una descripción comercial en IDL y combine LLM para completar la lógica del código comercial al generar código
-
Automatización de documentos: redacción automática de documentos, optimización, traducción, corrección de errores, etc.
-
dirección del proyecto
GitHub: https://github.com/cloudwego
Sitio web oficial: www.cloudwego.io