39 |
|
|
40 |
- currently Tapestry_ implements the DOLR abstracion |
- currently Tapestry_ implements the DOLR abstracion |
41 |
- other abstraction can be implemented also (e.g., DHT) |
- other abstraction can be implemented also (e.g., DHT) |
42 |
|
- efficient way for nodes to communicate across an overlay and effcient object |
43 |
|
location |
44 |
- objects are *published* with object to location mappings (pointers) |
- objects are *published* with object to location mappings (pointers) |
45 |
- differs from DHTs in that always use the closest available object |
- differs from DHTs in that always use the closest available object |
46 |
- routing table consists of levels of neighbor links |
- routing table consists of levels of neighbor links |
79 |
Overview of Tapestry API |
Overview of Tapestry API |
80 |
======================== |
======================== |
81 |
|
|
82 |
TapestryPublishMsg ( ObjectGUID ) |
According to the `Tapestry website`_, there are four main API services in |
83 |
TapestryUnpublishMsg ( ObjectGUID ) |
Tapestry that are used by other applications: |
|
TapestryRouteMsg ( NodeGUID ) |
|
|
TapestryLocateMsg ( ObjectGUID ) |
|
84 |
|
|
85 |
.. descriptions... |
PublishObject(O_GUID): |
86 |
|
publish, or make available, object O on the local node. This call is best |
87 |
|
effort, and receives no confirmation. |
88 |
|
|
89 |
|
UnpublishObject(O_GUID): |
90 |
|
Best-effort attempt to remove location mappings for O. |
91 |
|
|
92 |
|
RouteToObject(O_GUID): |
93 |
|
Routes message to location of an object with GUID O_GUID |
94 |
|
|
95 |
|
RouteToNode(N_ID, Exact): |
96 |
|
Route message to node N. "Exact" specifies whether destination ID needs to |
97 |
|
be matched exactly to deliver payload. |
98 |
|
|
99 |
|
|
100 |
Using Tapestry API from other applications |
Using Tapestry API from other applications |
146 |
|
|
147 |
- in this section, we will outline the design which would allow Storm to |
- in this section, we will outline the design which would allow Storm to |
148 |
Tapestry's routing services |
Tapestry's routing services |
149 |
|
|
150 |
|
|
151 |
|
|
152 |
|
- For finding Storm blocks in a Tapestry overlay, we must create: |
153 |
|
|
154 |
|
|
155 |
|
- BlockIDTag class for Storm blocks' IDs (ostore.tapestry.api.TapestryTag) |
156 |
|
|
157 |
|
- BlockIDQuery (implements ostore.tapestry.api.TapestryQuery) class is |
158 |
|
used in a StormLocateMsg class (and in ostore.tapestry.api.TapestryLocateMsg) |
159 |
|
to find objects identified by a BlockIDTag |
160 |
|
|
161 |
|
- StormLocateMsg class (extends ostore.tapestry.api.TapestryLocateMsg) |
162 |
|
|
163 |
|
- For interacting Storm's storage model with Tapestry: |
164 |
|
|
165 |
|
- StormTapestryManager class which |
166 |
|
- registers Storm to handle Storm-related Tapestry events |
167 |
|
- dispatches and handles Storm-related Tapestry events |
168 |
|
|
169 |
.. more to come |
.. more to come |
170 |
|
|
171 |
Changes |
Changes |
175 |
|
|
176 |
.. _`Tapestry programmer's guide`: http://www.cs.berkeley.edu/%7Eravenben/tapestry/html/guide.html |
.. _`Tapestry programmer's guide`: http://www.cs.berkeley.edu/%7Eravenben/tapestry/html/guide.html |
177 |
.. _Tapestry: http://www.cs.berkeley.edu/~ravenben/publications/pdf/tapestry_jsac.pdf |
.. _Tapestry: http://www.cs.berkeley.edu/~ravenben/publications/pdf/tapestry_jsac.pdf |
178 |
|
.. _`Tapestry website`: http://www.cs.berkeley.edu/~ravenben/tapestry/ |