من موتور همگام سازی Linear را معکوس کردم تا ببینم چگونه کار می کند

برای بررسی کار من ، مستقیماً به GitHub من پرش کنید. اما اگر در مورد اینکه چرا این پروژه را شروع کردم کنجکاو هستید ، به خواندن ادامه دهید.
من روی نرم افزارهای مشترک کار می کنم و روی ویراستاران متن غنی و صفحات گسترده تمرکز می کنم. موتورهای همکاری، همچنین به عنوان شناخته می شود موتورهای همگام سازی، نقش مهمی در تقویت تجربه کاربر در این نرم افزارها بازی کنید. آنها در حالی که ویژگی هایی مانند در دسترس بودن آفلاین و سابقه پرونده را ارائه می دهند ، ویرایش های زمان واقعی و همزمان را در همان پرونده فعال می کنند. به طور معمول ، مهندسان استفاده می کنند تحول عملیاتی (OT) یا انواع داده های تکرار شده بدون درگیری (CRDTS) برای ساخت موتورهای همگام سازی. در حالی که این فناوری ها برای ویراستاران و صفحات گسترده مؤثر هستند ، ممکن است برای سایر انواع برنامه ها ایده آل نباشد. در اینجا به همین دلیل است.
OT به دلیل پیچیدگی خود بسیار پذیرفته شده اما بدنام است. این پیچیدگی ناشی از نیاز به حساب کردن مدلهای متنوع داده ها و مجموعه های عملکرد در برنامه های مختلف است که برای اجرای صحیح عملیات و توابع تحول نیاز به تلاش قابل توجهی دارد. در حالی که OT در همگام سازی ویرایش ها ، حفظ قصد کاربر و رسیدگی به درگیری ها برتری دارد ، پیچیدگی آن غالباً باعث می شود که موارد ساده تر استفاده کنید – مانند مدیریت اطلاعات کاربر یا ابرداده پرونده – جایی که ساده است آخرین برنده رویکرد ممکن است کافی باشد.
از طرف دیگر CRDTS کاربر پسند تر به نظر می رسد. آنها پشتیبانی داخلی را برای ساختار داده های اساسی (به عنوان مثال ، متون ، لیست ها ، نقشه ها ، پیشخوان ها) ارائه می دهند و باعث کاهش بار کار برای توسعه دهندگان می شوند. با این حال ، CRDT ها غالباً سربار ابرداده را معرفی می کنند و برای مدیریت در سناریوهای مربوط به همگام سازی جزئی یا کنترل مجوزها چالش برانگیز می شوند – از جمله اینکه کاربران فقط می توانند به زیر مجموعه ای از پرونده ها دسترسی پیدا کنند. این مسائل به این دلیل بوجود می آیند که CRDT ها در درجه اول برای سیستم های غیرمتمرکز طراحی شده اند ، در حالی که بیشتر برنامه های مدرن هنوز به سرورهای متمرکز بستگی دارند. اگرچه من شخصاً طرفدار CRDT ها هستم ، اما آنها اغلب برای برخی موارد استفاده کم می شوند.
آنچه من در یک موتور همگام به دنبال آن هستم شامل موارد زیر است:
- پشتیبانی از مدل های داده دلخواه: آن را با طیف گسترده ای از سناریوها سازگار کنید.
- ویژگی های غنی: این باید از همگام سازی جزئی ، اجرای مجوزها پشتیبانی کند و ویژگی هایی مانند Undo/Redo ، در دسترس بودن آفلاین و ویرایش تاریخ را شامل شود.
- تجربه عالی توسعه دهنده: در حالت ایده آل ، باید تعاریف مدل را به روشی شبیه به ORM انجام دهد. توسعه دهندگان نیازی به متخصص بودن در موتورهای همگام سازی برای ساختن برنامه های مشترک ندارند.
Engine Sync Linear Linear (LSE) یک راه حل زیبا برای کلیه الزامات فوق الذکر فراهم می کند. علاوه بر این ، یک API بصری را ارائه می دهد که پیچیدگی اساسی را از بین می برد و توسعه ویژگی ها را به طور قابل توجهی ساده تر می کند.
من هفت ماه پیش خطی مهندسی معکوس را شروع کردم و اکنون ، پس از اکتشافات گسترده ، من هیجان زده ام که آنچه را که با جامعه آموخته ام به اشتراک بگذارم. امیدوارم این امر برای هر کسی که علاقه مند به تکنیک های همگام سازی باشد ، به ویژه آنهایی که به دنبال ساخت موتور همگام سازی مشابه Linear هستند ، مفید باشد.
من دوست دارم افکار شما را بشنوم! اگر این پروژه را جالب می دانید ، احساس راحتی کنید که آن را با دوستان خود به اشتراک بگذارید.
https://github.com/wzhudev/reverse-linear-sync-engine