简体中文
Turms es el motor de mensajería instantánea de código abierto más avanzado para entre 100.000 y 10 millones de usuarios simultáneos en el mundo. Consulte la documentación de Turms para obtener más detalles.
(Versión de los servidores de demostración: ghcr.io/turms-im/turms-admin:latest
, ghcr.io/turms-im/turms-gateway:latest
, ghcr.io/turms-im/turms-service:latest
)
administrador-turms: http://playground.turms.im:6510
Tanto la cuenta como la contraseña son: guest
. (La cuenta puede consultar y agregar datos, pero no puede actualizar ni eliminar datos).
turms-gateway: http://playground.turms.im:10510 (puerto para acceso WebSocket) y http://playground.turms.im:11510 (puerto para acceso TCP)
turms-service (API de administración en entorno de desarrollo compatible con datos falsos): http://playground.turms.im:8510
Prometeo: http://playground.turms.im:9090; Grafana: http://playground.turms.im:3000
Puede utilizar cualquier implementación de turms-client-(java/js/swift) para enviar solicitudes a turms-gateway e interactuar con otros usuarios.
Además, Playground se configura automáticamente con un solo comando: ENV=dev,demo docker compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d
Ejecute los siguientes comandos para configurar un clúster mínimo viable (incluidos turms-gateway, turms-service y turms-admin) y sus servidores dependientes (clúster fragmentado de MongoDB y Redis) automáticamente:
git clone --depth 1 https://github.com/turms-im/turms.git
cd turms
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
docker compose -f docker-compose.standalone.yml up --force-recreate
Una vez configurado el clúster, puede visitar turms-admin en http://localhost:6510 e ingresar la cuenta y la contraseña ( turms
de forma predeterminada). Si inicia sesión correctamente, significa que el grupo de Turms se ha configurado correctamente.
También puede aplicar los módulos Terraform proporcionados por Turms para comprar rápidamente servicios en la nube y configurar un clúster de Turms (utiliza instancias puntuales de forma predeterminada). Después de ejecutar terraform apply
, espere entre 3 y 15 minutos (Alibaba Cloud ECS tarda en extraer imágenes de ghcr) y luego visite http://<public IP>:6510
. Si puede acceder a turms-admin, significa que el El clúster de Turms se ha configurado correctamente.
(Nota: los siguientes comandos comprarán automáticamente servicios en la nube y deducirán las tarifas correspondientes de su cuenta)
git clone --depth 1 https://github.com/turms-im/turms.git
cd turms/terraform/alicloud/playground
export ALICLOUD_ACCESS_KEY= < your_access_key >
export ALICLOUD_SECRET_KEY= < your_secret_key >
terraform init
terraform apply
La arquitectura de Turms depende del diseño de lectura en abanico para crear bandejas de entrada (o cronogramas de mensajes), y Turms admite el modelo push, el modelo pull y el modelo push-pull para estar al tanto de los cambios de los datos comerciales (para obtener más detalles, Business Data Change Awareness ). La mayoría de los demás detalles de diseño también provienen de proyectos comerciales de mensajería instantánea.
Y en comparación con muchos proyectos con pilas de tecnología obsoletas, Turms es también la única solución de mensajería instantánea de código abierto que se basa en una arquitectura y tecnología modernas y es adecuada para aplicaciones de mediana y gran escala.
Además, el diseño arquitectónico es un arte de compensación. Algunos productos de mensajería instantánea adoptan funciones avanzadas como eslogan a costa de no admitir aplicaciones de mediana y gran escala (solo son adecuados para comunicaciones en equipo). Sin embargo, Turms toma el rendimiento extremo como primera prioridad y admite funciones de mensajería instantánea completas (en lugar de ricas) para admitir aplicaciones de mediana y gran escala. Consulte Diseño y observabilidad del esquema de Turms para obtener más detalles.
Cuando necesite comparar Turms con otros proyectos de mensajería instantánea de código abierto en cuanto a funciones, primero puede comparar Turms con otros proyectos de mensajería instantánea de código abierto en función de las siguientes características de Turms. Por lo general, puedes encontrar las diferencias entre proyectos de mensajería instantánea profesionales y proyectos de mensajería instantánea amateur. Además, en el capítulo Product Comparison
, también mencionamos las deficiencias del proyecto Turms para su referencia.
Nota: La principal desventaja del proyecto Turms actual es que no proporciona soporte para sala de estar/chat. La implementación técnica de la sala de estar/chat no es difícil, pero los requisitos del producto, los requisitos de atributos de calidad y las condiciones restrictivas son bastante diferentes de los escenarios de las aplicaciones sociales generales, por lo que la primera versión de Turms no brinda soporte para ello. Además, Turms tampoco es adecuado para escenarios de comunicación empresarial a pequeña escala. Usar Turms para escenarios de comunicación empresarial es usar un mazo para romper una nuez, porque la comunicación empresarial enfatiza el rendimiento rico en funciones en lugar del rendimiento extremo, lo cual es inconsistente con los objetivos de Turms, por lo que sus diseños también son diferentes. Si desea admitir escenarios de comunicación empresarial, debe desarrollar usted mismo en base a Turms.
Sistema observable (consulte Observabilidad para obtener más detalles)
Registro (para eventos): Turms proporciona tres tipos de registros: registro de monitoreo, registro comercial y registro de estadísticas.
Métricas (para datos agregables). Refleja el estado en tiempo real del sistema y los datos comerciales.
Rastreo
Tenga en cuenta que el servidor Turms proporcionará más funciones de monitoreo que se pueden implementar de manera tan eficiente como sea posible, pero no proporcionará algunas funciones comunes que tienen un gran impacto en el rendimiento y que son más adecuadas para que las proporcionen servicios de terceros (como DAU). . Para este tipo de funciones extendidas, puede implementarlas mediante análisis fuera de línea o en tiempo real de los registros o métricas de los servidores Turms.
Rendimiento extremo Siempre intentamos lograr un rendimiento extremo en la implementación de todos los flujos de trabajo comerciales. Consulte el código fuente para obtener más detalles.
Nombre | Resumen |
---|---|
puerta de enlace de turnos | Una puerta de enlace (servidor push) que interactúa con los clientes y es responsable de la autenticación de usuarios, la gestión de sesiones, las notificaciones push y el equilibrio de carga para los servidores de servicios turms. |
servicio de turnos | Implementa la lógica empresarial de mensajería instantánea y proporciona a los administradores gestión de datos empresariales, RBAC y gestión de clústeres. |
administrador-turms | Proporciona funciones como gestión de datos empresariales y gestión de clústeres para el clúster de servidores Turms. |
turms-cliente-js | Expone las API para interactuar con el servidor Turms para implementar funciones de mensajería instantánea, la lógica del controlador subyacente (como el latido del corazón) y compartir la conexión WebSocket entre pestañas. No es necesario conocer sus implementaciones porque es transparente para los desarrolladores. |
se convierte en cliente-kotlin | Expone las API para interactuar con el servidor Turms para implementar funciones de mensajería instantánea y la lógica del controlador subyacente (como los latidos). No es necesario conocer sus implementaciones porque es transparente para los desarrolladores. |
se vuelve-cliente-rápido | ídem |
convierte-cliente-dardo | ídem |
complemento-turms | Cuando se activan eventos (como que el usuario se conecte o desconecte, reciba y reenvíe mensajes, etc.), turms-gateway y turms-service activarán los complementos personalizados correspondientes para facilitar a los desarrolladores la implementación de funciones personalizadas. |
complemento-antispam-turms | Un complemento basado en turms-plugin para la protección antispam utilizando el autómata Aho-Corasick con doble matriz (la complejidad temporal de la detección es O(n), y n es la longitud de los puntos de código de la cadena de destino) |
complemento-minio-turms | Un complemento basado en turms-plugin para el servicio de almacenamiento y se utiliza para interactuar con el servidor MinIO. |
complemento-rasa-turms | Un complemento basado en turms-plugin para el chatbot y se utiliza para interactuar con el servidor Rasa. |
datos-turms (TODO) | Aún no publicado. Un sistema de análisis de datos independiente basado en el ecosistema Flink es responsable del análisis de datos comerciales y proporciona soporte de datos subyacentes para las API de estadísticas de turms para administradores y los informes operativos de turms-admin. |
El diseño arquitectónico de Turms se deriva de arquitecturas comerciales de mensajería instantánea. La siguiente figura muestra la arquitectura de referencia de Turms. Los servicios enmarcados por líneas discontinuas son servicios opcionales, mientras que los servicios enmarcados por líneas continuas son servicios obligatorios. Consulte Diseño de arquitectura de Turms para obtener más detalles.
Aunque existen muchos proyectos de mensajería instantánea de código abierto en el mundo, solo existe un proyecto de mensajería instantánea de código abierto diseñado para escenarios de aplicaciones de mensajería instantánea medianos y grandes: Turms.
Cohete.Chat | Nube de mensajería instantánea de código cerrado | turnos | |
---|---|---|---|
Escenarios de aplicación | Comunicaciones del equipo | Escenarios generales de mensajería instantánea | Escenarios generales de IM de mediana a gran escala (Haciendo posible la reurbanización de Turms) (Nota: la primera versión de Turms no proporciona soporte para salas de estar/chat) |
Ventajas | 1. Proporcione servicios en la nube con solo hacer clic con el mouse para iniciar el clúster y brindar servicios. 2. La implementación del cliente es multiplataforma y está lista para usar para los usuarios. 3. Admite un conjunto de UI completo y unificado 4. Admite funciones avanzadas de mensajería instantánea, como conferencias de audio y video, uso compartido de archivos y uso compartido de pantalla. 5. Proporcionar soporte técnico a los usuarios comerciales. | 1. Proporcione servicios en la nube con solo hacer clic con el mouse para iniciar el clúster y brindar servicios. 2. La implementación del cliente es multiplataforma y está lista para usar para los usuarios. 3. Admite un conjunto de UI completo y unificado 4. Admite funciones avanzadas de mensajería instantánea, como conferencias de audio y video, uso compartido de archivos y uso compartido de pantalla. 5. Proporcionar soporte técnico a los usuarios comerciales. | Las ventajas son las características descritas anteriormente. |
Desventajas | 1. Sólo apto para aplicaciones a pequeña escala. 2. Escenarios de aplicación limitados y difíciles de personalizar | 1. Es de código cerrado y no se puede personalizar. Cualquier proyecto inevitablemente tendrá nuevos requisitos comerciales después del crecimiento empresarial, que deben personalizarse. Sin embargo, las nubes de mensajería instantánea no brindan servicios personalizados o requieren altas tarifas de personalización, y pueden malinterpretar sus requisitos, lo que resulta en funciones personalizadas que no pueden satisfacer bien las necesidades de su negocio. Se necesitará una cooperación a largo plazo para que funcione bien con ellos. Pero basándose en Turms, sus requisitos se pueden implementar y proporcionar rápidamente y el costo es bajo. Nota: Para obtener detalles sobre la complejidad de la mensajería instantánea, puede consultar Diseño de esquemas 2. Privacidad de datos. Toda su información de usuario y datos de mensajes se almacenan en nubes de mensajería instantánea, que pueden espiar y utilizar sus datos. Especialmente para algunas pequeñas empresas de mensajería instantánea, la seguridad de los datos no está garantizada en absoluto e incluso es necesario asumir el riesgo de una pérdida irrecuperable de datos. 3. Cuanto más utilice las nubes de mensajería instantánea, cuanto más dependa de ellas, más cara será. La mayoría de las nubes de mensajería instantánea ofrecen una determinada cuota gratuita o un período de prueba, pero una vez que crece la escala de usuarios de su producto, debe pagar una tarifa de uso elevada o abandonar el uso para comenzar a desarrollar su propio servidor de mensajería instantánea. 4. El soporte técnico no llega a tiempo. Las nubes de mensajería instantánea deben brindar soporte técnico a muchos clientes al mismo tiempo y el soporte para su producto puede quedarse atrás. | 1. Solo satisface las necesidades generales de mensajería instantánea y no proporciona algunas funciones avanzadas (por ejemplo, no admite conferencias de audio y video) 2. La primera versión de Turms no admite salas de estar/chat. 3. El servidor Turms solo proporciona datos sin procesar de métricas/registros y no proporciona funciones como análisis y alarmas. 4. La administración del sistema basada en web turms-admin no proporciona funciones operativas avanzadas actualmente.5. No hay soporte para lógica de negocios y UI específicos 6. Los servidores son reactivos, lo que supone un desafío para algunos desarrolladores. |
Comentario | Se recomienda encarecidamente utilizar Rocket.Chat para comunicaciones en equipo. | Si los escenarios comerciales de mensajería instantánea en su producto son muy comunes, no existen requisitos personalizados y el negocio de mensajería instantánea no es el negocio principal de su producto, se recomienda utilizar nubes de mensajería instantánea. Pero si no hay requisitos especiales, intente no utilizar la nube de mensajería instantánea proporcionada por pequeñas empresas, de lo contrario no se garantizará la seguridad de sus datos. | Aunque ambos son proyectos de mensajería instantánea de código abierto, tienen escenarios de aplicación completamente diferentes. Turms es un motor de mensajería instantánea general para aplicaciones de mensajería instantánea de mediana y gran escala. No puede simplemente entregar Turms a sus clientes (al igual que la mayoría de los productos no permiten a los clientes escribir declaraciones SQL para consultar datos comerciales en la base de datos). Sin embargo, basándose en Turms, puede implementar todos los proyectos de mensajería instantánea de código abierto en GitHub de manera más eficiente, integral y extensa. |
Teniendo en cuenta el posicionamiento de Turms, no planeamos ofrecer una demostración para el cliente con la interfaz de usuario y la lógica empresarial específica en un futuro próximo porque.
Es fácil para los desarrolladores verificar las funciones comerciales compatibles con Turms. Si solo desea probar las funciones comerciales de Turms, puede ejecutar el servidor Turms sin siquiera escribir una línea de código. Solo diez líneas de código pueden realizar el inicio de sesión, enviar mensajes, enviar solicitudes de amigos y otras funciones comerciales, o modificar propiedades para personalizar diversos requisitos.
El diseño y la implementación de la demostración están estrechamente relacionados con los escenarios comerciales específicos, el lenguaje de programación específico, la arquitectura técnica específica y el sistema operativo específico, mientras que Turms se ha comprometido a cumplir de manera eficiente varios escenarios de mensajería instantánea complejos y desafiantes, y no queremos publicar una demostración que limita la imaginación de los desarrolladores. Y desarrollar y mantener una demostración también requiere mucho tiempo y ralentizará el progreso del desarrollo de Turms.
Actualmente, solo necesita "chatear" con GPT-3.5 y GPT-4 para implementar soluciones técnicas personalizadas y diseño de interfaz de usuario. Tome el texto como ejemplo de entrada (además, GPT-4 admite la entrada de imágenes y también puede dibujar estructuras alámbricas de la interfaz de usuario para sugerir cómo desea diseñar la interfaz de usuario).
Implemente una ventana de chat de servicio al cliente que se ejecute en el extremo web según Vue3, Vite, Eslint y otras tecnologías. Requisitos específicos.
- El estilo de diseño de la interfaz de usuario debe consultar: Ant Design
- La ventana de chat debe dividirse en tres partes: en la parte superior debe mostrarse el nombre del servicio de atención al cliente; en el medio se debe mostrar el mensaje de chat entre el usuario y el servicio de atención al cliente; y en la parte inferior, se debe proporcionar un cuadro de entrada de texto y un botón de enviar para permitir al usuario ingresar texto y enviar mensajes.
- La ventana de chat siempre debe aparecer en la esquina superior derecha de la página.
- Debe asumir que la ventana de chat se basa en el protocolo WebSocket para comunicarse con el servidor backend para iniciar sesión, enviar mensajes, recibir mensajes, etc.
- Debe proporcionar la estructura del proyecto y toda la implementación del código específico en el proyecto en función de la solución de diseño en componentes de la interfaz de usuario.
GPT puede proporcionar la implementación del código correspondiente de inmediato y usted puede seguir "conversando" con él sobre la base de varios escenarios (puede dejar que GPT proporcione y compare múltiples escenarios) para refinar su diseño de interfaz de usuario y la implementación del código para cerrar la implementación final. a tu idea.
El proyecto Turms tiene la licencia Apache License 2.0
, por lo que no nos importa si los usuarios planean obtener ganancias del proyecto Turms. Sólo requerimos que los usuarios cumplan con la licencia Apache License 2.0
en sus trabajos, como documentos, videos, códigos, etc., para mencionar la información del proyecto Turms, como por ejemplo:
Original Project Name:turms-im/turms
Original Project:https://github.com/turms-im/turms
Original Project Documentation:https://turms-im.github.io/docs
¿Cómo es rentable el proyecto Turms?
No necesitamos ser rentables actualmente. Por supuesto, no excluimos las ganancias, pero no redactaremos deliberadamente malos documentos o haremos un mal trabajo para ganar consultoría, capacitación y otros gastos. Otra cosa que hay que mencionar es que, de hecho, hay muchos proyectos de código abierto (cerrados) que ganan tarifas de soporte de servicio escribiendo deliberadamente malos documentos y haciendo un mal trabajo.
Si organizaciones con fines de lucro, como instituciones de formación o empresas, citan documentos de Turms o incluso venden proyectos de Turms como servicios SaaS, ¿deben estas organizaciones con fines de lucro prestar atención a algo?
No nos importa si su equipo planea obtener ganancias del proyecto Turms. Su equipo solo necesita cumplir con la licencia Apache License 2.0
y mencionar la información del proyecto Turms como se mencionó anteriormente.
El proyecto Turms es adecuado para ofrecer servicios SaaS, entonces, ¿por qué el proyecto Turms no adopta la licencia AGPL o SSPL?
Actualmente no necesitamos obtener ganancias y no planeamos obtener ganancias. Solo requerimos que los usuarios cumplan con la licencia Apache License 2.0
.
Si el proyecto Turms no es rentable, ¿cuál es la calidad de su proyecto?
Nuestra documentación y código fuente nos han respondido esta pregunta, y en la comunidad de código abierto, no existe ningún proyecto de mensajería instantánea de código abierto que pueda competir con el proyecto Turms en escenarios de aplicaciones de mensajería instantánea medianas y grandes. Otra cosa que hay que mencionar es que los proyectos comerciales no significan alta calidad, e incluso la calidad de la documentación y el código de muchos proyectos comerciales es impactante.
¿Turms utiliza acuerdos de licencia dual o tiene cargos ocultos?
No. Algunos proyectos son gratuitos para uso personal y cobran por uso comercial, utilizan acuerdos de licencia dual o tienen muchos cargos ocultos. El proyecto Turms tiene la licencia Apache License 2.0
y no tiene ningún costo. Algunos proyectos afirman ser software de código abierto, pero no lo son. Para obtener más información, consulte La definición de código abierto.
Desarrollado principalmente en IntelliJ IDEA y CLion.
Licencia proporcionada amablemente por el equipo de soporte comunitario de JetBrains.