-
Notifications
You must be signed in to change notification settings - Fork 0
/
developer-guide.html
137 lines (137 loc) · 6.43 KB
/
developer-guide.html
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="description" content="JobStreamer : JobStreamer site."/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/semantic-ui/2.1.8/semantic.min.css" type="text/css"/>
<link rel="stylesheet" href="css/basic.css" type="text/css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/prism/1.5.0/themes/prism.css" type="text/css"/>
</head>
<body>
<div class="ui fixed inverted teal menu">
<div class="title item"><a href="./index.html"><b>Job Streamer</b></a></div>
</div>
<div/>
<div id="main_content_wrap" class="main ui grid content">
<div class="four wide column">
<div class="ui vertical fluid tabular menu">
<a class="item" href="get-started-quickly.html">
Getting Started
</a>
<div class="item">
<div class="header">Guide</div>
<div class="menu">
<a class="item" href="auth.html">
Authentication and authorization
</a>
<a class="item" href="deploy-batch-components.html">
Deploy batch components
</a>
<a class="item" href="create-a-job.html">
Create job
</a>
<a class="item" href="execute-the-job.html">
Execute job
</a>
<a class="item" href="schedule-job.html">
Schedule job
</a>
<a class="item" href="job-config.html">
Job config
</a>
<a class="item" href="notificator-config.html">
Notificator config
</a>
<a class="item" href="import-export.html">
Import and export
</a>
<a class="item" href="test-mode.html">
Test mode
</a>
<a class="item" href="healthcheck.html">
Healthcheck
</a>
</div>
</div>
<div class="item">
<div class="header">Components</div>
<div class="menu">
<a class="item" href="control-bus.html">
Control bus
</a>
<a class="item" href="agent.html">
Agent
</a>
<a class="item" href="console.html">
Management console
</a>
<a class="item" href="notificator.html">
Notificator
</a>
</div>
</div>
<div class="item">
<div class=" header">For contributers</div>
<div class="menu">
<a class="item" href="get-started-developer.html">
Getting Started for contributers
</a>
<a class="item" href="developer-guide.html">
Developer guide for contributers
</a>
</div>
</div>
</div> </div>
<div class="twelve wide stretched column">
<h1><a href="#developer-guide-for-contributers" name="developer-guide-for-contributers">Developer guide for contributers</a></h1><h2><a href="#format-policy" name="format-policy">Format policy</a></h2>
<ul>
<li>All of exchange data is done using <a href="https://github.com/edn-format/edn">EDN Format</a>.(In comparison with the JSON, there is an advantage that it is possible to have a type of <code>Date</code> and <code>UUID</code> .)</li>
<li>Map key in EDN is keyword with entity’s name-space. (Easy to understand when see only data.)</li>
</ul><h2><a href="#interface-policy" name="interface-policy">Interface policy</a></h2>
<ul>
<li>Both Agent and Control bus use REST API as interface.(for enable tool-development Other than Console)</li>
<li>Must call from Control bus to Agent API.Don’t call reverse.</li>
</ul><h2><a href="#connection-policy" name="connection-policy">connection policy</a></h2>
<ul>
<li>In order to Improve responsivility of Agent,WebSocket connect bus from agent to Control.</li>
<li>Consideration of failure,WebSocket doesn’t exchange data,only notification.</li>
<li>Monitoring dead-or-alive and performance of Agent is done through WebSocket.</li>
<li>In order to make Agent be no configuration,detect Control bus address automatically.
<ol>
<li>Agent broadcast its own address when process starts.</li>
<li>When Control bus catch broadcast from Agent, send connection<br/>request to Agent.</li>
<li>Agent that recieve connection request try to connect control bus<br/>on WebSocket.</li>
</ol></li>
<li>When close connection from Agent to Control bus,Agent restart broadcast,so that even if switch Control bus stand-by,switch connection automatically.</li>
</ul><h2><a href="#persitence-policy" name="persitence-policy">Persitence policy</a></h2>
<ul>
<li>All data flowing at Control bus are stored in Datomic.</li>
<li>Accessing to Datomic is allowed only from Control bus.</li>
</ul><h2><a href="#if-you-want-more-safely-structure" name="if-you-want-more-safely-structure">If you want more safely structure</a></h2>
<ul>
<li>Because <a href="https://github.com/kawasima/websocket-classloader">WebSocketClassLoader</a> is eccentric structure,enable useing application deploying to Agent.<br/>In this case,If bypass ClassLoder configuation,Agent’s local context ClassLoder is used.<br/>In this way,enable to use JobStreamer as job scheduler.</li>
<li>Job’s execution log is sent to Control bus and stored in Datomic in the default setting.</li>
<li>Depending on logback setting, be able to write log into local file of Agent or Control bus.</li>
</ul>
</div>
</div>
<div class="ui inverted teal footer vertical segment">
<div class="container">
<div class="ui stackable divided relaxed grid">
<div class="sixteen wide column">
<p>Copyright @ 2015-2016 kawasima & contributors.</p>
<p>Released under the EPL license.</p>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/jquery/1.12.3/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/prism/1.5.0/prism.js"></script>
<script src="https://cdn.jsdelivr.net/prism/1.5.0/components/prism-java.min.js"></script>
<script src="https://cdn.jsdelivr.net/prism/1.5.0/components/prism-bash.min.js"></script>
<script src="https://cdn.jsdelivr.net/prism/1.5.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
<script src="https://cdn.jsdelivr.net/semantic-ui/2.1.8/semantic.min.js"> </script>
</body>
</html>