Recomendación de código abierto: Tars, un marco de microservicio desarrollado en C
Tars está comprometido con la construcción de un ecosistema de tecnología de microservicios y ha realizado una investigación y un desarrollo en profundidad en términos de infraestructura subyacente, marco de servicios, aplicaciones de capa superior y DevOps.
El 10 de marzo de 2020, la Fundación Linux anunció oficialmente el establecimiento de la subfundación TARS para su proyecto de código abierto TARS. Se trata de una fundación de código abierto centrada en el campo de los microservicios. Su objetivo es ayudar a las empresas a adoptar la arquitectura de microservicios y resolver los problemas que puedan surgir en el uso de microservicios. Esta es la primera fundación internacional de código abierto que se originó a partir de un proyecto chino de código abierto y también es la única subfundación de la Fundación Linux que se centra en el ecosistema de tecnología de microservicios.
Actualmente hay 9 proyectos incluidos en la Fundación Tars, divididos en 5 partes: Conjunto de herramientas (Tars Lab), Gobernanza de servicios (Service Governance), Marco de desarrollo de microservicios (Development Framwork), Almacenamiento (DCache) e infraestructura. .
1. Tars Lab
El proyecto Tars Lab proporciona la prueba de estrés TarsJMeter, el conjunto de pruebas comparativas TarsBenchmark y algunos kits de herramientas de desarrollo. TarsJavaStart puede generar andamios TarsJava del lado del servidor y del cliente e iniciar rápidamente el desarrollo de los servicios Tars. TarsTools es un complemento de JetBrains que admite múltiples IDE y se utiliza para editar archivos Jce/Tars (admite Intellij IDEA, Android Studio, PhpStorm, WebStorm, GoLand, CLion, etc.).
2. Gobernanza del servicio
La gobernanza del servicio incluye dos proyectos: TSeer se centra en procesar el registro y el descubrimiento del servicio; TarsGateway es una puerta de enlace de microservicio desarrollada en base al marco Tars. gateway Además de las funciones básicas, también puede convertir automáticamente HTTP al protocolo Tars-RPC.
3. Marco de desarrollo de microservicios
Esta parte solo contiene un proyecto Tars. El módulo principal está desarrollado en C y proporciona un marco de desarrollo en varios idiomas. La llamada rpc predeterminada es del. Fundación Tars. Otros proyectos se desarrollan en torno a este proyecto.
4. Almacenamiento de microservicios
Esta parte solo contiene un proyecto, DCache, que es un sistema de almacenamiento de memoria compartida distribuida desarrollado en base al marco Tars y admite estructuras de datos kv de uso común. admite índices secundarios, admite expansión y contracción en línea, admite persistencia automática en la base de datos back-end y otras características. DCache depende del marco Tars para ejecutarse, pero también se beneficia de Tars, lo que hace que el costo de operación y mantenimiento de los servicios de almacenamiento sea casi nulo.
5. Infraestructura de microservicios
Este es un proyecto que integra Tars y K8S y apuesta por integrar Tars en el ecosistema K8S.
También hay un mejor proyecto a este respecto, K8S Framework, que se compromete a integrar profundamente Tars y K8S. Creo que se incluirá en la base en el futuro.
| La vida pasada y presente de Tars
El predecesor de Tars es el marco TAF interno de Tencent. Ha sido verificado durante 10 años y se ejecuta de manera estable con servidores de 1.6w y más de 100. líneas de negocio.
Según las estadísticas, Tars se ha estado ejecutando de manera estable en más de 120 empresas y 261.200 servidores.
En un entorno distribuido, todos los microservicios (incluidos los servicios DCache) se pueden administrar a través de la propia consola del marco: TarsWeb. Todo el estado del servicio se puede monitorear y realizar operaciones como el inicio y el monitoreo. detener, modificar configuraciones y ejecutar instrucciones de operación y mantenimiento.
En el caso de una implementación distribuida, la actualización y la reversión con un solo clic se pueden lograr a través de la consola web.
Tars viene con su propio centro de configuración, con configuración jerárquica. La configuración se puede modificar de manera uniforme, de modo que "una modificación tendrá efecto globalmente".
Al implementar servicios, puede completar los nodos que se publicarán en la interfaz e implementarlos y expandirlos con un solo clic.
El marco proporciona capacidades de monitoreo de estado, que pueden monitorear la calidad de las llamadas de servicio, como las condiciones del tráfico, el consumo de tiempo promedio, la tasa de tiempo de espera y la tasa de excepción.
El estado del marco se puede comprobar con un clic en la consola.
Tars proporciona herramientas de prueba de rendimiento de apoyo, que también es un subproyecto de la Fundación Tars. Las pruebas de rendimiento ya no dependen de evaluadores profesionales.
| Ventajas de Tars
1. Llamadas RPC nativas
Tars utiliza el protocolo RPC de desarrollo propio para comunicarse, estableciendo conexiones largas entre servicios y en escenarios. con comunicación frecuente Tiene importantes ventajas de rendimiento.
2. Compatibilidad con varios idiomas
Además de C y Java, Tars también admite NodeJs, PHP, Go y otros lenguajes, y proporciona los SDK correspondientes. Cuando la pila de tecnología del equipo se diversifica, se puede desarrollar de forma colaborativa en varios idiomas y conectarse sin problemas. Los desarrolladores pueden elegir el idioma con el que están familiarizados para desarrollar, lo que mejora la eficiencia general del equipo.
En este sentido, si Spring Cloud quiere admitir lenguajes heterogéneos, necesita usar SideCar para construir Service Mesh. Existen algunas soluciones de malla de servicios populares en la industria, pero no han formado un estándar unificado y su portabilidad no es alta. Los más comunes como Istio, debido a que es un modo proxy y no es una conexión larga, habrá un retraso mayor. Por otro lado, la implementación, operación y mantenimiento de Istio es muy compleja y requiere más costos de aprendizaje y costos de operación y mantenimiento.
3. Funciones integradas de gobernanza de servicios
El marco Tars está integrado con ricas funciones de gobernanza de servicios, que incluyen disyuntor, limitación de corriente, equilibrio de carga, autenticación, cifrado, etc. Al mismo tiempo, tiene soporte nativo para monitoreo de servicios, recopilación de datos, implementación en escala de grises e implementación entre salas de máquinas, con un alto grado de integración.
Para que Spring Cloud admita estas funciones, necesita integrar otros componentes o debe estar diseñado y desarrollado para implementarlos. Todos requieren costos adicionales de aprendizaje y costos de I+D.
4. Monitoreo de operación y mantenimiento
Tars proporciona a los usuarios una consola de administración de operación y mantenimiento integrada. Podemos realizar implementación, expansión, actualización y reversión con un solo clic en la Web. Espere las operaciones de operación y mantenimiento.
Spring Cloud no tiene herramientas de soporte. Para lograr la gestión y el control web, es necesario utilizar K8S y contenedores, que también requieren costos adicionales.
5. Localización
Tars es un proyecto de código abierto liderado por empresas nacionales, por lo que no hay mucho que decir al respecto.
6. Ventaja de la "suite"
El marco Tars proporciona una solución integrada relacionada con microservicios. En circunstancias normales, no es necesario integrar otros componentes y no hay problemas de compatibilidad. Esto es como la diferencia entre una MacBook y una máquina compatible. Con una máquina compatible, es posible que deba pagar más costos de prueba y error para lograr los resultados deseados.
| Desventajas
1. Popularidad del proyecto
Tars fue de código abierto relativamente tarde. Hasta ahora, solo ha sido de código abierto durante más de 5 años. No es tan popular como Spring Cloud y sus aplicaciones no son tan extensas como Spring Cloud.
2. El camino de Tars hacia la nube nativa
La integración profunda de Tars y K8 también ha sido de código abierto no hace mucho (julio de 2020, K8S Framework), y ha aún por implementar y verificar. Este proyecto ahora se actualiza con más frecuencia y no se recomienda su uso en producción. Pero desde este punto también podemos ver el entusiasmo de los trabajadores comunitarios por la integración de Tars y K8S. ¡Creo que este proyecto definitivamente brillará en el futuro!
Tars proporciona soluciones integradas en desarrollo, operación y mantenimiento, monitoreo, etc. de microservicios, que pueden ayudarnos a construir microservicios de nivel empresarial a bajo costo. Adecuado para equipos de todos los tamaños y sistemas de todos los tamaños.
Al realizar la selección de tecnología, si hay desarrolladores de C en el equipo o hay desarrollo en varios idiomas y el tamaño y los recursos del equipo son limitados, se recomienda elegir Tars. Nos ahorrará muchos costes en términos de operación y mantenimiento, monitorización, pruebas, etc.
En el futuro, a medida que madure el proyecto K8SFramework, creo que el ecosistema Tars será conocido y utilizado por más equipos.