Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:00
uh_huh
00:00:05
welcome everyone to join and if you're not yet yeah i'm very proud to be
00:00:10
here the tends anniversary of scott days it's also actually the tense anniversary of arco
00:00:17
um got i think the first version room was released in two thousand nine um and they also gave
00:00:23
a talk first time it's gotta days so therefore i thought it's a great idea to talk about our cup
00:00:29
and i would talk about how to manage in our cluster on one company does
00:00:36
i'm not sure i'm i'm i'm doing start and i can offer eight yes um
00:00:40
started um at the at the start up of mine and um then i have
00:00:46
worked for enough years for for like bent mainly on the conductor team which is
00:00:51
also an orchestration to a a similar to company does or two that was him marathon
00:00:57
and since two years i'm working for more yeah which is right chang service
00:01:01
and we as not only loving scallop but it's it's basically something like what
00:01:07
but where where people share the same right and uh therefore we reduce the congestion
00:01:13
of cities and it's also for the electric so we really try to be green
00:01:17
and the main programming language at at more yeah it's it's got up
00:01:22
and uh we uh we already have launched in hamburg as well as
00:01:25
i know in hanover in germany and uh more cities will will come
00:01:33
so uh before we jump into the talk i just want to have a disclaimer
00:01:37
because it's a talk about distributed systems and i don't want to ruin your life if
00:01:43
if you never really worked deeply was distributed system so now it's a chance to do so room um
00:01:49
because just dos you uh uh does you one time set and i think that we need to
00:01:54
it can really in distributed systems is post accelerating and frustrating
00:02:00
when things work it's like a symphony when they don't it's like a elevens birthday party we have skits on speed
00:02:08
and i would you really think it's true if you want to um dude
00:02:14
in that debugging um it's it's really hard so you really need to make the things right
00:02:21
and that's also partially what my talks about um especially if you deploy an art class on company does you need to
00:02:27
consider three things and i will um yeah guide you through
00:02:31
through them one is how to how to form an ah cluster
00:02:36
the second thing is how to handle a rolling updates uh how to
00:02:41
um perform according nato graceful shut down and also how to hannah network petitions
00:02:48
so let's start with bootstrapping um the orchid team created a very good library um i think to use
00:02:55
from now it's called r. can management and also consist of another lie required adjustable
00:03:00
strap and um the nice thing about that is that doesn't use or doesn't need any
00:03:07
central coordination searches to people it c. d. before we had libraries such as
00:03:12
constructor uh by my by my uh um yeah friend hike was a beggar
00:03:17
um conduct or set some solutions uh but you always needed a sentry coordination system such as to keep our
00:03:24
and are just a bootstrapping and doesn't need that and uh
00:03:29
i will explain basically how it works and what doesn't need it
00:03:33
so that two faces and the first phase is the discovery phase so
00:03:37
we have here on on the left and the right uh two notes
00:03:42
and um basically so first thing they do is say they want to get to know
00:03:46
each other right what is your i. p. address please give me your i. p. address
00:03:50
so for the node one and no two they somehow need to get the i. p. addresses from each other how they're doing that
00:03:57
the different discovery seconds you can use was adjustable strap one is
00:04:01
uh the quinn you just eighty i another one is the n. s. for
00:04:04
instance if younger we need as i would recommend the company does eighty i
00:04:09
and the receiving the i. p. addresses from each other um by yeah
00:04:13
going to the company does eighty i based on the ports so this name
00:04:18
if you acted system equal it's basically the parts of his name then
00:04:22
you're good to go then access to put strip figure that out automatically
00:04:29
so they basically then no ooh there eighty addresses the contact points and once they know that
00:04:37
no cluster has been forget right they're not joining it just a at the only know each other
00:04:42
so then the second phase comes in its cord contact probing
00:04:47
and basically each note will will ask each other please give me a seat notes right the seat
00:04:53
node is basically was an i. p. address when a class the already has been formed uh then
00:04:59
you should we just as the i. p. address as a seat node and then
00:05:03
i don't know what's can join the existing cluster so are a a class the
00:05:09
puts rip basically exposes an h. t. t. endpoint puts proceed notes where you
00:05:14
can get the currents seat notes that a certain market cluster node is aware of
00:05:20
and then there to use cases one use cases the no cluster has been forget
00:05:27
so then like a node would say yes then no seat notes um
00:05:32
and obviously there's also use case joining an existing cluster so we would
00:05:36
go through both of them so it's an all seed notes available yet
00:05:40
then the second step is that a certain state a timeout and we'll pass um
00:05:49
that means that no other contact point uh should be added or should be removed
00:05:54
i'm also no seat node should be added and one says
00:05:57
stay the time margin has passed in new cluster would be formed
00:06:03
and someone needs to form that this cluster right and market
00:06:06
cluster basically one note it's safe on its needs to join itself
00:06:12
how's artist a bootstrapping doing that it just taking the lowest i. p. address in the previous face
00:06:19
in gathering the contact point the i. p. addresses um
00:06:22
every node knows now like the i. p. addresses off my
00:06:26
of my part of the different instances so they also know every node knows which is the lowest i. p. address
00:06:33
so then basically the note with the lowest i. p. address we just form a cluster with itself
00:06:39
and by doing so it will also we just itself as a seat not
00:06:44
and then the other notes they will keep continuing um yeah
00:06:48
executing the h. t. t. p. c. notes and point and then
00:06:53
the second node will then uh we get back that there's the
00:06:58
signal one and therefore it will also join the existing cluster so that's
00:07:03
technique we oppose use cases are covered without using any
00:07:08
coordination service or just to keep our white c. d.
00:07:12
and yeah the academe implemented that and uh you just need to use it i
00:07:18
will show you in a demo how you configure your your application our demo set up
00:07:22
is the following we have um not application um we have it when you just keep going and
00:07:28
configuration so that orchid application is running in inside of parts and then we also the company to service
00:07:36
uh which is basically which basically groups the different arcana
00:07:40
cluster instances in kind of a micro service and it also is responsible for deciding
00:07:48
to what kind of instance the h. e. p. traffic is routed
00:07:53
um and then on top of that in our demo we also have in in ingress which is basically an eighty
00:07:59
i gateway to expose also our h. e. d. p. server
00:08:03
to to the outside so that we can interact with it
00:08:08
so wish me luck with the dental x.
00:08:13
just let it sink
00:08:16
huh
00:08:20
but but not really doing so much should be fine okay
00:08:27
so first off that's um that's just see it in
00:08:31
action and then we see at the actual configuration um
00:08:39
or no actually we we do with the way around so first i show you the company does um configuration
00:08:45
so in order to to read a lark application inside of a part we need to define
00:08:51
you couldn't you just configuration and all the company does consecration is done in younger files so this easy on the fire
00:08:57
keep going and younger and we need to we need to define a deployment resource and
00:09:03
basically one important thing is that you need to specify here and the at name
00:09:08
as as metadata and this should be the same name as
00:09:12
as you act assistance so that our cluster bootstrap um yeah we'll
00:09:17
we'll figure that out and we use some other configuration we come
00:09:22
to that in a minute um but also what you need to define
00:09:27
our is a docket image so basically our our application to stalk arrest with s. p. t. native package up
00:09:35
and i'm using your local don't doctor registry so i'm i just need to specify in my company
00:09:40
does conflagration the the docket much um and then we also need to specify ports are three ports so
00:09:52
obviously our h. t. p. so well um we need to set up it's on port eighty eighty um
00:09:59
then the icon management port that is necessary that says
00:10:03
seat not h. t. t. p. endpoints available throughout other parts
00:10:09
so that they can figure out the signalled information and also
00:10:12
the arco remote import we got because we have our cluster so
00:10:16
and are classed as communicating by our remote so you also need to open the sport
00:10:21
this conflagration doesn't mean that it's exposed to the outside
00:10:25
it just visible inside of you are inside of reports
00:10:32
alright and the rest of the configuration we we see we check out later then in the application can take
00:10:40
for the first discovery phase you need to specify kind of the discovery back and
00:10:44
uh we have chosen the company does a. p. i. to figure out the the contact points and then
00:10:53
also you need to specify some puts the configuration here we have um
00:10:59
defined required contact point number of three we have a three note cluster and
00:11:04
basically we only go to the second phase of of forming a cluster or
00:11:09
joining an existing cluster if at least three contact points are visible by each node
00:11:15
right so all of them and then i've also talked about just even margin so we wait five seconds um
00:11:22
before we going into into the into the probing face um where
00:11:27
no other contact point should be added or or signature in it i
00:11:33
alright and then in our um coat it's very simple we just need
00:11:39
to execute two lines of code the first one is to study aachen management
00:11:45
and the second one um is yeah starting the orchestra puts for procedure
00:11:51
right with soccer management you get um you also get
00:11:55
well additional information was an h. e. p. a. p. i. way you can
00:12:00
rick rest um the current archive members and and so forth
00:12:04
and a bootstrap really triggers the start of your of your application
00:12:12
so now let's run it um in order to run it into any just you
00:12:19
you just apply the the the younger file right on the planet you may find it and what
00:12:27
i will also do here in the second line is watching the parts of our we need to cluster
00:12:35
right now we don't have any ports deployed and now if i run the amplifier uh we spin up three notes
00:12:43
and we also for instance can have a look at the lock
00:12:49
and as you can see here they're also not ready
00:12:52
yet so they're starting up now and once basically um
00:12:57
yeah we can serve h. e. p. traffic they will become ready so now they already took twenty two seconds
00:13:05
so now let's see if we can access it i'm i'm using h. t.
00:13:10
p. i. n. to um to make a trip from design to hamburg and
00:13:17
it doesn't work because we haven't configured the company disservice
00:13:22
in ingress yet right the as i said these ports
00:13:27
of the parts um the exposed on the part letter but not um to
00:13:31
the outside world and he was mini cue by cue we're basically getting the um
00:13:36
basically yeah the outside cool b. i. p. of the minute you cluster so what we also need
00:13:42
to do is um configuring two additional company does
00:13:46
resources so those and and ingress i've group them in
00:13:52
in another on the fire code all going and they're very very easy so
00:13:59
basically here the first one is the service uh you give it a name
00:14:03
you give it the selector that's important that needs to be a part
00:14:05
name and um then you also need to map support right our ports
00:14:11
port of our h. c. p. server was eighty eighty and we're mapping it now to to port eighty
00:14:16
um and then we also need to define ingress resource um where we basically
00:14:23
say okay please use the trip service that we just defined here um and expose it to port eighty
00:14:31
and we also applied in similar fashion just using should control acute cut to um apply
00:14:40
and then let's let's see if that has been started yes and the service
00:14:51
yes
00:14:54
so now the h. t. t. p. should go through yeah and we have greater than we're trip for ten years from wasn't ten bucks
00:15:04
an hour more pixels up north and fourteen not you need to
00:15:08
go to and look to experience it okay cool um so that's oops
00:15:16
huh that's put scripting
00:15:22
so the second part is um yeah coordinated shut down so it's really really important ah cluster
00:15:29
that you shut down your application in the right order um that you shut down
00:15:35
adjust the shopping are just to sing it and also your h. t. t. p.
00:15:39
and maybe your incoming i'm keen uses or kafka events um in in the right order
00:15:49
so usually that is pretty easy right you just need to ensure
00:15:54
um if you're not using a cluster that you drain you h. t. t. p. connections and
00:15:59
you are as a crown as you when it's connection such as backing is s. q. s. kafka
00:16:05
and then afterward you also need to ensure that you process the in flight h. e. p.
00:16:10
request or um request that have been sent over
00:16:14
over a yeah yawn as as encounters events um
00:16:20
but when you deal with an attack just it gets a bit more complicated
00:16:24
we have here on the left hand side that's a note eight and on the right hand side note b.
00:16:29
and what can happen is that basically a cheeky and racing events
00:16:34
has been already um yeah drained but then in you message comes in
00:16:39
from note p. over our clustering let's say using our cluster starting
00:16:44
and your shot entity your use uh uh we m. is living here on the
00:16:48
left hand side so then basically this um yeah our remote will send a message to
00:16:54
two node a even though no day isn't in termination more to write um
00:17:00
we see that here so you also need to take here that your training
00:17:04
basically this channels is incoming channel and luckily also the okay team
00:17:09
uh worked on on a small module record our car coordinated shut down that you
00:17:14
should use if you're using our cluster that takes care of that at least if
00:17:20
in your article just a shot entity or in your pocket cluster singing
00:17:24
actor ewan not calling another external service over future for instance which you
00:17:31
anyways shouldn't do inside of an actor um if you are having such scenario where inside of you are
00:17:38
attack last um charted actor for instance you're calling other
00:17:42
things other services then you should rather use marcus streams and
00:17:47
hike we actually gave a talk um today morning uh august screens to the extreme uh where he also use that
00:17:54
within we are using carcass screams i'm using sing crafts um to
00:18:00
two hundred that properly but if you if you basically stay
00:18:03
local inside of your cluster charting act or sing it nectar
00:18:07
uh then you'll find with this talk and i will explain you how that works
00:18:11
if you if you going again remote inside of it then watch the top i call
00:18:17
okay so the article denied that shut on module is inside of the um
00:18:22
yeah act or actor quality and it consists of different shut down faces
00:18:30
um their cup of shut down faces registered for classes starting
00:18:34
forcing it and that you that you should not use for you
00:18:38
as the application developer um i would say and number two and number three of the most important ones service and
00:18:44
bind to stop except i am to stop accepting incoming request
00:18:49
and so was request done to to process in flight requests
00:18:55
and you should basically we're just a custom shop download it both
00:19:01
for h. t. p. as well as for your as in chronos events
00:19:06
we're just bring 'em is pretty easy so you just
00:19:10
basically take take the coordinated shut down it's an extension
00:19:14
um take take the handler and then just call at
00:19:17
task and then you need to define a certain face um
00:19:22
like face before class started on give it a name and then in york in the closer at your custom stop logic
00:19:30
also sometimes you want to trigger a coordinated shut down so that would be kind of the replacement of system not exit
00:19:38
right you should new system dot x. it because it exits the j. v.
00:19:41
m. directly instead you want to follow the order in the coordinated shut down so
00:19:45
um then you should use the run method to trigger the actual coordinated shut down and as you as we have seen
00:19:53
sorry as we have seen here the last step is actually terminating the actor system and the j. d. m.
00:19:59
so don't you system that exit and also don't use um
00:20:04
yeah it j. v. m. o. shut down hole instead use here the task to register your custom stop logic
00:20:12
that's about it um the here's an example with dark h. t. t. p. so
00:20:18
you you're using the run method to directly trigger the shut down in case the
00:20:24
and the address and port has been already pound when we're starting in h. c. p. server and um if
00:20:31
basically the h. c. p. server has been started successfully then what sorry then we're registering a task in the face
00:20:40
face so this week rest done that's right face for for processing in flight requests
00:20:46
and also um the ark a team okay g. p. team has
00:20:51
has it just implemented to terminate method that you can use it is taking care of
00:20:58
not allowing any new connections anymore over the h. e. p. sockets and then
00:21:02
afterwards it will it will basically process the in flight request that has to
00:21:08
on going on your application and once or the in flight requests have been processed
00:21:13
it will it will basically a complete with the with the future of them um if
00:21:20
it hasn't been completed and maybe like some some in flight requests taking
00:21:24
very long then you also need to specify a if in iteration um
00:21:30
and then at some point in time it will basically yeah a terminate
00:21:35
in the hard way and then you might use this particular in in fact requests
00:21:40
so also take yeah that is termination deadline um yeah is is large enough
00:21:48
so that was only the ark apart of coordinated shut down together with
00:21:52
company does um they also some tricks so let's also go through them
00:21:57
so let's say we're doing a rolling update and then an existing parts
00:22:03
will receive a shot on signal
00:22:07
then what you can do is you can register it three stop folk in quinn eaters and
00:22:13
this priest topple folk you can execute some code and only after this code has been
00:22:19
executed it with four to the the sick turn signal the shot on signal to the port
00:22:26
and you can use that in order to
00:22:30
um ensure that the readiness check failed so when he does have some
00:22:34
his checks we will also um look at that in a minute and
00:22:39
the readiness check is important only if if the part is ready um the company to service
00:22:45
we're route traffic to the sport and if the part is not ready anymore
00:22:50
uh it will not become any or we not get any traffic anymore so
00:22:53
he and the shut down basically we ensure first at the redness check as fate
00:22:58
so that no h. e. p. traffic is routed to this instance anymore um and then on the h.
00:23:04
t. on the r. k. g. p. side we only need to ensure to process the in flight requests
00:23:11
with a ten minute method um and then if you
00:23:14
use our clustering you automatically use the coordinated shut down
00:23:20
extension law clustering is using it so then uh a car yeah basically the
00:23:25
the market cluster would be shut down in the right order afterwards the cluster
00:23:30
uh would be left and then at the end the actor system in j.
00:23:34
b. m. would be to i mean it it so let's see that an action
00:23:48
so i missed most of my
00:23:52
my tuning yeah but no problem i so i've already created a
00:24:01
new version of our application and in order to deploy the new version
00:24:08
we are um yeah we're just executing again the q. control applied it
00:24:20
deployments configuration but before we're doing that i first in
00:24:27
in the to clone and younger fire need to change the version
00:24:32
so that's what we need is configuration and so in
00:24:36
order to see something i will also watch the parts again
00:24:42
and we also would check the dogfight or the existing um
00:24:48
yeah parts that will now be terminated and should yeah i
00:24:55
and the nice thing about we need is is basically when i
00:24:58
when i use is cheap uh control apply function it will check what
00:25:03
kind of deployment is currently running and what is the content of the
00:25:07
new department uh we have changed version so it will automatically figure out
00:25:12
um that it needs to perform the rolling department because that's also configured in
00:25:17
in the deployment amplifier which we check in detail in a minute
00:25:21
survey execute that then what you can see here is um
00:25:26
that we spin out a new instance and three instances
00:25:30
as to running and asked to ready and i'm only if
00:25:37
basically you the force node is is ready then we
00:25:40
start terminating an existing note um for small clusters we have
00:25:46
just here three note just uh uh that's a good strategy where you do they will go from three to four
00:25:52
from four to three three to four four two three and only um yeah basically upgrade
00:25:58
one node how after the other as you can see here um yeah the shut down is
00:26:06
works so in total it should take around want a minute if you have a larger cluster it also fine too
00:26:14
to spin up multiple instances in power uh um so if your final
00:26:19
seven nine fifty fifty two node cluster
00:26:25
okay now we just perform the rolling update
00:26:29
so let's look uh what you need to do to each each that so first
00:26:34
let's have a look at the company does configuration um we need to define the strategy
00:26:40
rolling update and was isn't mac search one and max and availability
00:26:45
that's basically the different definition that you just some makes and availability means that
00:26:50
we always should have three instances running that are serving h. e. p. traffic
00:26:56
and make search means that we only spin up one new node
00:27:01
at the time so that's a very conservative definition but it works for small clusters
00:27:06
as in our example and then let's also have a look at our pretty stop hawk
00:27:12
um but also very simple um so we first create
00:27:17
a shot on fire on the file system to kind of
00:27:21
signal to the ark application that the shut down is now in progress and then we're waiting
00:27:26
not phone arbitrary amount of time um but for a time where
00:27:32
the readiness check as fate and also some some part time so
00:27:37
um another confer gauge configuration you can see here is that we have to find a readiness has check
00:27:46
i'm a custom h. t. p. endpoint and basically the
00:27:50
readiness fates once three times as h. t. p. endpoint
00:27:54
has given not it two hundred successful um and it
00:28:00
will also try in into of all of two seconds so
00:28:03
three multiplied by two is six and then we also give it like
00:28:07
two seconds more time that we really ensure here that is pretty stop
00:28:11
hawk is only finished once no connections um yeah um
00:28:17
i basically wanted to this part that we want to terminate
00:28:24
and then in our application cons um we we need to configure
00:28:33
coordinated chart on saying that that's the j. v. m. should exit
00:28:38
at the end so you should do that when you own company does and you also should give it
00:28:43
uh before it's time out for your faces that you would just about yourself like on our k. g. p. so
00:28:51
if we look in on all okay g. p. so that it's basically similar what you've just seen on the slides
00:29:01
and um yeah basically research registering here are shut down task in the face
00:29:08
so this request done and um insuring that the in flight request
00:29:14
i fully processed
00:29:23
okay that last one is handling network partitions
00:29:28
so what you really should avoid is a is a split brain scenarios when you're dealing with an how cluster
00:29:36
and how does it generally work with with an target just if you have a network petition so for instance if you own a double yes
00:29:44
and you and the same a obvious region but are using different availability
00:29:48
zones you already in different data centres um so network partitions can occur and
00:29:55
he in our case we have network petition um where d. c. one and d. c. three states each other
00:30:02
uh but they don't see d. c. to anymore and market clustering is using our remote thing to always
00:30:09
check under the what if um if every noticed a
00:30:12
reachable right and if the network petition is ongoing obviously
00:30:17
uh d. c. one and d. c. three there we're not c. d. c.
00:30:20
to anymore so what what should happen then like should dizzy to still be alive
00:30:28
so the right choices that that we should down one of the one of the sites
00:30:33
either the left side or the right seven usually you down um the minority side of notes
00:30:40
because otherwise what could happen is if i don't know you
00:30:44
using are just the shopping and you're trading the same user um
00:30:50
one one d. c. too and also on the c. one and then laid on the network petition goes away you haven't in
00:30:56
costa inconsistent state you have created two times the same user
00:31:00
you have created to chart entities are with in our justice writing
00:31:04
uh so you always need to ensure that that you down the notes and in fact
00:31:08
our car i like a cluster i'm always try to market these nodes and as unreachable
00:31:16
to mark notes as a reachable um marcus using inferior detector
00:31:21
and basically it will use a gossip record to parody kiosk hey
00:31:26
a dizzy to are you still there um and in this case the
00:31:30
c. one would say no i'm i cannot see d. c. to anymore
00:31:34
and then it would uh sends information to d. c. three and d. c. three would also maybe check out if
00:31:42
if uh they can does can c. d. c. two and so on so at the end of a a detector
00:31:47
takes care of that um well that d. c. one
00:31:51
and this is three marks deceit within reachable and vice versa
00:31:55
and our car is using the egg true if a a detector for that if you would
00:31:59
like to more about that um minor dad also give a pretty good talk last year um about
00:32:06
about more detail it's of the fayette detector
00:32:11
and this fe detector we mark the notes as i'm reachable it doesn't mean that they're downed yet
00:32:16
and that they uh go on it only means that
00:32:20
that they cannot see each other and that is kind of a stalemate state in our cluster
00:32:26
when notes on reachable you cannot know new joint you know
00:32:30
new uh nodes can join um and also are just uh
00:32:38
charlene cannot we balance the notes from one note to another for instance so you need
00:32:43
to take care of that as i reach this state is only for short period of time
00:32:48
and uh yeah usually what you should do is either shut down it's
00:32:53
manually um was shut down like a side um programmatically
00:32:59
and to shut down notes programmatically um yeah ah chi has basically an interface
00:33:04
uh which you can implement or libraries can implement and
00:33:08
the scored split brain resolution or split brain was oliver
00:33:13
and the different libraries out there and you also can use
00:33:17
different strategies so one strategy if you have a cluster that's
00:33:22
uh that is rather static so always five node always a seven node cluster
00:33:26
then you should use static wrong where you define um basically number of of majority
00:33:33
notes um let's say we have our three not just uh if i define too
00:33:37
then always the nodes that's each other uh they will still remain
00:33:42
and the minus side will be downed if you have more flexible
00:33:48
um scaling scenario where you quite often scaling up from five to
00:33:52
nine to thirteen down to seven then you should use icky majority
00:33:57
strategy which um yep was always down to the minority side
00:34:02
and there's also keep oldest innkeeper free if you have a light and subscription i
00:34:07
would recommend to to use a light and split brain result of a library um it's
00:34:12
it's obviously always maintained it's it's better test that it works with all the different strategies
00:34:18
but they also some open source libraries out there if you don't have a subscription they don't work
00:34:23
for strategies um but all of them are working for the uh for the static for at least
00:34:29
um if you want to know more about that i'm just yeah come
00:34:34
to me afterward um we uh we are using our custom custom downing
00:34:42
the source code is on on the top um if you want to follow me
00:34:47
one i that would all get up um it says handle and um we also if you if you're looking for a job
00:34:55
obviously we also hiring and we also have a breezy it's colour day so just
00:34:59
come to me or come to all those uh later on thank you very much
00:35:11
and i think we have to ten minutes more time for questions
00:35:19
uh_huh
00:35:22
i i know that many people use shouting we
00:35:25
wheeze presses comes from the purses come form on cassandra
00:35:31
ah emerges or else could be rain scenarios how do you
00:35:35
deal with the fact that customer is making different kind of credence
00:35:39
the sons that uh in my understanding the the remain
00:35:42
a available um partition current are a drop the consistency
00:35:50
yeah so i mean also when you use cassandra you always need to choose you are you're consistent strategy right if you
00:35:57
doing the read and during the ride oh if you want to have like a
00:36:01
ride or where you ensure that that was the nodes needs to be there and consistent
00:36:06
um if you have a network petition this would fail but you
00:36:09
also can just ride on a on a chrome level for instance um
00:36:13
and then the ride would succeed on and the same with the read so you always need to do and shoes basically
00:36:20
a consistency that if you want a strong consistency um that we're not work in uh when you have a network petition
00:36:28
and yeah so you you're very flexible with cassandra in that case
00:36:43
yeah hi when you and perform the routing updates all start class the
00:36:48
how do you deal with the c. we're see we're isolation all done
00:36:53
the messages it's a new cluster nodes and all class the notes
00:36:58
yeah that's a good question so and it's also in
00:37:00
the arcade ox if if you have a breaking changes in
00:37:07
basically phones in your case classes that you sending over the wire why our remote right
00:37:11
marcus assigning for instance um then you first need to down the entire class that um
00:37:17
so and then spin of the new classes either use a blue green you put on it
00:37:21
um if you want to have no downtime um why you're shutting down your entire cluster and
00:37:28
then you also need to apply virgin burton strategy um of your
00:37:33
case laws so for instance you might see realise that was probably both
00:37:37
and and then you have probably you might be deployed instead where you first introduced a new version
00:37:44
like aversion to um which is then basically deployed and
00:37:49
available on all the new notes um and
00:37:54
and then later on um basically also removing the whole week note
00:37:58
uh sorry the old version in your in your portable schema for instance
00:38:08
anyone
00:38:12
okay then thanks very much enjoy discoveries

