Bending Spark towards enterprise needs
-
Upload
b0ris1 -
Category
Technology
-
view
187 -
download
1
Transcript of Bending Spark towards enterprise needs
![Page 1: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/1.jpg)
BENDINGSPARKTOWARDSENTERPRIZE NEEDS
BORISTROFIMOV@SIGMASOFTWARE
![Page 2: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/2.jpg)
![Page 3: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/3.jpg)
![Page 4: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/4.jpg)
![Page 5: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/5.jpg)
USERINTERFACE
SERVICELAYER
DATASTORE
CLASSIC APPROACH
![Page 6: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/6.jpg)
PRESENTATIONLAYER
APPLICATIONSERVICES
DOMAINLAYER
DAL
INFRASTRUCTURE
CLASSIC LAYERS
![Page 7: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/7.jpg)
![Page 8: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/8.jpg)
CLASSIC APPROACH
USERINTERFACE
SERVICELAYER
DATASTORE
![Page 9: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/9.jpg)
CQRS
USERINTERFACE
SERVICELAYER
DATASTORE
COMMAND/WRITEMODEL READMODEL
![Page 10: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/10.jpg)
CQRS NAKEDUSERINTERFACE
SERVICELAYERWRITESTORE
COMMANDBUS
COMMANDHANDLER
REPOSITORY
DomainModel Domain
Model
EVENTBUS
EVENTHANDLER
Commands
READMODELSTORE
QUERYFACADE
Query DTO
WRITEMODEL READMODEL
![Page 11: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/11.jpg)
USERINTERFACE
MULTIPLE READMODELSUSERINTERFACE
SERVICELAYERWRITESTORE
COMMANDBUS
COMMANDHANDLER
REPOSITORY
DomainModel Domain
Model
EVENTBUS
EVENTHANDLER
Commands
EVENTHANDLER
READMODELSTORE1
READMODELSTORE2
QUERYFACADE QUERYFACADE
WRITEMODEL READMODEL
![Page 12: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/12.jpg)
BULLETIN BOARDAPP
![Page 13: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/13.jpg)
APPLICATIONFEATURES
•ADDBulletinwithspecificauthornameandmessage•VIEWlistofpublishedbulletins
![Page 14: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/14.jpg)
SERVICELAYER
SPARKISCOMINGUSERINTERFACE
MONGOREAD/WRITESTORE
KAFKA
COMMANDHANDLER
REPOSITORY
DomainModel Domain
Model
Commands
QUERYFACADE
Query DTO
WRITEMODEL READMODELSPARK
![Page 15: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/15.jpg)
SERVICELAYER
SPARKISCOMINGUSERINTERFACE
MONGOREAD/WRITESTORE
KAFKA
COMMANDHANDLER
REPOSITORY
DomainModel Domain
Model
Commands
QUERYFACADE
Query DTO
WRITEMODEL READMODELSPARK
SHAREDSTORE
![Page 16: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/16.jpg)
TECHNOLOGY STACK
FAÇADE• Java8• SpringBoot&MVC• Mongo
COMMANDPROCESSOR• Kafka0.9.0.1• Scala2.11• Spark2.0.0Streaming
![Page 17: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/17.jpg)
DEPLOYMENT VIEW
DOCKER
KAFKAZOOKEEPER
MONGO
DEVMACHINE
LOCALSPARK
FACADE
![Page 18: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/18.jpg)
DEMO
https://github.com/btrofimov/spark-enterprise-example/tree/master/nonblocking-bulletinboard
![Page 19: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/19.jpg)
![Page 20: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/20.jpg)
WAIT
![Page 21: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/21.jpg)
WELCOMETOASYNCHONOUSHELL
ATLEASTFOURSOLUTIONS
• C'mon,it’sOK
• Pullingserviceuntilentityisadded
• Addpushchannelanddelivereventsupstairs
• MakeRESTmethodsblockeduntilcommandisfinished
![Page 22: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/22.jpg)
MAKEITSYNCHRONOUS
![Page 23: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/23.jpg)
DEMO2
https://github.com/btrofimov/spark-enterprise-example/tree/master/blocking-bulletinboard
![Page 24: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/24.jpg)
RETROSPECTIVE
![Page 25: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/25.jpg)
READMODELinstances
WRITEMODELinstances
EFFICIENT SCALEOUTSEPARATEDSCALEOUTDEPENDINGONMODEL
NEEDS
![Page 26: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/26.jpg)
dataStream.foreachRDD { rdd =>
val values = rdd.values
values.map { cmdMessage =>…
}.foreach { cmdMessage =>
…}
}
DESERIALIZATION ERRORS
MIGHTFAILDURINGLAUNCHIFPIPELINEHASBEENCHANGED
RISK: AFFECTSCHECKPOINTS
![Page 27: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/27.jpg)
DESERIALIZATION ERRORS
• Hardtokeepcodetoleranttotheseerrorsandtestableatthesametime.• SparkwithKafkaconnector0.10allowstosaveKafkaoffsetsanditispossibletorestorefromtheminsteadofcheckpoints.
![Page 28: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/28.jpg)
THROUGHPUT VSLATENCY
Spark-basedserviceshavenicethroughputhoweverduetointernaloverheadstheyhavelowerlimitonlatency
![Page 29: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/29.jpg)
IDENTIFIER ASSIGNRESPONSIBILITY
• Clientgeneratesuniqueidentifiersandpassesittoservice• Servicegeneratesuniqueidentifierandpassesitbacktoclient
![Page 30: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/30.jpg)
EVENTUALVS STRONG CONSISTENCY
• CQRSappsusuallyareeventuallyconsistent• ChoosewiselybetweenCQRSandtraditionalapproach• Consideroptimisticorpessimisticlockingtoachievestrongconsistency• Insomecasesdefinedreasonabletimeoutsorin-progresslistsmighthelptosolveraceconditions(dependsoncommandroundtrips)
![Page 31: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/31.jpg)
FAULTTOLERANCE
![Page 32: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/32.jpg)
FAULTTOLERANCE
• Sparkautorerunstaskstomitigatenetworkorotheroutages• Easyandsafeapplicationrestartbasedoncheckpoints
![Page 33: Bending Spark towards enterprise needs](https://reader031.fdocuments.net/reader031/viewer/2022030305/5873326d1a28ab596c8b6e21/html5/thumbnails/33.jpg)
THANKYOU
slides code