-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
206 lines (194 loc) · 11.3 KB
/
Copy pathindex.html
File metadata and controls
206 lines (194 loc) · 11.3 KB
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Polyglot, fault tolerant, balance and configurable HTTP client for distributed and reactive systems">
<meta name="keywords" content="http, protocol, resilient, reactive, elastic, reactive, distributed, balanced, balancer">
<meta name="robots" content="noindex, nofollow">
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">
<link rel="icon" href="images/favicon.ico" type="image/x-icon">
<title>Resilient HTTP - The fault tolerant HTTP client for reactive systems</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<link href="/styles/normalize.css" rel="stylesheet">
<link href="/styles/custom.css" rel="stylesheet">
<link href="/styles/main.css" rel="stylesheet" media="screen">
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<!--[if IE]>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<![endif]-->
<!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script><![endif]-->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-62540791-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<div class="navbar navbar-default navbar-static-top">
<div class="container">
<div>
<h1><a class="navbar-brand navbar-logo navbar-left" href="/">Resilient</a></h1>
</div>
<div>
<a class="btn navbar-btn navbar-btn-custom navbar-right" href="https://github.com/resilient-http/spec">Specification</a>
<a class="btn navbar-btn navbar-btn-custom navbar-right" href="#servers">Servers</a>
<a class="btn navbar-btn navbar-btn-custom navbar-right" href="#clients">Clients</a>
<a class="btn navbar-btn navbar-btn-custom navbar-right" href="https://github.com/resilient-http">Github</a>
</div>
</div>
<div class="jumbotron">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="jumbotron-content" style="opacity: 1;">
<h1 style="top: 1px;">A lightweight, middleware-oriented HTTP client designed for fault tolerant, distributed and reactive systems</h1>
<p class="lead">
The client of a system should not be burdened with handling its failures.
It should be reliable, responsive, elastic and fault tolerant.
Resilient is the smart HTTP client for the new era of reactive systems architectures.
</p>
<p>
<a class="btn btn-custom btn-lg" href="#introduction" role="button">Learn how it works</a>
<span class="invite-me-cta">or <a href="#clients">see the clients</a></span>
<span class="invite-me-cta">and <a href="#servers">compatible servers</a>
</span>
</p>
</div>
</div>
</div>
</div>
</div>
<div id="about">
<div class="container" id="introduction">
<h2 class="headline">Introduction</h2>
<p class="lead lead-custom">Organisations working in disparate domains are independently discovering patterns
for building software that look the same.
These systems are more robust, more resilient, more flexible and better positioned to meet modern demands.
</p>
<p class="lead lead-custom">The system stays responsive in the face of failure.
This applies not only to highly-available, mission critical systems — any system that is not resilient will be unresponsive after a failure</p>
<h2 class="headline">What about resilience?</h2>
<p class="lead lead-custom">
Acording to the <a href="http://reactivemanifesto.org">reactive manifesto</a>, resilience is achieved by replication, containment, isolation and delegation.
Failures are contained within each component, isolating components from each other
and thereby ensuring that parts of the system can fail and recover without
compromising the system as a whole.
</p>
<p class="lead lead-custom">
Recovery of each component is delegated to another (external)
component and high-availability is ensured by replication where necessary.
The client of a service is not burdened with handling its failures
</p>
<h2 class="headline">About</h2>
<p class="lead lead-custom">
<b>Resilient</b> takes the HTTP request control flow live-cycle in a transversal way
to guarantee end-to-end communication is performed successfully and
consistently between different HTTP nodes.
It will fallback and retry the request in case of failure, handling errors and status properly
and doing failover to the next best available server if required.
</p>
<h2 class="headline">Server discovering</h2>
<p class="lead lead-custom">
<b>Resilient</b> has built-in support for dynamic servers discovering, self refreshing and optional caching.
You could provide a list of servers which gives to the Resilient client a list of available URLs of your servers.
</p>
<h2 class="headline">Client-side based balancing</h2>
<p class="lead lead-custom">
<b>Resilient</b> aims to delegate the balancing logic responsabilities
in a proper and consistent way on the client-side, providing an extra layer of reliability
from the consumer side. It also has build-in support
for round robin scheduler in order to provide better load distribution across a pool of servers
</p>
<h2 class="headline">Effective emphirical communication</h2>
<p class="lead lead-custom">
<b>Resilient</b> clients store multiple parameters such as network latency, network errors and server errors
in order to determinate which is the potentially best available server on every request based
on emphirical information of previous communications.
This can increase in some scenarios the efficiency of the HTTP client when communicating with multiple backends.
</p>
<!--
<h2 class="headline">Polyglot</h2>
<p class="lead lead-custom">
<b>Resilient</b> wants to become a multi-language HTTP client.
There are plans to port the JavaScript client implementation to multiple languages such as Python, Ruby, Go, Clojure... in a near future, after the client specification have more madurity
</p>
-->
<h2 class="headline">How does it work?</h2>
<h3 class="headline">The request flow algorithm</h3>
<p class="lead lead-custom">The following algorithm diagram represents (from a high-level point of view) the complete HTTP request livecycle flow and logic encapsulated inside a Resilient client</p>
<p class="lead lead-custom">For more information, see the <a href="https://github.com/resilient-http/spec">draft specification</a> for both client and server interfaces</p>
<a href="/images/algorithm.svg"><img src="/images/algorithm.svg" width="900" /></a>
</div>
</div>
<div class="testimonial-wrap" id="clients">
<div class="container">
<h2 class="headline">Clients</h2>
<!--<p class="lead lead-custom">A list of Resilient multilanguage clients</p>-->
<div class="row">
<div class="col-sm-6 testimonial">
<div class="quote">
<h3><a href="https://github.com/resilient-http/resilient.js">JavaScript</a></h3>
<p>Resilient HTTP client for node/io.js and browsers (ES5 compliant)</p>
</div>
</div>
<div class="col-sm-6 testimonial">
<div class="quote">
<h3><a href="https://github.com/resilient-http/resilient.go">Go</a></h3>
<p>Resilient HTTP client written in Go.</p>
</div>
</div>
</div>
</div>
</div>
<div class="servers-wrap" id="servers">
<div id="" class="container">
<h2 class="headline">Lookup Servers</h2>
<div class="row">
<div class="col-lg-6 testimonial">
<div class="quote">
<h3><a href="https://consul.io/">Consul</a></h3>
<p>Service lookup and configuration made easy. Distributed, highly available, and datacenter-aware.</p>
</div>
</div>
<div class="col-lg-6 testimonial">
<div class="quote">
<h3><a href="https://github.com/h2non/resilient-server/">Resilient Server</a></h3>
<p>Dummy HTTP server based on the Resilient lookup protocol for testing/development</p>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<div class="container">
<div class="row">
<div class="col-sm-5">
<img class="footer-logo" src="/images/logo.png" alt="logo">
</div>
<div class="col-sm-6 col-sm-offset-1 col-md-offset-1">
<ul class="link-list" class="pull-right">
<li class="heading"></li>
<li>
<p class="pull-right">Brought to you with caffeine, passion and good music |
<a href="https://github.com/resilient-http" class="pull-right"><i class="fa fa-lg"></i> Github</a></p>
</li>
<li>
<p class="pull-right">© 2015 Resilient project contributors</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<script src="/scripts/jquery.min.js"></script>
<script src="/scripts/jquery.localScroll.min.js"></script>
<script src="/scripts/jquery.scrollTo.min.js"></script>
<script src="/scripts/bootstrap.min.js"></script>
<script src="/scripts/custom.js"></script>
</body>
</html>