{"id":16912937,"url":"https://github.com/aborg-dev/mipt-distsys-reliablestorage","last_synced_at":"2026-05-20T10:37:36.806Z","repository":{"id":22781788,"uuid":"26127877","full_name":"aborg-dev/MIPT-DistSys-ReliableStorage","owner":"aborg-dev","description":"MIPT Distributed Systems Course homework","archived":false,"fork":false,"pushed_at":"2014-12-15T22:08:46.000Z","size":664,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-25T17:27:52.659Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aborg-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-03T16:34:50.000Z","updated_at":"2014-12-15T22:08:46.000Z","dependencies_parsed_at":"2022-08-21T12:30:58.665Z","dependency_job_id":null,"html_url":"https://github.com/aborg-dev/MIPT-DistSys-ReliableStorage","commit_stats":null,"previous_names":["aborg-dev/mipt-distsys-reliablestorage"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborg-dev%2FMIPT-DistSys-ReliableStorage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborg-dev%2FMIPT-DistSys-ReliableStorage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborg-dev%2FMIPT-DistSys-ReliableStorage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborg-dev%2FMIPT-DistSys-ReliableStorage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aborg-dev","download_url":"https://codeload.github.com/aborg-dev/MIPT-DistSys-ReliableStorage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244676317,"owners_count":20491827,"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":[],"created_at":"2024-10-13T19:11:34.465Z","updated_at":"2026-05-20T10:37:36.727Z","avatar_url":"https://github.com/aborg-dev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"MIPT Distributed Systems Course programming assignments repository\n\nIntroduction\n============\n\nThere are my solutions for Programming Exercises from MIPT Distributes Systems course. Written in C++/Java.\n\nCode contains implementation of simple replicated data storage.\n\nCollaboration Policy\n==========\n\nI opensourced this code because I believe it can help people learn something new and improve their skills.\nYou can use it on your conscience, but I encourage you not to copy-paste this sources and use\nthem only for educational purposes :)\n\nDescription\n============================\n\nSystem implements distributed replicated std::map\\\u003cstring, string\\\u003e.\n\nIt consists of two components:\n  - **Coordinator** - keeps track of data nodes, processes heartbeats, gives client information about current master node.\n  - **Server** - data node, stores data, replicates it, processes client's requests to put and get data\n\nDuring lifetime system has one Coordinator and several Servers.\n\nTo put/get data client talks to Coordinator to get address of current Master data node and then talks to corresponding data node with put/get requests.\n\nData nodes send heartbeats(pings) to Coordinator to get actual information about current Master and Backup data nodes.\n\nMaster node answers client requests and backups data to Backup node.\n\nBackup node mirrors Master node's put activity but doesn't answer client's requests.\n\nAPI\n============================\n  - **Coordinator**:\n    - **ViewInfo ping(i32 viewNum, string name)** - *Called by Server nodes on heartbeat. Returns current state info.*\n    - **string primary()** - *Returns current Master data node address.*\n  \n  - **Server**\n    - **void put(string key, string value)** - *Called by client, puts pair (key, value) into data storage*\n    - **void putBackup(string key, string value)** - *Called by Master on Backup, stores (key, value) pair on backup storage. Used for simplicity to distinguish put calls from client and put calls from Master.*\n    - **string get(string key)** - *Called by client, returns value stored by key*\n\nBuild Instructions\n============================\n\nCode succesfully builds on Archlinux and Ubuntu14.04\n\nDependencies:\n  - g++4.8\n  - boost\n  - JDK-7\n  - Apache Thrift\n  - Maven\n  \nFor quick test you can use my snapshot on terminal.com: https://www.terminal.com/tiny/TdAS98ytvc\n\nTo build on Ubuntu14.04:\n```bash\n  ./ubuntu_deps.sh\n  ./build.sh\n```\n\nTo run tests:\n```bash\n  ./run_coordinator_tests.sh\n  ./run_server_tests.sh\n```\n\nTo run Coordinator:\n```bash\n  ./build/coordinator 9090\n```\n\nTo run Data Server:\n```bash\n  ./build/server 9091\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faborg-dev%2Fmipt-distsys-reliablestorage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faborg-dev%2Fmipt-distsys-reliablestorage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faborg-dev%2Fmipt-distsys-reliablestorage/lists"}