WORKER POOL IN GO A SIMPLE WORKER POOL IN GO ABOUT ME Adam - - PowerPoint PPT Presentation

worker pool in go
SMART_READER_LITE
LIVE PREVIEW

WORKER POOL IN GO A SIMPLE WORKER POOL IN GO ABOUT ME Adam - - PowerPoint PPT Presentation

A SIMPLE WORKER POOL IN GO A SIMPLE WORKER POOL IN GO ABOUT ME Adam Presley Father Software engineer A SIMPLE WORKER POOL IN GO AGENDA Discuss designing for concurrency Using Go language types Review code Demo A


slide-1
SLIDE 1

WORKER POOL IN GO

A SIMPLE

slide-2
SLIDE 2

A SIMPLE WORKER POOL IN GO

ABOUT ME

▸ Adam Presley ▸ Father ▸ Software engineer

slide-3
SLIDE 3

A SIMPLE WORKER POOL IN GO

AGENDA

▸ Discuss designing for concurrency ▸ Using Go language types ▸ Review code ▸ Demo

slide-4
SLIDE 4

…CONCURRENCY IS THE COMPOSITION OF INDEPENDENTLY EXECUTING PROCESSES, WHILE PARALLELISM IS THE SIMULTANEOUS EXECUTION OF COMPUTATIONS.

Rob Pike

A SIMPLE WORKER POOL IN GO

slide-5
SLIDE 5

MAILSLURPER?

WHAT IS

slide-6
SLIDE 6

A SIMPLE WORKER POOL IN GO

MAILSLURPER IS A SMALL SMTP MAIL SERVER THAT SLURPS MAIL INTO OBLIVION!

slide-7
SLIDE 7

REQUIREMENTS & STRATEGY

slide-8
SLIDE 8
slide-9
SLIDE 9

A SIMPLE WORKER POOL IN GO

SMTP LISTENER

TCP CONNECTION GET A WORKER

TCP connection is established and listens for clients Next available worker is requested from the pool

DO WORK RETURN

Worker rejoins pool

slide-10
SLIDE 10

CHANNELS AND GOROUTINES

HOW DO WE DO THIS?

slide-11
SLIDE 11

A SIMPLE WORKER POOL IN GO

CHANNELS AND GOROUTINES

SERVER POOL

A channel of workers.

WORKER

Communicates with clients, parses mail

slide-12
SLIDE 12

LET’S SEE SOME CODE!

slide-13
SLIDE 13

A SIMPLE WORKER POOL IN GO

USEFUL LINKS AND REFERENCES

▸ Rob Pike - “Concurrency is not Parallelism” - https://

www.youtube.com/watch?v=cN_DpYBzKso

▸ Nick Saika - “Worker Queues in Go” - http://nesv.github.io/

golang/2014/02/25/worker-queues-in-go.html

▸ Marcio Castilho - “Handling 1 Million Requests per Minute

with Go” - http://marcio.io/2015/07/handling-1-million- requests-per-minute-with-golang/

▸ MailSlurper - http://mailslurper.com