Антон Молдован "building data intensive stateful services with orleans"
TRANSCRIPT
![Page 1: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/1.jpg)
Building data intensive statefulservices with Orleans
Anton MoldovanSBTech
Twitter: https://twitter.com/AntyaDevGithub: https://github.com/AntyaDev
![Page 2: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/2.jpg)
About me:
@AntyaDevlike types*
![Page 3: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/3.jpg)
![Page 4: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/4.jpg)
microsoft orleans
Agenda
![Page 5: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/5.jpg)
![Page 6: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/6.jpg)
![Page 7: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/7.jpg)
![Page 8: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/8.jpg)
![Page 9: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/9.jpg)
![Page 10: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/10.jpg)
![Page 11: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/11.jpg)
![Page 12: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/12.jpg)
![Page 13: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/13.jpg)
![Page 14: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/14.jpg)
![Page 15: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/15.jpg)
![Page 16: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/16.jpg)
concurrency
![Page 17: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/17.jpg)
![Page 18: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/18.jpg)
![Page 19: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/19.jpg)
![Page 20: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/20.jpg)
![Page 21: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/21.jpg)
![Page 22: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/22.jpg)
Unavailable Silo
courtesy of @johnazariah
![Page 23: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/23.jpg)
![Page 24: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/24.jpg)
![Page 25: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/25.jpg)
public async Task DoSomeJob(){
// Grab the Orleans task schedulervar orleansTs = TaskScheduler.Current;
Task.Run(async () =>{
// Now let's say you need to make a grain call.await Task.Factory.StartNew(() =>{
// This code runs on the Orleans task scheduler. var grain = GrainFactory.GetGrain<IDeviceGrain>("grain_id");grain.SetChallengeName("challenge");
});});
}
![Page 26: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/26.jpg)
public interface ICacheGrain : IGrain{
Task Write(string value);Task<string> Read();
}
![Page 27: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/27.jpg)
public interface ICacheGrain : IGrain{
Task Write(string value);Task<string> Read();
}
•
•
•
•
![Page 28: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/28.jpg)
[Reentrant][StorageProvider(ProviderName = "MongoDb")]public class CacheGrain : ICacheGrain{
public async Task Write(string value){
if (value == State.Value) return;State.Value = value;await State.WriteStateAsync();
}
public Task<string> Read(){
return Task.FromResult(State.Value);}
}
![Page 29: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/29.jpg)
public override Task ActivateAsync(){
RegisterTimer(SendUpdate, null, TimeSpan.FromSeconds(1, TimeSpan.FromSeconds(5));}
![Page 30: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/30.jpg)
public override Task ActivateAsync(){
RegisterTimer(SendUpdate, null, TimeSpan.FromSeconds(1, TimeSpan.FromSeconds(5));}
AggregatorDevice
Device
![Page 31: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/31.jpg)
[StatelessWorker]public interface IDispatcherGrain : IGrain{
Task Send(Tuple<int, string>[] messages);}
![Page 32: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/32.jpg)
[StatelessWorker]public interface IDispatcherGrain : IGrain{
Task Send(Tuple<int, string>[] messages);}
•
•
•
![Page 33: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/33.jpg)
[StatelessWorker]public interface IDispatcherGrain : IGrain{
Task Send(Tuple<int, string>[] messages);}
Dispatcher
Dispatcher
Target
Target
Target
![Page 34: Антон Молдован "Building data intensive stateful services with Orleans"](https://reader031.vdocuments.net/reader031/viewer/2022021509/5875f66f1a28ab006e8b64c7/html5/thumbnails/34.jpg)