简体中文
Turms는 전 세계 10만~1천만 명의 동시 사용자를 위한 가장 진보된 오픈 소스 인스턴트 메시징 엔진입니다. 자세한 내용은 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
클러스터가 설정된 후 http://localhost:6510에서 turms-admin을 방문하여 계정과 비밀번호(기본적으로 turms
)를 입력할 수 있습니다. 성공적으로 로그인했다면 Turms 클러스터가 성공적으로 설정되었음을 의미합니다.
또한 Turms에서 제공하는 Terraform 모듈을 적용하여 클라우드 서비스를 빠르게 구매하고 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는 비즈니스 데이터의 변경을 인식하기 위해 푸시 모델, 풀 모델 및 푸시-풀 모델을 지원합니다. (자세한 내용은 비즈니스 데이터 변경 인식을 참조하세요.) ). 다른 디자인 세부 사항의 대부분은 상용 IM 프로젝트에서도 나옵니다.
그리고 구식 기술 스택을 사용하는 많은 프로젝트와 비교할 때 Turms는 현대 아키텍처와 현대 기술을 기반으로 하며 중대형 애플리케이션에 적합한 유일한 오픈 소스 IM 솔루션이기도 합니다.
게다가 건축 디자인은 절충의 예술이다. 일부 IM 제품은 중대형 애플리케이션을 지원하지 않는 대신 풍부한 기능을 슬로건으로 사용합니다(팀 커뮤니케이션에만 적합함). 그러나 Turms는 최고의 성능을 최우선으로 생각하며 중간 규모 및 대규모 애플리케이션을 지원하기 위해 풍부한 IM 기능이 아닌 완전한 IM 기능을 지원합니다. 자세한 내용은 Turms 스키마 설계 및 관찰 가능성을 참조하세요.
Turms를 다른 오픈 소스 IM 프로젝트와 기능을 비교해야 하는 경우 먼저 Turms의 다음 기능을 기반으로 Turms를 다른 오픈 소스 IM 프로젝트와 비교할 수 있습니다. 일반적으로 전문적인 IM 프로젝트와 아마추어 IM 프로젝트의 차이점을 찾을 수 있습니다. 또한 Product Comparison
장에서 참고할 수 있도록 Turms 프로젝트의 단점도 언급했습니다.
참고: 현재 Turms 프로젝트의 가장 큰 단점은 거실/채팅방을 지원하지 않는다는 것입니다. 거실/대화방의 기술적 구현은 어렵지 않지만 제품 요구 사항, 품질 속성 요구 사항 및 제한 조건이 일반 소셜 응용 프로그램의 시나리오와 상당히 다르기 때문에 Turms의 첫 번째 버전에서는 이에 대한 지원을 제공하지 않습니다. 또한 Turms는 소규모 기업 통신 시나리오에도 적합하지 않습니다. 엔터프라이즈 커뮤니케이션 시나리오에 Turms를 사용하는 것은 큰 망치를 사용하여 너트를 깨는 것입니다. 왜냐하면 엔터프라이즈 커뮤니케이션은 Turms의 목표와 일치하지 않는 극단적인 성능보다는 풍부한 기능을 강조하므로 디자인도 다르기 때문입니다. 기업 커뮤니케이션 시나리오를 지원하려면 Turms를 기반으로 직접 개발해야 합니다.
Observable 시스템 (자세한 내용은 Observability 참조)
로그(이벤트용): Turms는 모니터링 로그, 비즈니스 로그, 통계 로그의 세 가지 유형의 로그를 제공합니다.
측정항목(집계 가능한 데이터용) 시스템 및 비즈니스 데이터의 실시간 현황을 반영합니다.
트레이싱
Turms 서버는 최대한 효율적으로 구현할 수 있는 더 많은 모니터링 기능을 제공하지만 성능에 큰 영향을 미치고 타사 서비스(예: DAU)에 더 적합한 일부 공통 기능은 제공하지 않습니다. . 이러한 종류의 확장 기능의 경우 Turms 서버의 로그 또는 메트릭을 오프라인 또는 실시간 분석하여 구현할 수 있습니다.
최고의 성능 우리는 항상 모든 비즈니스 워크플로우 구현에서 최고의 성능을 확보하려고 노력합니다. 자세한 내용은 소스코드를 참고해주세요.
이름 | 요약 |
---|---|
터름스 게이트웨이 | 클라이언트와 상호작용하며 사용자 인증, 세션 관리, 푸시 알림, turms-service 서버의 로드 밸런싱을 담당하는 게이트웨이(푸시 서버) |
Turms-서비스 | IM 비즈니스 로직을 구현하고 관리자에게 비즈니스 데이터 관리, RBAC, 클러스터 관리 기능을 제공합니다. |
turms-관리자 | Turms 서버 클러스터에 대한 비즈니스 데이터 관리, 클러스터 관리 등의 기능을 제공합니다. |
Turms-클라이언트-js | IM 기능, 기본 드라이버 논리(예: 하트비트)를 구현하고 탭 간 WebSocket 연결을 공유하기 위해 Turms 서버와 상호 작용하는 API를 노출합니다. 개발자에게 투명하기 때문에 구현을 알 필요가 없습니다. |
턴-클라이언트-코틀린 | IM 기능 및 기본 드라이버 논리(예: 하트비트)를 구현하기 위해 Turms 서버와 상호 작용하는 API를 노출합니다. 개발자에게 투명하기 때문에 구현을 알 필요가 없습니다. |
턴-클라이언트-스위프트 | 같게 |
턴-클라이언트-다트 | 같게 |
Turms-플러그인 | 이벤트(예: 사용자의 온라인/오프라인 전환, 메시지 수신 및 전달 등)가 발생하면 turms-gateway 및 turms-service는 개발자가 사용자 정의 기능을 구현할 수 있도록 해당 사용자 정의 플러그인을 트리거합니다. |
Turms-플러그인-스팸 방지 | 이중 배열 트라이를 갖춘 Aho-Corasick 자동 장치를 사용하는 스팸 방지 보호를 위한 turms-plugin 기반 플러그인(탐지 시간 복잡도는 O(n)이고 n은 대상 문자열 코드 포인트의 길이입니다) |
turms-플러그인-미니오 | 스토리지 서비스용 turms-plugin 기반 플러그인이며 MinIO 서버와 상호 작용하는 데 사용됩니다. |
Turms-플러그인-rasa | 챗봇용 turms-plugin을 기반으로 하는 플러그인으로 Rasa 서버와 상호 작용하는 데 사용됩니다. |
텀스 데이터(TODO) | 아직 출판되지 않았습니다. Flink 생태계를 기반으로 한 독립적인 데이터 분석 시스템은 비즈니스 데이터 분석을 담당하며 관리자를 위한 turms의 통계 API 및 turms-admin의 운영 보고서에 대한 기본 데이터 지원을 제공합니다. |
Turms의 아키텍처 디자인은 상업용 인스턴트 메시징 아키텍처에서 파생되었습니다. 다음 그림은 Turms의 참조 아키텍처를 보여줍니다. 점선 안의 서비스는 선택 서비스이고, 실선 안의 서비스는 필수 서비스입니다. 자세한 내용은 Turms 아키텍처 설계를 참조하세요.
전 세계적으로 많은 오픈 소스 IM 프로젝트가 있지만 중대형 IM 애플리케이션 시나리오를 위해 설계된 오픈 소스 IM 프로젝트는 Turms뿐입니다.
로켓채팅 | 비공개 소스 IM 클라우드 | 터름스 | |
---|---|---|---|
애플리케이션 시나리오 | 팀 커뮤니케이션 | 일반 IM 시나리오 | 일반 중대형 IM 시나리오(Turms 재개발 가능) (참고: Turms의 첫 번째 버전은 거실/채팅방을 지원하지 않습니다.) |
장점 | 1. 마우스 클릭만으로 클러스터를 시작하고 서비스를 제공하는 것만으로 클라우드 서비스 제공 2. 클라이언트 구현은 크로스 플랫폼이며 사용자에게 즉시 사용 가능합니다. 3. 완전하고 통합된 UI 제품군 지원 4. 오디오 및 비디오 회의, 파일 공유, 화면 공유와 같은 풍부한 고급 인스턴트 메시징 기능을 지원합니다. 5. 상용 사용자에게 기술 지원 제공 | 1. 마우스 클릭만으로 클러스터를 시작하고 서비스를 제공하는 것만으로 클라우드 서비스 제공 2. 클라이언트 구현은 크로스 플랫폼이며 사용자에게 즉시 사용 가능합니다. 3. 완전하고 통합된 UI 제품군 지원 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. 특정 비즈니스 로직 및 UI를 지원하지 않습니다. 6. 서버는 반응형이므로 일부 개발자에게는 어려운 일입니다. |
논평 | 팀 커뮤니케이션을 위해 Rocket.Chat을 사용하는 것이 좋습니다. | 제품의 IM 비즈니스 시나리오가 매우 일반적이고 사용자 정의 요구 사항이 없으며 IM 비즈니스가 제품의 주요 비즈니스가 아닌 경우 IM 클라우드를 사용하는 것이 좋습니다. 그러나 특별한 요구 사항이 없는 경우 소규모 회사에서 제공하는 IM 클라우드를 사용하지 마십시오. 그렇지 않으면 데이터 보안이 보장되지 않습니다. | 둘 다 오픈 소스 IM 프로젝트이지만 완전히 다른 애플리케이션 시나리오를 가지고 있습니다. Turms는 중대형 인스턴트 메시징 애플리케이션을 위한 일반적인 인스턴트 메시징 엔진입니다. Turms를 고객에게 건네줄 수는 없습니다(대부분의 제품이 고객이 데이터베이스의 비즈니스 데이터를 쿼리하기 위해 SQL 문을 작성하는 것을 허용하지 않는 것처럼). 그러나 Turms를 기반으로 GitHub의 모든 오픈 소스 인스턴트 메시징 프로젝트를 보다 효율적이고 포괄적이며 광범위하게 구현할 수 있습니다. |
Turms의 포지셔닝을 고려할 때 가까운 시일 내에 UI 및 특정 비즈니스 로직이 포함된 클라이언트 데모를 제공할 계획이 없습니다.
개발자는 Turms가 지원하는 비즈니스 기능을 쉽게 확인할 수 있습니다. 단지 Turms의 비즈니스 기능을 테스트하고 싶다면 코드 한 줄도 입력하지 않고도 Turms 서버를 실행할 수 있습니다. 단 10줄의 코드만으로 로그인, 메시지 보내기, 친구의 요청 보내기 및 기타 비즈니스 기능을 구현하거나 속성을 수정하여 다양한 요구 사항을 사용자 정의할 수 있습니다.
데모의 디자인 및 구현은 특정 비즈니스 시나리오, 특정 프로그래밍 언어, 특정 기술 아키텍처 및 특정 OS와 밀접하게 관련되어 있으며 Turms는 다양하고 복잡하고 까다로운 인스턴트 메시징 시나리오를 효율적으로 충족하기 위해 노력해 왔으며 우리는 원하지 않습니다. 개발자의 상상력을 제한하는 데모를 게시하세요. 그리고 데모를 개발하고 유지하는 것도 시간이 많이 걸리고 Turms 개발 진행 속도가 느려질 것입니다.
현재 맞춤형 기술 솔루션과 UI 디자인을 실현하려면 GPT-3.5 및 GPT-4와 "채팅"만 하면 됩니다. 텍스트를 입력 예로 사용합니다. 또한 GPT-4는 이미지 입력을 지원하며 UI 와이어프레임을 그려 UI 디자인 방법을 제안할 수도 있습니다.
Vue3, Vite, Eslint 및 기타 기술을 기반으로 웹단에서 실행되는 고객 서비스 채팅 창을 구현하십시오. 특정 요구 사항.
- UI 디자인 스타일은 다음을 참조해야 합니다. Ant 디자인
- 채팅 창은 세 부분으로 나누어져야 합니다. 상단에는 고객 서비스 이름이 표시되어야 합니다. 중간에는 사용자와 고객 서비스 간의 채팅 메시지가 표시되어야 합니다. 그리고 하단에는 사용자가 문자를 입력하고 메시지를 보낼 수 있도록 문자 입력창과 보내기 버튼을 제공해야 합니다.
- 채팅창은 항상 페이지 오른쪽 상단에 표시되어야 합니다.
- 로그인, 메시지 전송, 메시지 수신 등을 위해 백엔드 서버와 통신하려면 채팅 창이 WebSocket 프로토콜을 기반으로 한다고 가정해야 합니다.
- UI 컴포넌트화 디자인 솔루션을 기반으로 프로젝트 구조와 프로젝트 내 모든 특정 코드 구현을 제공해야 합니다.
GPT는 해당 코드 구현을 즉시 제공할 수 있으며 다양한 시나리오를 기반으로 GPT와 계속 "채팅"하여(GPT가 여러 시나리오를 제공하고 비교하도록 할 수 있음) UI 디자인과 코드 구현을 개선하여 최종 구현을 마무리할 수 있습니다. 당신의 아이디어에.
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 커뮤니티 지원팀에서 라이선스를 친절하게 제공합니다.