2012-08-14 33 views
7

Nhìn vào Meteor để tạo một ứng dụng chỉnh sửa tài liệu cộng tác, bởi vì tuyệt vời là Meteor đồng bộ hóa dữ liệu giữa nhiều máy khách theo mặc định.Đồng bộ hóa kiểu Etherpad trong Meteor?

Nhưng khi sử dụng một văn bản khu vực, như trong ví dụ Sameer Kalburgi của
http://www.skalb.com/2012/04/16/creating-a-document-sharing-site-with-meteor-js/
http://docshare-tutorial.meteor.com/
kinh nghiệm là phụ tối ưu.

Tôi đã cố gắng nhập cùng một lúc với đồng nghiệp và các thay đổi của tôi sẽ bị ghi đè khi cô ấy nhập và ngược lại. Vì vậy, trong giải quyết xung đột chưa có thuật toán hợp nhất, tôi nghĩ vậy?

Tính năng này có được lên kế hoạch cho tính năng này không? Có cách nào để thực hiện điều này hiện tại không? Etherpad dường như xử lý vấn đề này khá tốt. Có được điều này trong Meteor sẽ giúp tạo ra các ứng dụng chỉnh sửa tài liệu cộng tác theo cách dễ tiếp cận hơn.

Trả lời

0

Những gì bạn mô tả có vẻ ngoài phạm vi thiên thạch đối với tôi. Nó không phải là một công cụ để thiết lập khả năng hợp tác!

Những gì nó cung cấp là cách minh bạch làm việc với một tập con của cơ sở dữ liệu máy chủ. Nhưng việc triển khai chức năng hợp nhất cụ thể theo từng trường hợp sử dụng là công việc của ứng dụng chứ không phải khung công tác.

+1

IMHO toàn bộ điểm của các loại ứng dụng là không chỉ là khách hàng đồng bộ với máy chủ một cách minh bạch, nhưng thông qua điều này, tất cả người dùng được kết nối đồng bộ với nhau. Nếu điều đó không được thiết lập cho khả năng cộng tác, tôi không biết là gì! –

+1

Và kể từ khi giải quyết xung đột được xây dựng thành Meteor, có vẻ như đó không phải là một câu hỏi kỳ lạ để hỏi liệu nó có phức tạp hơn không. Nhưng tất nhiên, nếu bạn biết một cách tốt, tôi có thể móc vào cơ chế giải quyết xung đột mà bản thân tôi muốn biết. –

+1

Được rồi, từ ngữ của tôi có thể hơi lệch. Điều tôi ngụ ý là Meteor thực sự hỗ trợ các kịch bản cộng tác, nhưng không phải là một cách rõ ràng hướng tới nó. Vì vậy, bạn phải mong đợi một số cạnh thô ở đây và ở đó. Ý bạn là gì về "giải quyết xung đột được xây dựng trong"? Mọi thứ tôi có thể tìm thấy theo hướng đó trong tài liệu là trong các tình huống xung đột, đăng ký phía khách hàng đầu tiên luôn thắng. –

8

Vì vậy, tôi nhìn vào nó một số chi tiết, các thuật toán được sử dụng trong Etherpad được gọi là chuyển đổi hoạt động:

Giải pháp là chuyển đổi hoạt động (OT). Nếu bạn chưa từng nghe về nó, OT là một lớp thuật toán thực hiện đồng thời nhiều thời gian thực trên trang web. OT giống như git thời gian thực. Nó hoạt động với bất kỳ số lượng lag (từ số không đến một kỳ nghỉ kéo dài). Nó cho phép người dùng thực hiện các chỉnh sửa trực tiếp, đồng thời với băng thông thấp. OT cung cấp cho bạn sự nhất quán cuối cùng giữa nhiều người dùng mà không thử lại, không có lỗi và không có bất kỳ dữ liệu nào bị ghi đè.

Thật không may, việc triển khai OT rất tệ. Có hàng triệu thuật toán với sự cân bằng khác nhau, phần lớn bị mắc kẹt trong các tài liệu học thuật. Các thuật toán thực sự khó khăn và tốn thời gian để triển khai chính xác. Chúng tôi cần một số thư viện tốt, vì vậy bất kỳ dự án nào cũng có thể cắm vào OT nếu họ cần.

Thats từ trang web sharejs. Máy chủ-máy chủ ot dựa trên node.js mà bạn có thể móc vào máy khách hiện tại của mình.

OT cũng được triển khai trong công cụ đồng bộ hóa mô hình Racer cho Node.js, tạo thành nền tảng cho Derby. Tại thời điểm này, derby.js không minh bạch cung cấp cho nó, nhưng họ có kế hoạch quá, từ Derby docs:

Hiện nay, Racer mặc định để áp dụng tất cả các giao dịch theo thứ tự nhận được, ví dụ cuối cùng nhà văn-chiến thắng. (…) Racer [cũng] hỗ trợ giải quyết xung đột thông qua kết hợp Bộ nhớ giao dịch phần mềm (STM), Chuyển đổi hoạt động (OT) và Kỹ thuật vá lỗi khớp.

Các tính năng này chưa được triển khai đầy đủ, nhưng bản trình diễn Racer trình bày các ví dụ sơ bộ về STM và OT.

Thật trùng hợp, cả nhóm chia sẻ và nhóm derby đều có Google-waver cũ. Meteor có một chiếc ethernet cũ/Google Waver trong nhóm lõi của họ.Kể từ Etherpad là một trong những hiện thực nổi tiếng nhất của OT tôi đã tưởng tượng Meteor chắc chắn sẽ muốn hỗ trợ nó tại một số điểm cũng ...


4

tôi đã tạo ra một gói phần mềm thông minh Meteor tích hợp ShareJS:

https://github.com/mizzao/meteor-sharejs

đó là khá sơ bộ ngay bây giờ, nhưng bạn có thể nhập nó vào ứng dụng của bạn, thả trong textarea s, và nó "chỉ hoạt động". Vui lòng thử nó ra và gửi một số tính năng mới thông qua các yêu cầu kéo :)

Check-out một bản demo ở đây:

http://documents.meteor.com

+0

Liên kết đến bản demo đã chết. – qznc

Các vấn đề liên quan