ACLs (access control lists), 18-20
Rinda, 59-61
ActiveRecord model
callbacks, 54
MapReduce, 105-110
AMQP (Advanced Message Queueing Protocol), 163-165, 196
distributed loggers, building, 178-180
documentation, 168
fanout queues, 193-195
Hello World application, 167-178
message queues, subscribing to, 184-187
persisted queues, 180-184
Quison, 180
RabbitMQ
installing, 165-166
stopping, 168
topic queues, 187-192
Apache Hadoop project, MRToolkit, 104
applications
“Distributed Logger” example, 9-10
AMQP, 178-180
Distribunaut, 120-126
DRb, 7-9
Java RMI, 4-7
RingyDingy, 82-84
Starfish, 96-99
Starling, 157-158
distributed queuing services, Starfish, 99-103
“Hello World” example, 4-9
AMQP, 167-178
Distribunaut, 117-120
Rinda, 38-44
RingyDingy, 81-82
Starfish, 90-96
Starling, 155-157
security, 17-18
ACLs (access control lists), 18-20
SSL (Secure Sockets Layer), 21-28
“User Database Server” example, 11-16
configuring, 211-213
installing, 202-203
persisting tasks, 213-217
results, caching, 217-220
slow tasks, offloading, 203-211
binary, Starfish, 90-93
binding queues
fanout queues, AMQP, 193-195
topic queues, AMQP, 187-192
borrowing services, Distribunaut, 126-128
“Building Distributed Applications,” 131
builit-in ID converters, 29
DRb::DRbIdConv, 29-32
DRb::GWIdConv converter, 29
CA (Certificate Authority), 25, 36
caching BackgrounDRb results, Memcached, 217-220
callbacks, 53-55
ActiveRecord model, 54
implementing, 55-58
capturing exceptions, Hoptoad, 210
Carlson, Lucas, 87
Certificate Authority (CA), 25, 36
certificates
CA (Certificate Authority), 25, 36
SSL (Secure Sockets Layer), generating, 21-22
classes
MiddleMan, 207
SimpleRenewer, 72-73
Task, 100
User, 11
UserServer, writing, 11-12
clients, IP addresses and ports, hardcoding, 37
configuration
BackgrounDRb, 211-213
Starling, YAML, 149
connections, hardcoding, 37
consumer code, exiting, 173
Cook, Blaine, 148
custom Renewers, Rinda services, renewing, 73-74
custom workers, Delayed Job, 230-235
Daemons, 228
configuring, 237-239
custom workers, 230-235
deploying, 240
installing, 223-225
send_later method, 225-230
tasks, scheduling and prioritizing, 235-237
DeLeo, Dan, 180
deploying Delayed Job, 240
Design Patterns in Ruby, 58
Distribunaut, 115-116, 128-129
distributed loggers, building, 120-126
Hello World application, 117-120
installing, 116
services
avoiding confusion, 123-126
borrowing, 126-128
“Distributed Logger” example, 9-10
AMQP, 178-180
Distribunaut, 120-126
RingyDingy, 82-84
Starfish, 96-99
Starling, 157-158
distributed message queues
AMQP (Advanced Message Queueing Protocol), 163-165
building distributed loggers, 178-180
documentation, 168
fanout queues, 193-195
Hello World application, 167-178
installing RabbitMQ, 165-166
message queue subscriptions, 184-187
persisted queues, 180-184
Quison, 180
topic queues, 187-192
RabbitMQ, installing, 166
Starling, 145-147
distributed programming, xi
distributed queuing services, Starfish, 99-103
documentation, AMQP (Advanced Message Queueing Protocol), 168
DRb (Distributed Ruby), 3-4
advantages, 3
disadvantages, 4
“Hello World” example, 7-9
Java RMI, compared, 4-10
DRb::DRbIdConv converter, 29-32
DRb::GWIdConv converter, 29
DRbUndumped module, 15-17
encode method, 226
EventMachine, 176
examples
“Distributed Logger” example, 9-10
AMQP, 178-180
Distribunaut, 120-126
RingyDingy, 82-84
Starfish, 96-99
Starling, 157-158
distributed queuing services, Starfish, 99-103
“Hello World” example, 4-9
AMQP, 178-180
Distribunaut, 120-126
DRb, 7-9
Java RMI, 4-7
RingyDingy, 82-84
Starfish, 96-99
Starling, 157-158
security, 17-18
ACLs (access control lists), 18-20
SSL (Secure Sockets Layer), 21-28
“User Database Server” example, 11-16
exceptions, capturing, Hoptoad, 210
exchanges, queues, compared, 191
exiting code, 173
fanout queues, AMQP, 193-195
files, MapReduce, 110-112
find method, 12
GitHub.com, 230
Google MapReduce, 103
Gupta, Arman, 169
hardcoding, 37
“Hello World” application
AMQP, 167-178
Distribunaut, 117-120
DRb, 7-9
Java RMI, 4-7
Rinda, 38-44
RingyDingy, 81-82
Starfish, 90-96
Starling, 155-157
Hoptoad, 210
ID converters, 28-29
building, 33-34
built-in ID converters, 29
DRb::DRbIdConv, 29-32
DRb::GWIdConv converter, 29
multiple ID converters, using, 34-35
installation
BackgrounDRb, 202-203
Delayed Job, 223-225
Distribunaut, 116
Politics, 133
RabbitMQ, 165-166
RingyDingy, 79
Starfish, 87
Starling, 147
IP addresses, hardcoding, 37
Java RMI (remote method invocation), xi
Hello World” example, 4-7
Kumar, Hemant, 201
libraries
AMQP (Advanced Message Queueing Protocol), 163-165
building distributed loggers, 178-180
documentation, 168
fanout queues, 193-195
“Hello World” application, 167-178
installing RabbitMQ, 165-166
message queue subscriptions, 184-187
persisted queues, 180-184
Quison, 180
topic queues, 187-192
caching results, 217-220
configuring, 211-213
installing, 202-203
offloading slow tasks, 203-211
persisting tasks, 213-217
Daemons, 228
configuring, 237-239
custom workers, 230-235
deploying, 240
installing, 223-225
scheduling tasks, 235-237
send_later method, 225-230
Distribunaut, 115-116, 128-129
borrowing services, 126-128
building distributed loggers, 120-126
“Hello World” application, 117-120
installing, 116
caveats, 140
implementing, 135
installing, 133
TokenWorker module, 135-141
Quison, 180
RabbitMQ, installing, 166
building distributed loggers, 82-84
“Hello World” application, 81-82
installing, 79
Starfish, 87-89
binary, 90-93
building distributed loggers, 96-99
distributed queuing services, 99-103
“Hello World” application, 90-96
installing, 87
building distributed loggers, 157-158
configuring, 149
distributed message queues, 145-147
“Hello World” application, 155-157
installing, 147
Memcached, 158
retrieving statistics, 158-161
life cycles
requests, 9
pass by reference requests, 16
responses, 9
loggers. See distributed loggers
lookup method, 7
Lütke, Tobias, 223
MacPorts, RabbitMQ, installing, 166
managing RingServers, RingyDingy, 79-85
MapReduce
MRToolkit, 104
SkyNet, 104
Starfish, 103
ActiveRecord, 105-110
files, 110-112
marshaling. See serialization
mDNS, 132-133
Memcached, 132
Starling, compared, 158
message queues, subscriptions, AMQP, 184-187
messaging servers
AMQP (Advanced Message Queueing Protocol), 163-165
building distributed loggers, 178-180
documentation, 168
fanout queues, 193-195
“Hello World” application, 167-178
installing RabbitMQ, 165-166
message queue subscriptions, 184-187
persisted queues, 180-184
Quison, 180
topic queues, 187-192
RabbitMQ, installing, 166
building distributed loggers, 157-158
configuring, 149
distributed message queues, 145-147
“Hello World” application, 155-157
installing, 147
Memcached, 158
retrieving statistics, 158-161
methods
encode, 226
find, 12
lookup, 7
queue, 171
read, 43
send_later, 225-230
worker, 207
write, 43
MiddleMan class, 207
modules, DRbUndumped, 15-17
MRToolkit, MapReduce, 104
multiple ID converters, using, 34-35
nil, Rinda services, renewing, 72
numeric, Rinda services, renewing, 71-72
objects
ID converters, 28-29
building, 33-34
built-in ID converters, 29-32
multiple ID converters, using, 34-35
pass by reference, 14
pass by value, 14
proprietary objects, 10-16
serialization, 9
observers, 53-55
offloading slow tasks, BackgrounDRb, 203-211
Olsen, Russ, 58
pass by reference requests, 14
life cycles, 16
pass by value requests, 14
Perham, Mark, 131
persisted queues, AMQP, 180-184
persisting tasks, BackgrounDRb, 213-217
Pisoni, Adam, 104
caveats, 140
implementing, 135
installing, 133
TokenWorker module, 135-141
ports, hardcoding, 37
prioritizing tasks, Delayed Job, 235-237
proprietary objects, 10-16
publisher code, exiting, 173
queue method, 171
queues
exchanges, compared, 191
unbinding, 196
QuickCert, SSL certificates, generating, 21-22
Quison, 180
RabbitMQ, 196. See also AMQP
installing, 165-166
stopping, 168
read method, 43
referenced objects, ID converters, 28
building, 33
built-in ID converters, 29-32
multiple ID converters, 34-35
renewing Rinda services, 70-75
custom Renewers, 73-74
nil, 72
Numeric, 71-72
SimpleRenewer class, 72-73
requests
life cycles, 9
pass by value, 16
pass by reference requests, 16
responses, life cycles, 9
results, caching, Memcached, 217-220
callbacks, 53-55
implementing, 55-58
“Hello World” application, 38-44
observers, 53-55
RingServers, 38
building, 38-44
selecting, 63-70
security
ACLs (access control lists), 59-61
RingServers, 63-70
SSL (Secure Sockets Layer), 61-63
services, renewing, 70-75
Tuples, 40-44
hashes, 47-48
reading all in TupleSpaces, 52-53
reading from TupleSpaces, 45-47
taking from TupleSpaces, 48-52
writing to TupleSpaces, 44-45
TupleSpaces, 40-44
building, 38-44
managing, RingyDingy, 79-85
selecting, 63-70
distributed loggers, building, 82-84
“Hello World” application, 81-82
installing, 79
RingServers, managing, 79-85
Ruby Cookbook, 87
Ruby DRb, Java RMI, compared, 4-10
Ruby on Rails, xi
safe mode, levels, 18
scheduling tasks, Delayed Job, 235-237
Secure Sockets Layer (SSL). See SSL (Secure Sockets Layer)
security, 17-18
ACLs (access control lists), 18-20
Rinda
ACLs (access control lists), 59-61
RingServers, 63-70
SSL (Secure Sockets Layer), 61-63
SSL (Secure Sockets Layer), 21-28
certificate generation, 21-22
send_later method, 226
Delayed Job, 225-230
serialization, 9
servers
IP addresses, hardcoding, 37
ports, hardcoding, 37
security, 17-18
ACLs (access control lists), 18-20
SSL (Secure Sockets Layer), 21-28
services
borrowing, Distribunaut, 126-128
confusion, avoiding, 123-126
Rinda, renewing, 70-75
SimpleRenewer class, Rinda services, renewing, 72-73
SkyNet, MapReduce, 104
slow tasks, offloading, BackgrounDRb, 203-207, 209-211
SSL (Secure Sockets Layer), 21-28
certificates, generating, 21-22
Rinda, 61-63
binary, 90-93
distributed loggers, building, 96-99
distributed queuing services, 99-103
“Hello World” application, 90-96
installing, 87
MapReduce, 103
ActiveRecord, 105-110
files, 110-112
Starling, 145-146, 149-152, 162
configuring, 149
distributed loggers, building, 157-158
distributed message queues, 145-147
“Hello World” application, 155-157
installing, 147
Memcached, compared, 158
statistics, retreiving, 158-161
statistics, retrieving, Starling, 158-161
stopping RabbitMQ, 168
Task class, 100
tasks
offloading, BackgrounDRb, 203-211
persisting tasks, BackgrounDRb, 213-217
prioritizing, Delayed Job, 235-237
scheduling, Delayed Job, 235-237
TokenWorker module, Politics, 135-141
topic queues, AMQP, 187-192
hashes, 47-48
reading all, 52-53
reading from, 45-47
taking from, 48-52
writing to, 44-45
Tuples
reading all in, 52-53
reading to, 45-47
taking from, 48-52
writing from, 44-45
Twitter, Starling, 145
unbinding queues, 196
User class, 11
“User Database Server” example, 11-16
UserServer class, writing, 11-12
worker method, 207
workers, custom workers, Delayed Job, 230-235
write method, 43
YAML, Starling, configuring, 149
Zygmuntowicz, Ezra, 201
18.222.164.141