https://github.com/sciprogcentre/communicator
Polyglot and distributed scientific function call library
https://github.com/sciprogcentre/communicator
distributed-systems jetbrains-research kotlin rpc
Last synced: 9 months ago
JSON representation
Polyglot and distributed scientific function call library
- Host: GitHub
- URL: https://github.com/sciprogcentre/communicator
- Owner: SciProgCentre
- Created: 2020-09-11T13:35:41.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-08-24T20:03:55.000Z (over 4 years ago)
- Last Synced: 2025-05-30T19:18:31.148Z (10 months ago)
- Topics: distributed-systems, jetbrains-research, kotlin, rpc
- Language: Kotlin
- Homepage:
- Size: 1.43 MB
- Stars: 6
- Watchers: 1
- Forks: 2
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# communicator
Modern applications, in particular scientific ones, besides transferring information with common application protocols,
often need the organization of remote procedure calling (RPC).
Typical techniques of implementing RPC involve interprocess communication technologies including Component Object Model
(COM), direct Unix socket usage, shared memory, cumbersome foreign function interfaces—e.g., a manual combination
of JNI, intermediate C API, and `ctypes` bindings to invoke a Java function from Python—as well as designing
custom protocols based on HTTP, WebSockets or gRPC. In some cases, even raw TCP networking is used.
To conveniently implement RPC, it is useful to create a cross-language API to register and call functions with tight
transport-level abstraction.
As part of JetBrains Research summer internships, and architecture of the application was designed. It involves a
so-called client that receives the result of the operation, the contractor for general data-related procedures, and
functional servers for providing mathematical and statistical functions implementations to the contractors. This model
allows one to lift out mathematical transformations from the main logic. Functional servers can be set up either
remotely or locally, encapsulated with proxy middleware, and get launched independently of the contractor. In this
project, a prototype of API to build contractors and functional servers in Kotlin implemented.