Kiến trúc của Bitrix24

Kiến trúc của Bitrix24

Trước khi phát triển Bitrix24, chúng tôi đã đưa ra các yêu cầu sau đối với kiến ​​trúc của Bitrix24:

  • Có các tài khoản gói Miễn phí, vì vậy chúng tôi cần giữ cho các tài khoản này có chi phí cơ bản thấp nhất có thể.
  • Bitrix24 là một ứng dụng dành cho doanh nghiệp. Nó có nghĩa là tải trên các máy chủ sẽ không đồng đều, nó sẽ cao hơn vào buổi trưa và thấp hơn vào ban đêm. Vì vậy, chúng tôi cần có kiến ​​trúc có thể mở rộng và sử dụng chính xác nhiều tài nguyên cần thiết vào bất kỳ thời điểm nào.
  • Đồng thời, độ tin cậy là cực kỳ quan trọng đối với bất kỳ ứng dụng kinh doanh nào. Dữ liệu phải được bảo mật và có sẵn bất cứ lúc nào.
  • Chúng tôi đã bắt đầu làm việc tại ba thị trường khác nhau: Mỹ, Đức, Nga.

Những yêu cầu này đã xác định hai mục tiêu chính: hình thành một nền tảng phát triển đám mây có khả năng chịu lỗi có thể mở rộng và lựa chọn nền tảng công nghệ cho cơ sở hạ tầng của dự án.

Bitrix24 được xây dựng như một cụm web có thể hoán đổi cho nhau. may chủ. Nếu tải trên các máy chủ tăng lên, nhiều máy chủ hơn có thể được thêm vào một cụm ngay lập tức. Nếu bất kỳ máy chủ nào bị lỗi, khách hàng sẽ không cảm thấy điều đó vì mọi thứ tiếp tục hoạt động bằng cách sử dụng các máy chủ khác của cụm.

Hỗ trợ lưu trữ đám mây giải quyết vấn đề đồng bộ hóa nội dung tĩnh. Nhân bản tổng thể trong MySQL cho phép xây dựng các cụm web phân tán theo địa lý.

Kiến trúc chịu lỗi #

Chúng tôi sử dụng Amazon AWS, nhưng các nền tảng khác cũng có thể được sử dụng.

Tự động điều chỉnh tỷ lệ #

Ứng dụng (web) được chia tỷ lệ theo chiều ngang (thêm máy mới), không phải theo chiều dọc (tăng dung lượng máy chủ).

Để làm điều đó, chúng tôi sử dụng Cân bằng tải đàn hồi + CloudWatch + Tự động mở rộng quy mô. ELB (Cân bằng tải đàn hồi) tự động phân phối lưu lượng ứng dụng đến (HTTP và HTTPS). Việc tăng và giảm tải được theo dõi thông qua CloudWatch.

Khi tải tăng lên, các máy chủ mới sẽ được bật. Nếu tải giảm, các máy chủ bổ sung sẽ tự động tắt. Do đó, chúng tôi giảm chi phí cơ bản (các máy chủ dự phòng không hoạt động nhàn rỗi).

Nội dung tĩnh #

Khi khách hàng tạo Tài khoản Bitrix24 mới, tài khoản Amazon S3 cá nhân sẽ được tạo cho mỗi Tài khoản Bitrix24 để lưu trữ dữ liệu. Do đó, dữ liệu liên quan đến mỗi Tài khoản Bitrix24 được cách ly với nhau. Ngoài ra, bản thân bộ lưu trữ S3 cũng hoàn toàn an toàn.

Dữ liệu trong Amazon S3 được sao chép tới một số điểm. Hơn nữa, tại các điểm phân bố theo địa lý (các trung tâm dữ liệu khác nhau). Mỗi thiết bị lưu trữ đều được giám sát và nhanh chóng thay thế nếu có bất kỳ sự cố nào xảy ra.

