Matrix нэгдсэн сүлжээнд зориулсан Peer-to-Peer үйлчлүүлэгчийн анхны хувилбар

Туршилтын үйлчлүүлэгчийг гаргасан Riot P2P.


Riot - анх нэгдсэн сүлжээний үйлчлүүлэгч матриц. P2P өөрчлөлт нь төвлөрсөн DNS-г ашиглахгүйгээр серверийн хэрэгжилт, холбоог нэгтгэх замаар үйлчлүүлэгчид нэмж өгдөг. lipp2p, үүнийг бас ашигладаг IPFS. Энэ нь хуудсыг дахин ачаалсны дараа сессийг хадгалдаг үйлчлүүлэгчийн анхны хувилбар боловч дараагийн томоохон шинэчлэлтүүдэд (жишээлбэл, 0.2.0) өгөгдөл устах болно. Тиймээс үйлчлүүлэгчийг ямар нэгэн чухал зүйлд ашиглахыг зөвлөдөггүй.

Үйлчлүүлэгч нь өрөөнүүдийн нэгдсэн (сервергүй!) каталогийг нэгтгэх, өрөө үүсгэх, харуулах ажлыг гүйцэтгэдэг.

Гэсэн хэдий ч DNS ашигладаг үндсэн матриц сүлжээ болон libp2p дээрх матриц сүлжээ нь хоорондоо нэгдэж, харилцаж чадахгүй байна.

Үйлчлүүлэгчийг ашиглахын тулд нэвтрэх товчийг дарахад хангалттай бөгөөд үүний дараа та сүлжээнд үүсгэсэн ID-г хүлээн авах болно. Өгөгдлийн экспорт хараахан дэмжигдээгүй байна.

Энэ нь боломжит үзэл баримтлалын тогтворгүй танилцуулга учраас танд асуудал гарч болзошгүй:

  • Үйлчилгээний ажилтны хувиар ажиллаж байгаа сервер ажиллах хугацаа дууссаны дараа хөтөч устгасан тохиолдолд та өөрийн бүртгэл рүү нэвтрэх эсвэл бусад үйлчлүүлэгчидтэй харилцах боломжгүй болно. Ийм асуудал Firefox дээр олдсон, энэ нь 30 секунд идэвхгүй болсны дараа үүнийг хийдэг].
  • libp2p сүлжээний түвшинд хийж болох үйлдлүүдийн тоонд цаг хугацааны хязгаарлалт байдаг бөгөөд энэ нь холбоонд асуудал үүсгэж болзошгүй юм.

Matrix-ийн P2P хувилбар дээр ажиллаж эхэлсэн нь хөгжүүлэгчид хэрэглэгчиддээ илүү их эрх чөлөө өгөхийг хүссэнтэй холбоотой юм. Төв серверээс салгах нь дотоод болон торон сүлжээн дэх, ерөнхийдөө гадаад сүлжээнд нэвтрэх боломж хязгаарлагдмал эсвэл байхгүй нөхцөлд харилцаа холбоог хөнгөвчлөх боломжийг олгодог. Энэ хувилбарт зөвхөн захидал харилцааны оролцогчид хадгалагддаг дамжуулагдсан мета өгөгдлүүдийг багасгаж, хувийн нууцад эерэгээр нөлөөлдөг. Энэ нь эцсийн дүндээ илүү зөөврийн болон аюулгүй байдлыг хангахын тулд одоогийн матрицын үзэл баримтлалыг дахин засварлах талаар бодоход хүргэдэг.

Серверийн API-г хэрэгжүүлэх нь серверийн эмхэтгэлээр дамжин хийгддэг Dendrite WebAssembly код руу, үйлчилгээний ажилтан хэлбэрээр үйлчлүүлэгчтэй нэгэн зэрэг ажилладаг, вэб хувилбар болон электрон савлагчийн хувьд IndexedDB болон SQLite ашиглан өгөгдлийг дотооддоо хадгалах.
Dendrite нь Go дахь "хоёр дахь үеийн" матриц сервер бөгөөд бүрэн модульчлагдсан байхаар бүтээгдсэн бөгөөд цул хэлбэрээр ашиглах боломжтой. Модульчлагдсан хэлбэрээр Apache Кафка нь микро үйлчилгээнүүдийн хоорондын харилцан үйлчлэлд ашиглагддаг бөгөөд цул хэлбэрээр - Наффка. Dendrite-ийн P2P хувилбарыг бүтээх баримт бичгийг олж болно GitHub дээр.

Dendrite нь анхандаа шууд орлуулах зорилготой ерөнхий зориулалтын сервер байх зорилготой байсан Synapse, Python дээр бичигдсэн бөгөөд энэ нь гүйцэтгэл болон өргөтгөх чадварын асуудалтай. Гэвч Synapse-ийг дэмжих, томоохон рефактор хийх хэрэгцээ шаардлагаас болж Дендритийн хөгжил замдаа унасан. Эцэст нь хөгжүүлэлт дахин эхэлсэн боловч тэд одоо байгаа кодын баазыг ерөнхий зориулалтын хүрээнд биш харин хөтч, утас гэх мэт зөөврийн болон бага чадалтай үйлчлүүлэгчийн төхөөрөмжүүдэд суулгахад дасан зохицохоор шийджээ.

Dendrite-ийн одоогийн хэрэгжилт нь хөгжлийн эхний шатандаа байгаа боловч энгийн холбооны хувьд энэ нь аль хэдийн хангалттай юм.

Client-Server APIs: 34% (227/672 тест) - 33% -иас дээш
Холбооны API: 34% (35/103 тест) - 27% -иас дээш

Энэ нь P2P-ийг хэрэгжүүлэх анхны оролдлого биш юм. Өмнө нь бий болгох санаачилга гарч байсан Synapse-д зориулсан Yggdrasil сүлжээнд холбогдох CoAP прокси.


Матрицын протоколыг хөгжүүлэгчид зөвхөн холбоонд төвлөрсөн биш бөгөөд төвлөрлийг сааруулах хэрэгслүүдийг туршиж байна. Жишээлбэл, туршилт явуулсан тээврийн түвшинд зардлыг бууруулах. Чөтгөр хөгждөг Панталэймон - шифрлэлтийн дэмжлэггүй аливаа үйлчлүүлэгч холбогдож, шифрлэгдсэн мессежүүдтэй харилцах боломжтой прокси. Хийж буй бүх санаачилга нь ирээдүйд үүнийг хангахад чиглэгддэг сервер рүү нэвтрэх холболтоос ангижрах, MXID-г устгаж, Riot P2P-д аль хэдийн хэсэгчлэн хэрэгжсэн нийтийн түлхүүрийг ашиглан сүлжээтэй харилцах.


Төлөвлөсөн хэрэгжилтийн тухай ойлголтын талаар илүү дэлгэрэнгүй мэдээллийг авах боломжтой YouTube дээрх FOSDEM 2020 танилцуулгад и саяхны блог нийтлэл.

Хуучин програмын код дээр суурилсан Android-д зориулсан Riot P2P хувилбар бас бий. Цаашид одоогийнх руу шилжүүлэхээр төлөвлөж байна. RiotX.

Үүнээс гадна

Эх сурвалж: linux.org.ru