Share this talk: 


Conference Program

Welcome!
June 11, 2019 · 5:03 p.m.
1574 views
A Tour of Scala 3
Martin Odersky, Professor EPFL, Co-founder Lightbend
June 11, 2019 · 5:15 p.m.
8337 views
A story of unification: from Apache Spark to MLflow
Reynold Xin, Databricks
June 12, 2019 · 9:15 a.m.
1267 views
In Types We Trust
Bill Venners, Artima, Inc
June 12, 2019 · 10:15 a.m.
1569 views
Creating Native iOS and Android Apps in Scala without tears
Zahari Dichev, Bullet.io
June 12, 2019 · 10:16 a.m.
2231 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1295 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1156 views
Metals: rich code editing for Scala in VS Code, Vim, Emacs and beyond
Ólafur Páll Geirsson, Scala Center
June 12, 2019 · 11:15 a.m.
4695 views
Akka Streams to the Extreme
Heiko Seeberger, independent consultant
June 12, 2019 · 11:16 a.m.
1552 views
Scala First: Lessons from 3 student generations
Bjorn Regnell, Lund Univ., Sweden.
June 12, 2019 · 11:17 a.m.
577 views
Cellular Automata: How to become an artist with a few lines
Maciej Gorywoda, Wire, Berlin
June 12, 2019 · 11:18 a.m.
386 views
Why Netflix ❤'s Scala for Machine Learning
Jeremy Smith & Aish, Netflix
June 12, 2019 · 12:15 p.m.
5026 views
Massively Parallel Distributed Scala Compilation... And You!
Stu Hood, Twitter
June 12, 2019 · 12:16 p.m.
958 views
Polymorphism in Scala
Petra Bierleutgeb
June 12, 2019 · 12:17 p.m.
1113 views
sbt core concepts
Eugene Yokota, Scala Team at Lightbend
June 12, 2019 · 12:18 p.m.
1655 views
Double your performance: Scala's missing optimizing compiler
Li Haoyi, author Ammonite, Mill, FastParse, uPickle, and many more.
June 12, 2019 · 2:30 p.m.
837 views
Making Our Future Better
Viktor Klang, Lightbend
June 12, 2019 · 2:31 p.m.
1682 views
Testing in the postapocalyptic future
Daniel Westheide, INNOQ
June 12, 2019 · 2:32 p.m.
498 views
Context Buddy: the tool that knows your code better than you
Krzysztof Romanowski, sphere.it conference
June 12, 2019 · 2:33 p.m.
393 views
The Shape(less) of Type Class Derivation in Scala 3
Miles Sabin, Underscore Consulting
June 12, 2019 · 3:30 p.m.
2321 views
Refactor all the things!
Daniela Sfregola, organizer of the London Scala User Group meetup
June 12, 2019 · 3:31 p.m.
514 views
Integrating Developer Experiences - Build Server Protocol
Justin Kaeser, IntelliJ Scala
June 12, 2019 · 3:32 p.m.
551 views
Managing an Akka Cluster on Kubernetes
Markus Jura, MOIA
June 12, 2019 · 3:33 p.m.
735 views
Serverless Scala - Functions as SuperDuperMicroServices
Josh Suereth, Donna Malayeri & James Ward, Author of Scala In Depth; Google ; Google
June 12, 2019 · 4:45 p.m.
936 views
How are we going to migrate to Scala 3.0, aka Dotty?
Lukas Rytz, Lightbend
June 12, 2019 · 4:46 p.m.
709 views
Concurrent programming in 2019: Akka, Monix or ZIO?
Adam Warski, co-founders of SoftwareMill
June 12, 2019 · 4:47 p.m.
1974 views
ScalaJS and Typescript: an unlikely romance
Jeremy Hughes, Lightbend
June 12, 2019 · 4:48 p.m.
1377 views
Pure Functional Database Programming‚ without JDBC
Rob Norris
June 12, 2019 · 5:45 p.m.
6374 views
Why you need to be reviewing open source code
Gris Cuevas Zambrano & Holden Karau, Google Cloud;
June 12, 2019 · 5:46 p.m.
484 views
Develop seamless web services with Mu
Oli Makhasoeva, 47 Degrees
June 12, 2019 · 5:47 p.m.
785 views
Implementing the Scala 2.13 collections
Stefan Zeiger, Lightbend
June 12, 2019 · 5:48 p.m.
810 views
Introduction to day 2
June 13, 2019 · 9:10 a.m.
250 views
Sustaining open source digital infrastructure
Bogdan Vasilescu, Assistant Professor at Carnegie Mellon University's School of Computer Science, USA
June 13, 2019 · 9:16 a.m.
374 views
Building a Better Scala Community
Kelley Robinson, Developer Evangelist at Twilio
June 13, 2019 · 10:15 a.m.
245 views
Run Scala Faster with GraalVM on any Platform
Vojin Jovanovic, Oracle
June 13, 2019 · 10:16 a.m.
1340 views
ScalaClean - full program static analysis at scale
Rory Graves
June 13, 2019 · 10:17 a.m.
463 views
Flare & Lantern: Accelerators for Spark and Deep Learning
Tiark Rompf, Assistant Professor at Purdue University
June 13, 2019 · 10:18 a.m.
380 views
Metaprogramming in Dotty
Nicolas Stucki, Ph.D. student at LAMP
June 13, 2019 · 11:15 a.m.
1250 views
Fast, Simple Concurrency with Scala Native
Richard Whaling, data engineer based in Chicago
June 13, 2019 · 11:16 a.m.
624 views
Pick your number type with Spire
Denis Rosset, postdoctoral researcher at Perimeter Institute
June 13, 2019 · 11:17 a.m.
245 views
Scala.js and WebAssembly, a tale of the dangers of the sea
Sébastien Doeraene, Executive director of the Scala Center
June 13, 2019 · 11:18 a.m.
661 views
Performance tuning Twitter services with Graal and ML
Chris Thalinger, Twitter
June 13, 2019 · 12:15 p.m.
2003 views
Supporting the Scala Ecosystem: Stories from the Line
Justin Pihony, Lightbend
June 13, 2019 · 12:16 p.m.
163 views
Compiling to preserve our privacy
Manohar Jonnalagedda and Jakob Odersky, Inpher
June 13, 2019 · 12:17 p.m.
301 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
565 views
244 views
Asynchronous streams in direct style with and without macros
Philipp Haller, KTH Royal Institute of Technology in Stockholm
June 13, 2019 · 3:45 p.m.
304 views
Interactive Computing with Jupyter and Almond
Sören Brunk, USU Software AG
June 13, 2019 · 3:46 p.m.
681 views
Scala best practices I wish someone'd told me about
Nicolas Rinaudo, CTO of Besedo
June 13, 2019 · 3:47 p.m.
2702 views
High performance Privacy By Design using Matryoshka & Spark
Wiem Zine El Abidine and Olivier Girardot, Scala Backend Developer at MOIA / co-founder of Lateral Thoughts
June 13, 2019 · 3:48 p.m.
753 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
276 views
All the fancy things flexible dependency management can do
Alexandre Archambault, engineer at the Scala Center
June 13, 2019 · 4:46 p.m.
389 views
ScalaWebTest - integration testing made easy
Dani Rey, Unic AG
June 13, 2019 · 4:47 p.m.
468 views
Mellite: An Integrated Development Environment for Sound
Hanns Holger Rutz, Institute of Electronic Music and Acoustics (IEM), Graz
June 13, 2019 · 4:48 p.m.
213 views
Closing panel
Panel
June 13, 2019 · 5:54 p.m.
400 views

Recommended talks

PERFMATTERS for Android
Hasan Hosgel, ImmobilienScout24 / Berlin, Germany
Nov. 27, 2016 · 11:45 a.m.
The Young Software Engineer’s Guide to Using Formal Methods
K. Rustan M. Leino, Amazon
June 7, 2018 · 10:16 a.m.
963 views