You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Eduardo Freitas 9665db2f39 Adding licence notice in each file 1 month ago
application Adding licence notice in each file 1 month ago
middleware Adding licence notice in each file 1 month ago
.gitignore git wont get vim's swp nor emacs' archives 3 months ago
LICENSE client reqest handler and start of server rh 3 months ago
readme.org readme 3 months ago

readme.org

fdRPC

This is supposed to be a simple RPC middleware written in GoLang for my "Distributed Systems" class.

Middleware

The middleware will (maybe) respect design patterns and implement infrastructure, distribution and common services layers. There will be a client request handler, server request handler, requestor and marshaller. This is the "application neutral" part, where the middleware will not change acoording to the application/remote object. Then there is the client proxy and invoker, that relates directly to the application, wether its the client or remote object.

Application

The application will be a simple "weather" app. Previously, I made a weather application using OpenWeatherMap, implemented in GoLang's RPC. But performing an application performance evaluation was very difficult since the time measurament depended on the request and reply from openweathermaps' service. Since the class goal is to develop a middleware and compare its performance to existing ones, the application should depend only on the middleware, for simplicity's sake. So, in this scenario, there will be no real weather. The application will generate a fake struct containing some weather data and send to the client. This will be done so that the implementation can be done locally, and performance evaluation can evaluate only the middleware performance.

Code Structure

  1. Middleware
  2. Infrastructure
  3. Client Request Handler (application neutral)
  4. Server Request Handler (application neutral)
  5. Distribution
  6. Client Proxy
  7. Requestor (application neutral)
  8. Marshaller (application neutral)
  9. Invoker
  10. Common Services
  11. Naming Service
  12. Application
  13. Weather
  14. Server
  15. Client

General todo List

DONE Code

DONE Client Request Handler
DONE Server Request Handler
DONE Requestor
DONE Marshaler
DONE Weather Implementation
DONE Invoker (AS)
DONE Client Proxy (AS)
DONE Naming Service
DONE NamingProxy
DONE Application Server fdRPC
DONE Application Server GoLang RPC
DONE Application Client fdRPC
DONE Application Client GoLang RPC

DONE Performance Evaluation

DONE Presentation

Performance Evaluation

fdRPC

200 requests

187,366707ms

300 requests

15.228220265s -> 50ms delay/request
228,22026ms

500 requests

25.377409998s -> 50ms delay/request
377,40999ms

700 requests

35.535756s -> 50ms delay/request
535,75ms

1000 requests

50.765702959s -> 50ms delay/request
765,70295ms

GoRPC

200 requests

208.558417ms

300 requests

267.293393ms

500 requests

378.7313ms

700 requests

591.099404ms

1000 requests

706.734381ms