Jini is a tool for building SOA's. The Master/Worker pattern is a common one in Jini systems.
Generic Virtual Data Access Layer (SOA)
Generic Virtual Data Access Layer (SOA)
- Distributed data, bring together (left joins?)
- Data is federated (many masters)
- Expose common Grid-like API for clients (JAR), or WebServices, or even JDBC
- Needs virtual data dictionary, metadata to describe data, to glue together
- Decompose data access into generic workers -- break down request/response into many sub-tasks
- Decouple SQL query generation from execution
- Distribute workers, get parallelism
- Parallelize transaction w/o losing FIFO ordering, and still getting 100% reliability
- Clustered JavaSpaces -- make several instances. Make reliable by replicating data in these instances.
- Build smart proxy that handles JavaSpace client requests, and distributes work into JavaSpaces cluster
- Automate deployment and restart of JavaSpace instances, using dynamic service-grid architecture -- gets you dynamic scalablity (apache httpd forking style)
- memory was expensive -- not anymore
- Bandwidth was a bottleneck -- not anymore (GigE, 10Gig)
- Commodity HW finally enterprise grade
- design grid applications incrementally with Jini and JavaSpaces
- from programmers perspective:
- how design application?
- how implement the design?
- too much talk about design, not enough about programming
- Good design always starts with something simple and evolves -- Jini and JavaSpaces make this easy: loosely coupled components, dynamic and flexible infrastructure
- Features can be added as needed
- master-worker pattern based compute farm
- A layer of abstraction over JavaSpaces API and Jini programming model
- Framework class design
- Decomposer - concrete class will decide what correct subtask size is
- Distributor
- Calculator (processor)
- Collector
- Task
- Result
- Communicator - communication and synchronization among compute nodes
- have to consider user interface for the programme
- How can we take POJO model and bring it to Jini/JavaSpaces?
- Get a lot of power in POJO approach, because we decouple from underlying system (be it Jini, J2EE, etc.)
- Spring can do remoting without API via exporters on server side, proxies on client side (talk to exporters)