File: rep_ex_chan.html

package info (click to toggle)
db5.3 5.3.28%2Bdfsg1-0.5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 158,360 kB
  • sloc: ansic: 448,411; java: 111,824; tcl: 80,544; sh: 44,326; cs: 33,697; cpp: 21,604; perl: 14,557; xml: 10,799; makefile: 4,077; yacc: 1,003; awk: 965; sql: 801; erlang: 342; python: 216; php: 24; asm: 14
file content (214 lines) | stat: -rw-r--r-- 8,723 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Ex_rep_chan: a Replication Manager channel example</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
    <link rel="up" href="rep.html" title="Chapter 12.  Berkeley DB Replication" />
    <link rel="prev" href="rep_ex_rq.html" title="Ex_rep_base: putting it all together" />
    <link rel="next" href="xa.html" title="Chapter 13.  Distributed Transactions" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Ex_rep_chan: a Replication Manager
channel example</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="rep_ex_rq.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 12. 
		Berkeley DB Replication
        </th>
          <td width="20%" align="right"> <a accesskey="n" href="xa.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="rep_ex_chan"></a>Ex_rep_chan: a Replication Manager
channel example</h2>
          </div>
        </div>
      </div>
      <p>
    Ex_rep_chan, found in the <code class="filename">examples/c/ex_rep_chan</code>
    subdirectory of the Berkeley DB distribution, is a simple but complete
    demonstration of a replicated application that uses the Replication
    Manager feature of channels to perform write forwarding.  The
    application is a mock stock ticker.  Although similar to the ex_rep_mgr
    example program, this example differs in that it provides an example of
    using Replication Manager message channels.  Any site accepts a command
    to write data to the database.  If the site is a client, then, using
    the channels feature, the application forwards the request to the
    master site. If the site is a master then the request is automatically
    handled locally.  You can read and write stock values at any site
    without needing to know what site is currently the master.
</p>
      <p>
    The set of supported commands can be viewed with either the 
    <span class="bold"><strong>help</strong></span> or the 
    <span class="bold"><strong>?</strong></span> command.  Several commands work with
    key/data pairs where the key is a stock symbol and the data is its
    value.
</p>
      <p>
    The command to retrieve and print the current site's database contents
    is <span class="bold"><strong>print</strong></span> or simply an empty input
    line.  To read the contents of the master's database from any site use
    the <span class="bold"><strong>get key key ...</strong></span> command.  That
    command will forward the read request to the master if necessary and
    return the key/data pairs for all given keys.
</p>
      <p>
    There are two commands to put data into the database. Both commands
    take one or more key/data pairs, all of which are written into the
    database in a single transaction at the master site.  The 
    <span class="bold"><strong>put</strong></span> command sends the data to the
    master site, and simply waits for a status response.  The 
    <span class="bold"><strong>put_sync</strong></span> command sends the data to the
    master site, and uses a transaction token returned by the master to
    wait for the contents of that put to be available on the local
    site. This serves as a demonstration of the 
    <a class="link" href="rep_ryw.html" title="Read your writes consistency">read your writes</a> consistency feature.
</p>
      <p>
    The Makefile created by the standard UNIX configuration will build the
    ex_rep_chan example on most platforms.  Enter "make ex_rep_chan" to
    build it.
</p>
      <p>
    The synopsis for the program is as follows:
</p>
      <p>
<code class="literal">ex_rep_chan <span class="bold"><strong>-h home</strong></span> <span class="bold"><strong>-l host:port</strong></span> [<span class="bold"><strong>-MC</strong></span>] [<span class="bold"><strong>-r host:port</strong></span>] [<span class="bold"><strong>-R host:port</strong></span>] [<span class="bold"><strong>-p priority</strong></span>] [<span class="bold"><strong>-v</strong></span>]</code>
</p>
      <p>
    The options are as follows:
</p>
      <div class="variablelist">
        <dl>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-h</strong>
              </span>
            </span>
          </dt>
          <dd>Specify a home directory for the database environment.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-l</strong>
              </span>
            </span>
          </dt>
          <dd>Listen on local host "host" at port "port" for incoming connections.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-M</strong>
              </span>
            </span>
          </dt>
          <dd>Configure this process as a master.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-C</strong>
              </span>
            </span>
          </dt>
          <dd>Configure this process as a client.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-r</strong>
              </span>
            </span>
          </dt>
          <dd>
            Identifies the helper site used for joining the group.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-R</strong>
              </span>
            </span>
          </dt>
          <dd>
            Identifies a remote peer to be used for joining the group. This
            peer is used for syncing purposes.  See 
            <a class="xref" href="rep_mastersync.html#rep_c2c_sync" title="Client-to-client synchronization">Client-to-client synchronization</a>
            for more information.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-p</strong>
              </span>
            </span>
          </dt>
          <dd>
            Set the election priority.  See 
            <a class="xref" href="rep_elect.html" title="Elections">Elections</a> for more
            information.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-v</strong>
              </span>
            </span>
          </dt>
          <dd>
            Indicates that additional informational and debugging output
            should be enabled.
        </dd>
        </dl>
      </div>
      <p>
    A typical ex_rep_chan session begins with a command such as the
    following, to start a master:
</p>
      <pre class="programlisting">ex_rep_chan -M -h DIR1 -l localhost:30100</pre>
      <p>
    and several clients:
</p>
      <pre class="programlisting">ex_rep_chan -C -h DIR2 -l localhost:30101 -r localhost:30100
ex_rep_chan -C -h DIR3 -l localhost:30102 -r localhost:30100
ex_rep_chan -C -h DIR4 -l localhost:30103 -r localhost:30100</pre>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="rep_ex_rq.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="rep.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="xa.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Ex_rep_base: putting it all together </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Chapter 13. 
		Distributed Transactions
        </td>
        </tr>
      </table>
    </div>
  </body>
</html>