Beruflich Dokumente
Kultur Dokumente
PREFACE
This talk is not about new language per-se and neither any ads,
promotions or requests to use it, but feel free to make your own
conclusions.
This was my hobby project done in spare time to learn new ideas,
technique, technologies about concurrency
Compare Apples to Apples using CMS DAS service, i.e. write code for
real application in two languages and benchmark it on real user queries
using different technologies and same application design
single user query can resolve into N data-provider calls, currently we are
in 1:10 - 1:100 regime
single request requires multiple APIs, URLs, parsers and perform work in
parallel
DAS client uses retry approach, place request and wait for results via
periodic check of request id
DAS STATISTICS
2.5-3x
PROBLEM
queries can become more complex size wise/number of calls to dataproviders, we are going to have more data, didnt we?
We can scale horizontally but it does not resolve issues with burst of
concurrent requests, neither allow to utilize all CPU on a server
POSSIBLE SOLUTION
APPLES TO APPLES
PERFORMANCE
Client time
600
Server time
Pyserver, trial 1
150
Pyserver, trial 2
Goserver, trial 1
Goserver, trial 2
400
100
200
50
0
0
100
200
number of clients
300
100
200
number of clients
file dataset=/A/B/C queries, 300 clients, 300 queries => 80k files
300
DAS Go-server
DAS_GO cpu statistics
50
150
CPU (%)
80
40
0
CPU (%)
120
250
100
200
300
400
500
600
10
20
30
time (sec)
time (sec)
40
3
1
MEM (%)
5
4
3
MEM (%)
100
200
300
time (sec)
400
500
600
10
20
time (sec)
30
40
200
150
100
50
0
0
10
20
30
40
50
number of clients
GO CODE
Reach standard library, e.g. no need to write web server, thread pool, processes
FAST, REALLY FAST compile time into static executable. Entire DAS server fits in 10MB
executable file and takes only 2 seconds to compile.
SUMMARY
Hobby project shows real potential for server side application (DAS
server):
Run and scale on all CPUs natively, concurrency part of the language
Learn Go syntax: 1 hour, reaching master level will vary on your ability
Current DAS server is limited by GIL, hard to handle more than 300 clients
at once. Go DAS server can easily scale to larger load, tested with 1000
clients on a single node.
REFERENCES
Go language
CSP model:
http://golang.org
http://en.wikipedia.org/wiki/Communicating_sequential_processes
https://vimeo.com/49718712
http://concur.rspace.googlecode.com/hg/talk/concur.html
http://talks.golang.org/2012/concurrency.slide