Khi tải tệp mới lên bộ nhớ, bạn sẽ nhận được thông báo về việc tải lên thành công chỉ khi tệp được lưu thành công ở một số những điểm khác nhau. Thông thường, dữ liệu được sao chép sang ba thiết bị trở lên để đảm bảo khả năng chịu lỗi, ngay cả khi hai trong số các thiết bị này bị lỗi.

Kiến trúc S3 được xây dựng để Amazon sẵn sàng cung cấp tính khả dụng ở mức hai chín sau dấu thập phân. Và xác suất mất dữ liệu là một phần tỷ phần trăm.

15 trung tâm dữ liệu và bản sao tổng thể toàn bộ #

Toàn bộ dự án được đặt tại 15 trung tâm dữ liệu khác nhau nằm trên thế giới. Dữ liệu khách hàng được lưu trữ ở những quốc gia mà luật pháp yêu cầu phải lưu trữ. Do đó, chúng tôi giải quyết hai vấn đề cùng một lúc: chúng tôi phân phối tải máy chủ (ví dụ: người dùng Đức làm việc ở một DC và người dùng Mỹ ở nơi khác) và chúng tôi bảo lưu tất cả các dịch vụ: trong trường hợp hỏng một trong các DC, chúng tôi chỉ chuyển lưu lượng truy cập đến một
DC chính khác.

Cơ sở dữ liệu trong mỗi DC là một cái chính cho một DC phụ khác và đồng thời, nó là một nô lệ cho một DC chính khác.

Mỗi Tài khoản Bitrix24 (tất cả nhân viên đã đăng ký trong đó) tại bất kỳ thời điểm nào chỉ hoạt động với một DC và một cơ sở dữ liệu. Việc chuyển sang một DC khác chỉ được thực hiện trong trường hợp có bất kỳ sự cố nào.

Cơ sở dữ liệu trong các DC khác nhau là đồng bộ nhưng độc lập với nhau. Kết nối giữa các trung tâm dữ liệu có thể bị mất trong vài giờ. Trong những trường hợp như vậy, dữ liệu sẽ được đồng bộ hóa sau khi khôi phục kết nối.

Chúng tôi cũng sử dụng bản sao tổng thể. Nếu máy chủ cơ sở dữ liệu gặp sự cố hoặc khởi động lại, các máy khách sẽ ngay lập tức được chuyển sang máy chủ khác.

Độ tin cậy và khả năng chịu lỗi #

Một trong những ưu tiên hàng đầu tại Bitrix24 là tính khả dụng liên tục của dịch vụ và Khả năng chịu lỗi.

Nếu có sự cố xảy ra trên một hoặc một số nút web, Cân bằng tải sẽ xác định các máy bị lỗi và dựa trên các thông số được chỉ định (số lượng máy đang chạy bắt buộc tối thiểu), số lượng cần thiết là các phiên bản được khôi phục tự động.

Nếu kết nối giữa các trung tâm dữ liệu bị mất, mỗi trung tâm dữ liệu sẽ tiếp tục phục vụ phân khúc khách hàng của mình. Sau khi khôi phục kết nối, dữ liệu trong cơ sở dữ liệu sẽ tự động được đồng bộ hóa.

Nếu trung tâm dữ liệu bị lỗi hoàn toàn, tất cả lưu lượng truy cập sẽ tự động được chuyển sang trung tâm dữ liệu khác.

Nếu điều đó gây ra lỗi tăng tải trên các máy, CloudWatch xác định mức sử dụng CPU tăng lên và thêm số lượng máy cần thiết vào một trung tâm dữ liệu theo quy tắc Tự động chia tỷ lệ.

Đồng thời, quá trình sao chép tổng thể bị tạm dừng. Sau khi thực hiện các công việc cần thiết, hãy bật lại cơ sở dữ liệu và khôi phục bản sao.

