-
-
Notifications
You must be signed in to change notification settings - Fork 19
/
testimonials.html
405 lines (401 loc) · 20.3 KB
/
testimonials.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
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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Netty: Testimonials</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<link href="./images/favicon.ico" rel="shortcut icon">
<link href="//feeds.feedburner.com/netty_project" rel="alternate" title="News Feed" type="application/rss+xml">
<style>
body {
padding-top: 60px;
}
</style>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" media="screen" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" media="screen" rel="stylesheet" type="text/css">
<script src="./lib/sh/scripts/shCore.js" type="text/javascript"></script>
<script src="./lib/sh/scripts/shBrushXml.js" type="text/javascript"></script>
<link href="./lib/sh/styles/shCore.css" rel="stylesheet" type="text/css">
<link href="./lib/sh/styles/shThemeDefault.css" rel="stylesheet" type="text/css">
<link href="./lib/common.css" rel="stylesheet" type="text/css">
<script src="./lib/common.js" type="text/javascript"></script>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js" type="text/javascript"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.3.0/respond.js" type="text/javascript"></script>
<![endif]-->
</head>
<body>
<a class="sr-only" href="#content" id="top">Skip navigation</a>
<nav class="navbar navbar-default navbar-fixed-top hidden-print" id="header" role="navigation">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggle" data-target=".navbar-collapse" data-toggle="collapse" type="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="./index.html">
<span class="navbar-brand-logo"></span>
Netty project
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="./news/2024/11/04/4-2-0-Beta1.html">
News
</a>
<ul class="dropdown-menu">
<li>
<a href="./news/index.html">
<i class="fa fa-archive"></i>
Archive
</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="./downloads.html">
Downloads
</a>
<ul class="dropdown-menu">
<li>
<a href="https://github.com/netty/netty/archive/refs/tags/netty-5.0.0.Alpha5.tar.gz">
<i class="fa fa-cloud-download"></i>
5.0.0.Alpha5
<small>‐ 28-Sep-2022</small>
</a>
</li>
<li>
<a href="https://github.com/netty/netty/archive/refs/tags/netty-4.2.0.Beta1.tar.gz">
<i class="fa fa-cloud-download"></i>
4.2.0.Beta1
<small>‐ 04-Nov-2024</small>
</a>
</li>
<li>
<a href="https://github.com/netty/netty/archive/refs/tags/netty-4.1.114.Final.tar.gz">
<i class="fa fa-cloud-download"></i>
4.1.114.Final
<small>‐ 01-Oct-2024</small>
</a>
</li>
<li>
<a href="https://github.com/netty/netty/archive/refs/tags/netty-4.0.56.Final.tar.gz">
<i class="fa fa-cloud-download"></i>
4.0.56.Final
<small>‐ 05-Feb-2018</small>
</a>
</li>
<li>
<a href="https://github.com/netty/netty/archive/refs/tags/netty-3.10.6.Final.tar.gz">
<i class="fa fa-cloud-download"></i>
3.10.6.Final
<small>‐ 29-Jun-2016</small>
</a>
</li>
<li>
<a href="https://www.tldrlegal.com/l/APACHE2">
<i class="fa fa-gavel"></i>
Apache License 2.0
</a>
</li>
<li>
<a href="https://github.com/netty/netty/releases">
<i class="fa fa-archive"></i>
Previous Releases
</a>
</li>
<li>
<a href="https://oss.sonatype.org/content/repositories/snapshots/io/netty/">
<i class="fa fa-flask"></i>
Nightly Builds
</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="./wiki/index.html">
Documentation
</a>
<ul class="dropdown-menu">
<li>
<a href="./wiki/user-guide.html">
<i class="fa fa-book"></i>
User guide
</a>
</li>
<li>
<a href="./5.0/api/index.html">
<i class="fa fa-file-text"></i>
Javadoc - 5.0
</a>
</li>
<li>
<a href="./4.2/api/index.html">
<i class="fa fa-file-text"></i>
Javadoc - 4.2
</a>
</li>
<li>
<a href="./4.1/api/index.html">
<i class="fa fa-file-text"></i>
Javadoc - 4.1
</a>
</li>
<li>
<a href="./4.0/api/index.html">
<i class="fa fa-file-text"></i>
Javadoc - 4.0
</a>
</li>
<li>
<a href="./3.10/api/index.html">
<i class="fa fa-file-text"></i>
Javadoc - 3.10
</a>
</li>
<li>
<a href="./wiki/all-documents.html">
<i class="fa fa-list"></i>
All Documents
</a>
</li>
<li>
<a href="./wiki/related-articles.html">
<i class="fa fa-bookmark"></i>
Related Articles
</a>
</li>
<li class="hidden-xs" id="bookpromo-dropdown">
<a href="https://www.manning.com/maurer/">
<img src="./images/netty-in-action.gif">
<br>
<small>
Use code <strong>mlnettyco</strong>
<br>
for a 37% discount!
</small>
</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="./community.html">
Get Involved
</a>
<ul class="dropdown-menu">
<li>
<a href="https://github.com/netty/netty">
<i class="fa fa-github-square"></i>
Github
</a>
</li>
<li>
<a href="https://stackoverflow.com/questions/tagged/netty">
<i class="fa fa-stack-overflow"></i>
StackOverflow
</a>
</li>
<li>
<a href="https://twitter.com/netty_project">
<i class="fa fa-twitter-square"></i>
@netty_project
</a>
</li>
<li>
<a href="./wiki/developer-guide.html">
<i class="fa fa-cogs"></i>
Developer Guide
</a>
</li>
<li>
<a href="https://discord.gg/GkGzzdQM5d">
<i class="fa fa-comment"></i>
Discord Server
</a>
</li>
<li>
<a href="./sponsor/thanks.html">
<i class="fa fa-usd"></i>
Sponsors
</a>
</li>
<li>
<a href="./wiki/adopters.html">
<i class="fa fa-users"></i>
Adopters
</a>
</li>
<li>
<a href="./wiki/related-projects.html">
<i class="fa fa-chain"></i>
Related Projects
</a>
</li>
</ul>
</li>
<li class="visible-xs" id="bookpromo-nav">
<a href="https://www.manning.com/maurer/">
<img src="./images/netty-in-action.gif">
<br>
<small>
Use code <strong>mlnettyco</strong>
<br>
for a 37% discount!
</small>
</a>
</li>
<li>
<a href="https://feeds.feedburner.com/netty_project">
<i class="fa fa-rss"></i>
</a>
</li>
</ul>
<form action="./search.html" class="navbar-form navbar-right hidden-sm" method="GET" onsubmit="return validateGlobalSearchQuery()" role="search">
<div class="form-group">
<input class="search-query form-control" id="global-search-query" name="q" placeholder="Search" type="text">
</div>
</form>
</div>
</div>
</nav>
<div id="content">
<div class="container">
<h1>Testimonials</h1>
<div class="alert alert-warning">This page is for an archival purpose only. We used to gather testimonials in the early days of the project. To see the reactions about Netty these days, please search Twitter with <a href="https://twitter.com/search?q=%40netty_project OR %23netty lang%3Aen"><b>#netty</b></a> tag and read <a href="wiki/related-articles.html">the articles about Netty</a>.</div>
<style scoped>
blockquote > p, blockquote > ul {
font-size: 100%;
margin-top: 1em;
}
blockquote {
margin-bottom: 0.5em;
}
div.author {
margin-bottom: 3em;
text-align: right;
}
</style>
<blockquote lang='en'>
<p>I work for a hedge fund who does extensive algo-trading and high frequency trading. We're anal-retentive when it comes to performance - everything is measured in sub-millisecond latencies.</p>
<p>Netty has played a significant role in our infrastructure - we're using it as our backend communication framework and we wrapped it with our own manager who relays data back and forth between the different stock markets and trading frontends. As for passing messages, we found the combination of Google Protocol Buffers and its support in Netty valuable to no extent, certainly when you consider that our server is Java-based, and clients are most often C#.</p>
<p>While I'm aware there are other frameworks out there, Netty really gives a sense of 'look-no-further'.</p>
<ul>
<li>Netty is super-fast. It's fast to the point (and beyond) that I'm more worrying about our code doing something inefficient than my networking framework. In precise measurements not once we've identified Netty as a bottleneck or remotely close to that.</li>
<li>Protocol Buffers + Netty are your best friends, enabling you design your protocol correctly, even more so if you're planning on a hybrid environment (e.g. Linux / Java as backend, mixed (C#, C++, Python) · hand-held · embedded clients or any combination of them).</li>
<li>Netty scales.</li>
<li>Netty is both straightforward to understand, and rather easy to extend and build upon.</li>
</ul>
</blockquote>
<div class='author'>
Shlomi Marco, Goldfish Fund and Investment Management, Ltd., June 23, 2010
</div>
<blockquote lang='en'>
<p>Netty proved instrumental in the architecture of a replacement of an existing high-speed server that parses and caches live streaming quotes. Under stress tests, the new server could parse and store in excess of 260,000 quotes/sec, a figure not remotely possible with blocking I/O. Netty's well-documented API, excellent examples and first-class support made development a pleasure and unlocked the power of Java NIO. It is, hands-down, my first choice for a networking library.</p>
</blockquote>
<div class='author'>
Greg Haines, <a rel="nofollow" href="http://www.ndr.com/">Ned Davis Research, Inc.</a>, May 28, 2010
</div>
<blockquote lang='en'>
<p>Eucalyptus uses Netty as the basis for its new (as of 1.6) web services stack implementation. The stack is a crucial part of Eucalyptus responsible for marshalling user requests, authentication, as well as streaming data (HTTP PUT/GET).</p>
<p>Netty has provided an effective framework (via pipelines) for organizing the varied code paths involved in message processing. Further, as an infrastructure component, Netty manages the select loop for all the sockets and the threading policy for all I/O events. In this role, Netty has delivered performance on the level of 10k concurrent clients meeting a critical performance milestone.</p>
<p>From a design perspective, the Netty pipeline abstraction and its properties of thread safety and dynamic mutability were fundamental to our implementation. A primary challenge facing our web service stack implementation is the variety of different message formats in which requests can be made. Specifically, Eucalyptus supports requests using the spectrum of EC2 API specifications (SOAP, Query, and REST) and two internal SOAP-based protocols. Each of these have different message marshalling and authentication schemes. Additionally, HTTP PUT/GET requests are again different from each of these by consisting of a sequence of requests, or responses, (HTTP chunks) rather than a single request-response pair. Netty's pipeline abstraction serves as the basis for organizing our dynamic protocol stack. Roughly, the stack consists of a static portion, which performs the processing common to all request types, and an unrolling stage, which selects and dynamically expands the pipeline with handlers specific to the request type. In this way, Eucalyptus uses Netty to provide a variety of protocol services via a single socket.</p>
<p>Netty's performance and robustness have been positive both relative to our old web services stack and in absolute terms. Relative to our previous web services stack we have seen improvements across the board in throughput, latency, and scalability for the initial implementation (1.6.1). In particular, the throughput of HTTP GET operations, which leverage Netty's file support, saw a 6x increase. Both latency (time to satisfy a request) and scalability (number of concurrent clients) improved, 2x (50ms) and ~200x+ (up to 4k concurrent clients w/ sub-20sec response time). Moreover, our stack has been subsequently been improved with an eye towards performance and yielded further improvements in latency (down to ~5ms) and concurrency (up to 10k w/ sub-20sec response time). Using Netty as the basis for our web services stack has brought a new level of performance and scale to Eucalyptus.</p>
</blockquote>
<div class='author'>
Chris Grzegorczyk, <a rel="nofollow" href="http://www.eucalyptus.com/">Eucalyptus Systems</a>, Feb 1, 2010
</div>
<blockquote lang='en'>
<p>I needed to develop a Flash game server which can effortlessly control many simultaneous Flash clients. I started out with Apache MINA. Although it worked fine, its development pace and bug fix was slow. I decided early on to make the jump to Netty because of the overall quality of the code, documentation and design. Switching to Netty was one of the best decisions in my project because Netty made it possible to keep the network logic simple and robust while keeping good performance.</p>
<p>Although the design of the Flash game server has been changed significantly since its beginning, Netty kept up easily with my changing demands. Netty provided whatever I wanted and did it very well.</p>
<p>Needless to say that Netty has a lot of 'power', it is also very pleasant and easy to use. Thank you Trustin for this gem of Java library. I wish more libraries were as solid as Netty.</p>
</blockquote>
<div class='author'>
Jan de Vries, Nov 21, 2009
</div>
<blockquote lang='en'>
<p>Trustin et al, you have delivered an excellent framework that demystified Java NIO, providing me with an elegant no nonsense API. My application, an HTTP proxy server with substitution exposing nearly 1700 external partner web sites though a single domain has been running problem free since August 2009.</p>
<p>As you can imagine, dealing with so many external HTTP server environments presented surprises. Netty was unrattled, providing seamless flexibility so we could accommodate each condition.</p>
<p>During development testing, the library has exceeded our expectations; now in production two load balanced servers easily serve thousands of concurrent customers without complaint. Each server, which has two 3GHz dual-core Xeon processors and 16GB RAM, has peaked at over 22,000 messages per second, with a throughput which has exceeded 120MB per second combined.</p>
<p>We found memory and CPU is nominal even during peak conditions. Given this, we decided to relax application developed governors that throttle activity based on I/O throughput and memory.</p>
</blockquote>
<div class='author'>
Dave Siracusa, <a rel="nofollow" href="http://www.perfware.com/">Perfware</a>, Nov 9, 2009
</div>
<blockquote lang='en'>
<p>I have been assigned the task of making our EMS server more scalable such that it can handle twice as much network elements as it currently does, keeping all functionality intact, using the same or lesser resources (CPU and RAM), meanwhile keeping the performance at par. When we started evaluating the various framework, we were looking for something that met the following criteria:</p>
<ul>
<li>At least 1 Major stable release</li>
<li>Easy to understand architecture and APIs</li>
<li>Well-documented Javadoc, user guide and examples</li>
<li>Built in SSL support</li>
<li>Shorter release cycle for faster turnaround on request for new features</li>
</ul>
<p>(...) It was very easy to develop the application with Netty, due to its intuitive APIs. The support from Trustin and Frederic was always very quick and accurate, which is very important for newbies like me. The turnaround time on reported issues on Netty is amazingly short, which makes Netty the right choice for me.</p>
<p>Currently, I have ported my Fault Application from old I/O to NIO and reaping the benefits of Netty, a look at CPU and memory makes the whole dev team smile. Thanks Netty community, one and all, for the smiles :)</p>
</blockquote>
<div class='author'>
Virat Gohil, <a rel="nofollow" href="http://www.airvana.com/">Airvana</a>, July 24, 2009
</div>
<blockquote lang='en'>
<p>Working on a telecom project, I was asked to develop a server side MSRP protocol stack to enable Chat, IM and Push to Share features for our product. Having little knowledge of Java NIO features, (...) I expected a steep learning curve. The Netty user guide got me up to speed in no time. The asynchronous, event driven model made perfect sense for my requirement. I finished the core stack implementation in 3 days flat. I implementated a custom codec to validate and decode / encode MSRP messages. The rest of it was mostly infrastructure code related to session management, connection management and channel handling. In all I wrote probably not more than eight classes. The whole stuff works like a charm with so little effort. Keep up the good work!</p>
</blockquote>
<div class='author'>
Souvik Dutta, <a rel="nofollow" href="http://www.spansystems.com/">SPAN Infotech</a>, July 23, 2009
</div>
<blockquote lang='en'>
<p>I'm the maintainer of jmemcached. Up until yesterday I was using Apache MINA. I spent one day switching over to Netty. I must say I'm happier. Things I liked:</p>
<ul>
<li>Clearer documentation</li>
<li>A saner API in many places, with better defaults</li>
<li>More active development cycle.</li>
</ul>
<p>After switching to Netty I had a 20% improvement in overall performance, and the code was much simpler. Now, much of the improvement in performance may have been because I had a chance to rewrite the decoder and likely produced better code, but that is also a good argument for Netty.</p>
</blockquote>
<div class='author'>
Ryan Daum, <a rel="nofollow" href="http://thimbleware.com/">thimbleWare</a>, June 11, 2009
</div>
<blockquote lang='en'>
<p>I have recently conducted performance and scalability tests with Netty 3.1.0.BETA2 for embedded HTTP server. Our product is currently under lab testing and is due for production soon. Using the Netty asynchronous HTTP API, we were able to support requests from 10000 simultaneous clients doing HTTP POST every 20 secs with an average 500 requests/sec on a 1-CPU, 1-GB RAM machine. Here's how Netty scored:</p>
<p>Netty API was very easy to use and documents and examples were more than adequate to switch from AsyncWeb to Netty in 1 day! We had tried to evaluate Grizzly also but Netty's API was simpler to understand and adopt.</p>
<p>Netty framework seems to be actively supported and quite stable. Apache, for example, is doing active development of the core MINA API but ever since taking over the AsyncWeb framework from Safehaus, there has been no official release for this HTTP framework from Apache. The Safehaus-version of AsyncWeb is no longer supported but is still the only official and stable release.</p>
<p>Compared to the Safehaus-version of AsyncWeb+MINA0.8, with Netty, our application had a much better CPU and memory graph. With that, we were able to support at least 2000 more clients.</p>
</blockquote>
<div class='author'>
Archanaa Panda, <a rel="nofollow" href="http://www.sisl.siemens.co.in/">Siemens Information Systems</a>, June 01, 2009
</div>
<blockquote lang='en'>
<p>Trustin et al, thank you very much for producing this excellent library that has allowed me to focus on my application while giving me the benefits of NIO for "free" through an event-based programming model, which was a perfect fit for my application. As of February 12th 2009, the application has been running in production since November 16th 2008 and allows us to maintain long-lived, stateful client connections that communicate with each other in an asynchronous manner.</p>
<p>During our lab testing, the library has displayed excellent performance characteristics, allowing us to service 50,000+ messages per second from approximately 30,000 connected clients on a commodity Intel server costing approximately $850. Even at that throughput level we were bandwidth-, not CPU-, limited on our server. In addition to the positive performance tests, our JVM has not been restarted since the initial go-live.</p>
</blockquote>
<div class='author'>
Matt Rhodes, RhoMoSoft, February 12, 2009
</div>
</div>
</div>
<div class="container">
<hr>
<div id="footer">
<p>
Copyright © 2024
<a href="./index.html">The Netty project</a>
</p>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js" type="text/javascript"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript"></script>
<script src="./lib/common.footer.js" type="text/javascript"></script>
<script type="text/javascript">
(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-95307-5', 'auto');
ga('require', 'displayfeatures');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');
</script>
</body>
</html>