简体中文
Turms — это самая передовая система обмена мгновенными сообщениями с открытым исходным кодом для 100–10 миллионов одновременных пользователей в мире. Подробности см. в документации Turms.
(Версии демо-серверов: ghcr.io/turms-im/turms-admin:latest
, ghcr.io/turms-im/turms-gateway:latest
, ghcr.io/turms-im/turms-service:latest
)
turms-админ: http://playground.turms.im:6510
И учетная запись, и пароль: guest
. (Учетной записи разрешено запрашивать и добавлять данные, но не разрешено обновлять и удалять данные.)
turms-gateway: http://playground.turms.im:10510 (порт для доступа через WebSocket) и http://playground.turms.im:11510 (порт для доступа по TCP)
turms-service (API администратора в среде разработки с поддержкой поддельных данных): http://playground.turms.im:8510
Прометей: http://playground.turms.im:9090; Графана: http://playground.turms.im:3000
Вы можете использовать любую реализацию turms-client-(java/js/swift) для отправки запросов на turms-gateway и взаимодействия с другими пользователями.
Кроме того, Playground настраивается автоматически всего одной командой: ENV=dev,demo docker compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d
Выполнение следующих команд для автоматической настройки минимально жизнеспособного кластера (включая turms-gateway, turms-service и turms-admin) и зависимых от него серверов (осколочный кластер MongoDB и Redis):
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
После настройки кластера вы можете посетить turms-admin по адресу http://localhost:6510 и ввести учетную запись и пароль (по умолчанию turms
). Если вы успешно вошли в систему, это означает, что кластер Turms успешно настроен.
Вы также можете применить модули Terraform, предоставляемые Turms, для быстрого приобретения облачных услуг и настройки кластера turms (по умолчанию используются спотовые экземпляры). После запуска terraform apply
подождите около 3–15 минут (Alibaba Cloud ECS медленно извлекает изображения ghcr), а затем посетите http://<public IP>:6510
. Если у вас есть доступ к turms-admin, это означает, что Кластер turms настроен успешно.
(Примечание. Следующие команды автоматически приобретут облачные услуги и спишут соответствующие сборы с вашего счета)
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
Архитектура Turms зависит от конструкции разветвленного чтения для создания почтовых ящиков (или временных шкал сообщений), и Turms поддерживает модель push, модель pull и модель push-pull, чтобы быть в курсе изменений бизнес-данных (подробнее см. в разделе «Информация об изменении бизнес-данных»). ). Большинство других деталей дизайна также взято из коммерческих проектов IM.
По сравнению со многими проектами с устаревшими технологическими стеками, Turms также является единственным IM-решением с открытым исходным кодом, основанным на современной архитектуре и современных технологиях и подходящим для средних и крупных приложений.
Кроме того, архитектурный дизайн — это искусство компромисса. Некоторые IM-продукты используют богатые возможности в качестве своего лозунга за счет отсутствия поддержки приложений среднего и большого масштаба (они подходят только для группового общения). Однако Turms ставит высочайшую производительность в качестве главного приоритета и поддерживает полные (а не богатые) функции IM для поддержки средних и крупномасштабных приложений. Подробности см. в разделе «Проектирование и наблюдаемость схемы Turms».
Если вам нужно сравнить Turms с другими проектами IM с открытым исходным кодом по функциям, вы можете сначала сравнить Turms с другими проектами IM с открытым исходным кодом на основе следующих функций Turms. Обычно можно найти различия между профессиональными IM-проектами и любительскими IM-проектами. Кроме того, в главе Product Comparison
» мы также упомянули для вашего сведения недостатки проекта Turms.
Примечание. Основным недостатком текущего проекта Turms является то, что он не обеспечивает поддержку гостиной/чата. Техническая реализация гостиной/чата не сложна, но требования к продукту, требования к атрибутам качества и ограничительные условия сильно отличаются от сценариев обычных социальных приложений, поэтому первая версия Turms не обеспечивает ее поддержку. Кроме того, Turms также не подходит для сценариев связи на небольших предприятиях. Использование Turms для сценариев корпоративного общения — это использование кувалды, чтобы расколоть орех, поскольку корпоративное общение делает упор на богатые возможности, а не на высочайшую производительность, что не соответствует целям Turms, поэтому их конструкции также различны. Если вы хотите поддерживать сценарии корпоративного общения, вам необходимо самостоятельно разрабатывать на базе Turms.
Наблюдаемая система (подробнее см. в разделе «Наблюдаемость»)
Журнал (для событий): Turms предоставляет три типа журналов: журнал мониторинга, бизнес-журнал и журнал статистики.
Метрики (для агрегированных данных). Он отражает состояние системы и бизнес-данные в режиме реального времени.
Отслеживание
Обратите внимание, что сервер Turms предоставит больше функций мониторинга, которые можно реализовать максимально эффективно, но не будет предоставлять некоторые общие функции, которые оказывают большое влияние на производительность и больше подходят для предоставления сторонними службами (например, DAU). . Что касается такого рода расширенных функций, вы можете реализовать их путем автономного анализа журналов или показателей серверов Turms или в режиме реального времени.
Высочайшая производительность Мы всегда стараемся добиться максимальной производительности при реализации всех бизнес-процессов. Пожалуйста, обратитесь к исходному коду для получения подробной информации.
Имя | Краткое содержание |
---|---|
турмс-шлюз | Шлюз (push-сервер), взаимодействующий с клиентами и отвечающий за аутентификацию пользователей, управление сеансами, push-уведомления и балансировку нагрузки для серверов turms-service. |
turms-сервис | Реализует бизнес-логику IM и предоставляет администраторам управление бизнес-данными, RBAC, управление кластером. |
turms-админ | Предоставляет такие функции, как управление бизнес-данными и управление кластером для кластера серверов Turms. |
turms-клиент-js | Предоставляет API для взаимодействия с сервером Turms для реализации функций обмена мгновенными сообщениями, базовой логики драйвера (например, тактового сигнала) и совместного использования соединения WebSocket между вкладками. Вам не нужно знать его реализации, поскольку он прозрачен для разработчиков. |
повороты-клиент-котлин | Предоставляет API для взаимодействия с сервером Turms для реализации функций обмена мгновенными сообщениями и базовой логики драйвера (например, тактового сигнала). Вам не нужно знать его реализации, поскольку он прозрачен для разработчиков. |
поворачивается-клиент-быстро | то же самое |
поворачивает-клиент-дротик | то же самое |
плагин turms | При возникновении событий (таких как переход пользователя в онлайн/оффлайн, получение и пересылка сообщений и т. д.) turms-gateway и turms-service запускают соответствующие пользовательские плагины, чтобы облегчить разработчикам реализацию пользовательских функций. |
turms-плагин-антиспам | Плагин на основе turms-plugin для защиты от спама с использованием автомата Aho-Corasick с двойным массивом trie (временная сложность обнаружения равна O(n), а n — длина кодовых точек целевой строки) |
turms-плагин-минио | Плагин основан на turms-плагине для службы хранения и используется для взаимодействия с сервером MinIO. |
turms-плагин-раса | Плагин на основе turms-плагина для чат-бота, используется для взаимодействия с сервером Rasa. |
turms-данные (TODO) | Еще не опубликовано. Независимая система анализа данных, основанная на экосистеме Flink, отвечает за анализ бизнес-данных и обеспечивает базовую поддержку данных для статистических API turms для администраторов и операционных отчетов turms-admin. |
Архитектура Turms заимствована из коммерческих архитектур обмена мгновенными сообщениями. На следующем рисунке показана эталонная архитектура Turms. Услуги, обведенные пунктирными линиями, являются дополнительными услугами, а услуги, обведенные сплошными линиями, — обязательными. Подробную информацию см. в разделе «Архитектурный проект Turms».
Хотя в мире существует множество проектов IM с открытым исходным кодом, существует только один проект IM с открытым исходным кодом, предназначенный для средних и крупных сценариев приложений IM: Turms.
Rocket.Чат | Облако обмена мгновенными сообщениями с закрытым исходным кодом | Турмы | |
---|---|---|---|
Сценарии применения | Командные коммуникации | Общие сценарии обмена мгновенными сообщениями | Общие сценарии IM среднего и крупного масштаба (создание возможности реконструкции Turms) (Примечание: первая версия Turms не обеспечивает поддержку гостиной/чата) |
Преимущества | 1. Предоставляйте облачные услуги, просто щелкнув мышью, чтобы запустить кластер и предоставить услуги. 2. Реализация клиента кроссплатформенная и нестандартная для пользователей. 3. Поддержка полного и унифицированного пакета пользовательского интерфейса. 4. Поддержка расширенных функций обмена мгновенными сообщениями, таких как аудио- и видеоконференции, обмен файлами, совместное использование экрана. 5. Предоставить коммерческим пользователям техническую поддержку. | 1. Предоставляйте облачные услуги, просто щелкнув мышью, чтобы запустить кластер и предоставить услуги. 2. Реализация клиента кроссплатформенная и нестандартная для пользователей. 3. Поддержка полного и унифицированного пакета пользовательского интерфейса. 4. Поддержка расширенных функций обмена мгновенными сообщениями, таких как аудио- и видеоконференции, обмен файлами, совместное использование экрана. 5. Предоставить коммерческим пользователям техническую поддержку. | Плюсами являются особенности, описанные выше. |
Недостатки | 1. Подходит только для небольших применений. 2. Узкие сценарии применения и сложность настройки. | 1. Это закрытый исходный код, и его нельзя настроить. Любой проект неизбежно будет иметь новые бизнес-требования после роста бизнеса, которые необходимо адаптировать. Однако облака IM либо не предоставляют настраиваемых услуг, либо требуют высокой платы за настройку, и они могут неправильно понять ваши требования, что приведет к созданию настраиваемых функций, которые не смогут полностью удовлетворить потребности вашего бизнеса. Чтобы с ними хорошо работать, потребуется долгосрочное сотрудничество. Но благодаря Turms ваши требования могут быть реализованы и предоставлены быстро, а затраты невелики. Примечание. Подробную информацию о сложности IM можно найти в разделе Проектирование схемы. 2. Конфиденциальность данных. Вся ваша пользовательская информация и данные сообщений хранятся в облаках IM, которые могут просматривать и использовать ваши данные. Безопасность данных вообще не гарантируется, особенно для некоторых небольших IM-компаний, и вам даже придется нести риск безвозвратной потери данных. 3. Чем больше вы используете IM-облака, чем больше вы на них полагаетесь, тем дороже это обходится. Большинство облаков IM предоставляют определенную бесплатную квоту или пробный период, но после того, как количество пользователей вашего продукта вырастет, вам придется заплатить высокую плату за использование или отказаться от использования, чтобы начать разработку собственного сервера IM. 4. Техподдержка не своевременная. Облакам IM необходимо предоставлять техническую поддержку множеству клиентов одновременно, а поддержка вашего продукта может отставать. | 1. Удовлетворяет только общие потребности в обмене мгновенными сообщениями и не предоставляет некоторых дополнительных функций (например, нет поддержки аудио- и видеоконференций). 2. Первая версия Turms не поддерживает гостиную/чат. 3. Сервер Turms предоставляет только необработанные данные метрик/логов и не предоставляет такие функции, как анализ и сигналы тревоги. 4. Веб-система администрирования системы turms-admin в настоящее время не предоставляет расширенных функций работы.5. Нет поддержки конкретной бизнес-логики и пользовательского интерфейса. 6. Серверы реактивны, что является проблемой для некоторых разработчиков. |
Комментарий | Настоятельно рекомендуется использовать Rocket.Chat для командного общения. | Если бизнес-сценарии обмена мгновенными сообщениями в вашем продукте очень распространены, нет особых требований и бизнес обмена мгновенными сообщениями не является основным бизнесом вашего продукта, рекомендуется использовать облака обмена мгновенными сообщениями. Но если нет особых требований, старайтесь не использовать облако IM, предоставляемое небольшими компаниями, иначе безопасность ваших данных не будет гарантирована. | Хотя оба проекта IM являются проектами с открытым исходным кодом, они имеют совершенно разные сценарии применения. Turms — это универсальный механизм обмена мгновенными сообщениями для средних и крупных приложений обмена мгновенными сообщениями. Вы не можете просто передать Turms своим клиентам (точно так же, как большинство продуктов не позволяют клиентам писать операторы SQL для запроса бизнес-данных в базе данных). Однако на основе Turms вы можете реализовать все проекты обмена мгновенными сообщениями с открытым исходным кодом на GitHub более эффективно, комплексно и широко. |
Учитывая позиционирование Turms, мы не планируем в ближайшем будущем предоставлять демо-версию клиента с пользовательским интерфейсом и конкретной бизнес-логикой, т.к.
Разработчикам легко проверить бизнес-функции, поддерживаемые Turms. Если вы просто хотите протестировать бизнес-функции Turms, вы можете запустить сервер Turms, даже не вводя ни строчки кода. Всего десять строк кода могут реализовать вход в систему, отправку сообщений, отправку запросов друзьям и другие бизнес-функции, а также изменить свойства для настройки различных требований.
Разработка и реализация демо тесно связаны с конкретными бизнес-сценариями, конкретным языком программирования, конкретной технической архитектурой и конкретной операционной системой, в то время как Turms стремится эффективно решать различные сложные и трудные сценарии обмена мгновенными сообщениями, и мы не хотим опубликовать демо, ограничивающее воображение разработчиков. А разработка и поддержка демо-версии тоже отнимает очень много времени и замедлит ход разработки Turms.
В настоящее время вам нужно только «общаться» с GPT-3.5 и GPT-4, чтобы реализовать индивидуальные технические решения и дизайн пользовательского интерфейса. Возьмите текст в качестве примера ввода (кроме того, GPT-4 поддерживает ввод изображений, и вы также можете рисовать каркасы пользовательского интерфейса, чтобы предложить, как он хочет спроектировать пользовательский интерфейс).
Пожалуйста, внедрите окно чата службы поддержки клиентов, работающее в веб-интерфейсе, на основе Vue3, Vite, Eslint и других технологий. Особые требования.
- Стиль дизайна пользовательского интерфейса должен относиться к: Ant Design.
- Окно чата должно быть разделено на три части: вверху должно отображаться название службы поддержки; посередине должно отображаться сообщение чата между пользователем и службой поддержки; а внизу должно быть предусмотрено поле ввода текста и кнопка отправки, чтобы пользователь мог вводить текст и отправлять сообщения.
- Окно чата всегда должно отображаться в правом верхнем углу страницы.
- Вам необходимо предположить, что окно чата основано на протоколе WebSocket для связи с внутренним сервером для входа в систему, отправки сообщений, получения сообщений и т. д.
- Вам необходимо указать структуру проекта и всю конкретную реализацию кода в проекте на основе решения для проектирования компонентов пользовательского интерфейса.
GPT может сразу предоставить соответствующую реализацию кода, и вы можете продолжать «общаться» с ним на основе различных сценариев (вы можете позволить GPT предоставлять и сравнивать несколько сценариев), чтобы усовершенствовать дизайн пользовательского интерфейса и реализацию кода, чтобы сделать окончательную реализацию закрытой. к вашей идее.
Проект Turms лицензируется по лицензии Apache License 2.0
, поэтому нас не волнует, планируют ли пользователи получать прибыль от проекта Turms. Мы требуем от пользователей только соблюдения лицензии Apache License 2.0
в ваших работах, таких как документы, видео, коды и т. д., а также упоминание информации проекта Turms, например:
Original Project Name:turms-im/turms
Original Project:https://github.com/turms-im/turms
Original Project Documentation:https://turms-im.github.io/docs
Насколько выгоден проект Turms?
Нам не нужно быть прибыльными в настоящее время. Мы, конечно, не исключаем прибыль, но не будем намеренно писать плохие документы или делать плохую работу, чтобы заработать на консалтинге, обучении и других расходах. Еще следует упомянуть, что действительно существует множество (закрытых) проектов с открытым исходным кодом, которые зарабатывают гонорары за сервисную поддержку, намеренно создавая плохие документы и выполняя плохую работу.
Если коммерческие организации, такие как учебные заведения или компании, цитируют документы Turms или даже продают проекты Turms как услуги SaaS, нужно ли этим коммерческим организациям обращать на что-нибудь внимание?
Нас не волнует, планирует ли ваша команда получить прибыль от проекта Turms. Вашей команде необходимо только соблюдать лицензию Apache License 2.0
и упомянуть информацию о проекте Turms, как указано выше.
Проект Turms подходит для предоставления услуг SaaS, так почему же проект Turms не использует лицензию AGPL или SSPL?
На данный момент нам не нужно получать прибыль, и мы не планируем получать прибыль. Мы требуем от пользователей только соблюдения лицензии Apache License 2.0
.
Если проект Turms нерентабелен, каково качество его проекта?
Наша документация и исходный код дали нам ответ на этот вопрос, и в сообществе разработчиков ПО с открытым исходным кодом не существует проекта IM с открытым исходным кодом, который мог бы конкурировать с проектом Turms в сценариях приложений IM среднего и крупного размера. Еще следует отметить, что коммерческие проекты не означают высокого качества, и даже качество документации и кода многих коммерческих проектов шокирует.
Использует ли Turms двойные лицензионные соглашения или взимает скрытые платежи?
Нет. Некоторые проекты бесплатны для личного использования и взимают плату за коммерческое использование с использованием двойных лицензионных соглашений или содержат множество скрытых платежей. Проект Turms лицензируется по лицензии Apache License 2.0
и за него не взимается плата. Некоторые проекты утверждают, что являются программным обеспечением с открытым исходным кодом, но это не так. Подробную информацию см. в разделе «Определение открытого исходного кода».
В основном разрабатывается в IntelliJ IDEA и CLion.
Лицензия любезно предоставлена командой поддержки сообщества JetBrains.