Nếu mọi thứ đều tốt, lưu lượng sẽ được phân phối giữa các trung tâm dữ liệu. Nếu tải trung bình giảm xuống dưới giá trị ngưỡng, các máy phụ đã được bật để xử lý tải tăng lên sẽ tự động dừng.

Đối với các dịch vụ đám mây, việc cập nhật chức năng và phần mềm hệ thống là một vấn đề lớn. Đôi khi họ buộc phải tạm thời tắt dịch vụ, cảnh báo người dùng, tiến hành công việc vào ban đêm. Kiến trúc của chúng tôi cho phép chúng tôi làm điều đó để người dùng thậm chí không nhận thấy điều đó.

Công nghệ WebRTC: cuộc gọi, cuộc gọi video, điện thoại #

Cuộc gọi video trong Bitrix24 là riêng tư. Các cuộc trò chuyện video đáng tin cậy trong công ty dựa trên công nghệ WebRTC. Kết nối được mã hóa, các cuộc gọi được thực hiện giữa những người dùng với tư cách ngang hàng, quá trình này gần như minh bạch và được tổ chức “bên trong” trình duyệt.

SIGNALING #

Báo hiệu thực hiện ba đơn giản nhiệm vụ:

  1. Cấu hình kết nối giữa hai trình duyệt (luồng âm thanh/video, codec, địa chỉ, cổng ở định dạng SDP).
  2. Trao đổi mật khẩu để thiết lập kết nối được mã hóa giữa các trình duyệt.
  3. Bắt đầu hành động – gọi ai đó (kết nối luồng của ứng dụng khách A với luồng của ứng dụng B trên lệnh gọi lại trong js), kết thúc cuộc gọi, v.v.

Các trình duyệt kết nối với nhau bằng tính năng Báo hiệu, cho phép bạn thực hiện cuộc gọi điện video.

Gọi điện thật dễ dàng khi cả hai người dùng đều ở trong cùng một mạng nội bộ. Nhưng khi người dùng ở trong các mạng khác nhau và đã định cấu hình tường lửa, trình duyệt không thể thiết lập kết nối nếu không có sự trợ giúp:

  • Để vượt qua tường lửa của công ty, người dùng truy cập vào máy chủ trung tâm bằng giao thức STUN/TURN .
  • Nếu không thể vượt qua tường lửa, các luồng phương tiện sẽ đi qua máy chủ của bên thứ ba, không phải ngang hàng giữa các trình duyệt (ở chế độ “chuyển tiếp”).

Cuộc gọi điện video nhóm #

Khi cuộc gọi điện video nhóm được thực hiện, mỗi trình duyệt sẽ giữ luồng video của từng người tham gia bằng WebRTC.

WebRTC và điện thoại #

Bitrix24 tích hợp với “cổng” để thực hiện các cuộc gọi đến các số điện thoại thông thường từ/đến công ty.

Trang web tổng hợp #

Bitrix24 sử dụng một công nghệ độc đáo để nâng cao hiệu suất dịch vụ giúp hợp nhất việc tải dữ liệu tĩnh với tốc độ cao và chuẩn bị nền cho dữ liệu động.

Các trang được chia thành hai phần: tĩnh và động. Phần tĩnh được lưu vào bộ nhớ đệm và hiển thị ngay lập tức. Phần động được tải bằng xử lý nền và được lưu vào bộ nhớ đệm trong trình duyệt.

REST API #

API Bitrix24 mở cho mục đích gì:

  • CRM
  • Nhóm mạng xã hội (nhóm làm việc, dự án)
  • Lưu trữ dữ liệu (khối thông tin)
  • Thông báo và Luồng hoạt động
  • Nhiệm vụ
  • Người dùng và Phòng ban
  • Lịch
  • Điện thoại
  • Bitrix24.Sites
  • Chốt trò chuyện và Kênh mở
  • Quy trình làm việc
  • v.v.

Đọc thêm trong bài viết – API REST Bitrix24 .