{"id":15649351,"url":"https://github.com/jgantunes/pulsarcast","last_synced_at":"2025-04-13T20:52:42.866Z","repository":{"id":68167926,"uuid":"80482929","full_name":"JGAntunes/pulsarcast","owner":"JGAntunes","description":"A pub-sub system for the distributed web - my master thesis @ IST","archived":false,"fork":false,"pushed_at":"2021-09-24T08:09:04.000Z","size":43866,"stargazers_count":39,"open_issues_count":2,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-12T04:22:54.474Z","etag":null,"topics":["decentralized","delivery-guarantees","libp2p","p2p","persistence","pubsub","reliability","scalability","thesis"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JGAntunes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-01-31T01:58:17.000Z","updated_at":"2024-02-05T10:34:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"dc7d6ec4-201d-40c7-91b8-d7c4ee81c8ce","html_url":"https://github.com/JGAntunes/pulsarcast","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JGAntunes%2Fpulsarcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JGAntunes%2Fpulsarcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JGAntunes%2Fpulsarcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JGAntunes%2Fpulsarcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JGAntunes","download_url":"https://codeload.github.com/JGAntunes/pulsarcast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248782283,"owners_count":21160716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["decentralized","delivery-guarantees","libp2p","p2p","persistence","pubsub","reliability","scalability","thesis"],"created_at":"2024-10-03T12:29:21.831Z","updated_at":"2025-04-13T20:52:42.835Z","avatar_url":"https://github.com/JGAntunes.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `Pulsarcast`\n## `Scalable and reliable pub-sub over P2P networks`\n\n- João Antunes M.Sc Thesis\n- Institutions:\n  - [Universidade de Lisboa, Instituto Superior Técnico](https://tecnico.ulisboa.pt)\n  - [INESC-ID Lisboa (Distributed Systems Group)](https://www.gsd.inesc-id.pt)\n- Advisors: \n  - [Luís Veiga](http://www.gsd.inesc-id.pt/~lveiga/)\n  - [David Dias](http://daviddias.me/)\n- 2017-2021\n\n## Implementation\n\n[JS-Pulsarcast](https://github.com/JGAntunes/js-pulsarcast) - A javascript implementation of pulsarcast, using [libp2p](https://github.com/libp2p/js-libp2p)\n\n## Project Description\n\n**Abstract**\n\nThe publish-subscribe paradigm is a wildly popular form of communication in\ncomplex distributed systems. The properties offered by it make it an ideal\nsolution for a multitude of applications, ranging from social media to content\nstreaming and stock exchange platforms. Consequently, a lot of research exists\naround it, with solutions ranging from centralised message brokers, to fully\ndecentralised scenarios (peer to peer).\n\nWithin the pub-sub realm not every solution is the same of course and\ntrade-offs are commonly made between the ability to distribute content as fast\nas possible or having the assurance that all the members of the network will\nreceive the content they have subscribed to. Delivery guarantees is something\nquite common within the area of centralised pub-sub solutions, there is,\nhowever, a clear lack of decentralised systems accounting for this.\nSpecifically, a reliable system with the ability to provide message delivery\nguarantees and, more importantly, persistence guarantees. To this end, we\npresent Pulsarcast, a decentralised, highly scalable, pub-sub, topic based\nsystem seeking to give guarantees that are traditionally associated with a\ncentralised architecture such as persistence and eventual delivery guarantees.\n\nThe aim of Pulsarcast is to take advantage of the network infrastructure and\nprotocols already in place. Relying on a structured overlay and a graph based\ndata structure, we build a set of dissemination trees through which our events\nwill be distributed. Our work also encompasses a software module that\nimplements Pulsarcast, with our experimental results showing that is a viable\nand quite promising solution within the pub-sub and peer to peer ecosystem.\n\n## Documents\n\n- Final thesis work\n  - [Final Thesis Document](./thesis/dissertation.pdf) - final thesis report with related work, description of our solution and evaluation\n  - [ACM 13 Page, 2 column, Paper Format](./paper/paper.pdf)\n  - [ACM 10 Page, 2 column, Summary (required by Técnico for administrative reasons)](./paper/paper.pdf)\n  - [Final Thesis Presentation (slideshare)](https://www.slideshare.net/JooAntunes37/pulsarcast-scalable-and-reliable-pubsub-over-p2p-networks)\n  - [Final Thesis Presentation (pdf)](./thesis/presentation.pdf)\n  - [Covered Literature](./bibliography/dissertation.bib)\n\n- Initial research work and project proposal:\n  - [Thesis Project Document](./project-report/report.pdf) - initial report covering related work and proposed solution\n  - [Thesis Project Presentation](https://www.slideshare.net/JooAntunes37/pulsarcast-scaling-pubsub-over-the-distributed-web)\n\n## Publications \u0026 Talks\n\n- [J. Antunes, D. Dias and L. Veiga, \"Pulsarcast: Scalable, Reliable Pub-Sub over P2P Nets,\" 2021 IFIP Networking Conference (IFIP Networking), 2021, pp. 1-6, doi: 10.23919/IFIPNetworking52078.2021.9472799.](https://ieeexplore.ieee.org/document/9472799)\n  - [Paper](http://dl.ifip.org/db/conf/networking/networking2021/1570711719.pdf)\n- [Pulsarcast: Scalable and reliable pub-sub over P2P networks](https://www.youtube.com/watch?v=D2UKQPKMjr4) - Protocol Labs research talk\n- [Testing P2P Applications with Kubernetes and Toxiproxy](https://www.youtube.com/watch?v=pP0fS-FCsjE) - IPFS community talk\n\n## Acknowledgements\n\nThis work was developed at [INESC-ID Lisboa (Distributed Systems Group)](https://www.gsd.inesc-id.pt), [Instituto Superior Técnico, Universidade de Lisboa](https://www.gsd.inesc-id.pt).\n\nA very special thank you to Microsoft Azure (and specially [@palma21](https://github.com/palma21)) for supporting our evaluation efforts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgantunes%2Fpulsarcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgantunes%2Fpulsarcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgantunes%2Fpulsarcast/lists"}