SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
APACHE SLING & FRIENDS TECH MEETUP
BERLIN, 23-25 SEPTEMBER 2013
Distributed Eventing and Jobs
Carsten Ziegeler | Adobe Research Switzerland
1
About
2
§  RnD Team at Adobe Research Switzerland
§  Co-founder Adobe Granite
§  OSGi Core Platform and Enterprise Expert
Groups
§  Member of the ASF
§  Current PMC Chair of Apache Sling
§  Apache Sling, Felix, ACE
§  Conference Speaker
§  Technical Reviewer
§  Article/Book Author
Overview
3
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Overview
4
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
OSGi Event Admin
Publish Subscribe Model
5
OSGi	
  Event	
  Admin	
  Component	
  A	
  
publish
deliver
Component	
  X	
  
Component	
  Y	
  
OSGi Event Admin
Publish Subscribe Model
6
§  OSGi event is a data object with
§  Topic (hierarchical namespace)
§  Properties (key-value-pairs)
§  Resource Event
§  Topic:
org/apache/sling/api/resource/Resource/ADDED
§  Properties: path, resource type etc.
OSGi Event Admin
Publish Subscribe Model
7
§  Publisher creates event object
§  Sends event through EventAdmin service
§  Either sync or async delivery
§  Subscriber is an OSGi service
(EventHandler)
§  Service registration properties
§  Interested topic(s)
§  org/apache/sling/api/resource/Resource/*	
  
§  Additional filters (optional)
§  (path=/libs/*)	
  
OSGi Event Admin
Publish Subscribe Model
8
§  Immediate delivery to available
subscribers
§  No guarantee of delivery
§  No distributed delivery
OSGi Event Admin
Publish Subscribe Model
9
§  Immediate delivery to available
subscribers
§  No guarantee of delivery
§  No distributed delivery
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Overview
10
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Overview
11
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Installation Scenarios
12
Clustered	
  JCR	
  
Single	
  
Instance	
  
JCR	
  
Instance	
  
1	
  
Instance	
  
2	
  
Instance	
  
3	
  
Topologies I
Apache Sling Discovery
13
Clustered	
  JCR	
  JCR	
  
ID	
  :	
  A	
   ID	
  :	
  X	
   ID	
  :	
  42	
  ID	
  :	
  1	
  
Single	
  
Instance	
  
Instance	
  
1	
  
Instance	
  
2	
  
Instance	
  
3	
  
§  Instance: Unique Id (Sling ID)
Topologies I
Apache Sling Discovery
14
§  Instance: Unique Id (Sling ID)
§  Cluster: Unique Id and leader
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Cluster	
  99	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  	
  	
  	
  	
  	
  	
  Cluster	
  35	
  
Clustered	
  JCR	
  JCR	
  
ID	
  :	
  A	
   ID	
  :	
  X	
   ID	
  :	
  42	
  ID	
  :	
  1	
  
Single	
  
Instance	
  
Instance	
  
1	
  
Instance	
  
2	
  
Instance	
  
3	
  
Leader	
   Leader	
  
Topologies I
Apache Sling Discovery
15
§  Topology: Set of clusters
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Cluster	
  99	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  	
  	
  	
  	
  	
  	
  Cluster	
  35	
  
Clustered	
  JCR	
  JCR	
  
ID	
  :	
  A	
   ID	
  :	
  X	
   ID	
  :	
  42	
  ID	
  :	
  1	
  
Single	
  
Instance	
  
Instance	
  
1	
  
Instance	
  
2	
  
Instance	
  
3	
  
Leader	
   Leader	
  
Topology	
  Topology	
  
 
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Cluster	
  99	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  	
  	
  	
  	
  	
  	
  Cluster	
  35	
  
Topologies I
Apache Sling Discovery
16
Clustered	
  JCR	
  JCR	
  
ID	
  :	
  A	
   ID	
  :	
  X	
   ID	
  :	
  42	
  ID	
  :	
  1	
  
Single	
  
Instance	
  
Instance	
  
1	
  
Instance	
  
2	
  
Instance	
  
3	
  
Leader	
   Leader	
  
Topology	
  
§  Topology: Set of clusters
Topologies II
Apache Sling Discovery
17
§  Instance
§  Sling ID
§  Optional:
Name and description
§  Belongs to a cluster
§  Might	
  be	
  the	
  cluster	
  leader	
  
§  Additional distributed properties
§  Extensible	
  through	
  own	
  services	
  
(PropertyProvider)	
  
§  E.g.	
  data	
  center,	
  region	
  or	
  enabled	
  job	
  topics	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Cluster	
  99	
  
ID	
  :	
  42	
  
Instance	
  
3	
  
Topology	
  
Lead
er	
  
Topologies II
Apache Sling Discovery
18
§  Cluster
§  Elects (stable) leader
§  Stable instance ordering
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Cluster	
  99	
  
ID	
  :	
  42	
  
Instance	
  
3	
  
Topology	
  
Lead
er	
  
Topologies II
Apache Sling Discovery
19
§  TopologyEventListener
§  Receives events on
topology changes
§  Topology is changing
§  Topology changed
§  Properties changed
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Cluster	
  99	
  
ID	
  :	
  42	
  
Instance	
  
3	
  
Topology	
  
Lead
er	
  
Overview
20
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Job Handling I
Apache Sling Job Handling
21
§  Job : Guaranteed processing,
exactly once
§  Exactly one job consumer
§  Started by client code, e.g. for
replication, workflow...
§  Job topic
§  Payload is a serializable map
Job Handling I
Apache Sling Job Handling
22
§  Sling Job Manager handles and
distributes jobs
§  Delivers job to a job consumer…
§  …and waits for response
§  Retry and failover
§  Notification listeners (fail, retry,
success)
Starting / Processing a Job I
Apache Sling Job Handling
23
public interface JobConsumer {	
	
String PROPERTY_TOPICS = "job.topics";	
	
enum JobResult {	
OK,	
FAILED,	
CANCEL,	
ASYNC	
}	
	
JobResult process(Job job);	
}	
  
public interface JobManager {	
	
Job addJob(String topic, String optionalName, Map<String, Object> properties);	
…	
}	
  
Star3ng	
  a	
  job	
  
Processing	
  a	
  job	
  
Note:	
  Star3ng/processing	
  of	
  jobs	
  through	
  Event	
  Admin	
  is	
  deprecated	
  but	
  s3ll	
  supported	
  
Starting / Processing a Job II
Apache Sling Job Handling
24
@Component	
@Service(value={JobConsumer.class})	
@Property(name=JobConsumer.PROPERTY_TOPICS, value="org/apache/sling/jobs/backup")	
public class BackupJobConsumer	
implements JobConsumer {	
	
	
@Override	
public JobResult process(final Job job) {	
// do backup	
return JobResult.OK;	
}	
}
Job Handling I
Apache Sling Job Handling
25
•  New jobs are immediately persisted
•  Jobs are “pushed” to the processing
instance
•  Processing instances use different
queues
•  Associated with job topic(s)
•  Main queue
•  0..n custom queues
Job Queue I
Apache Sling Job Handling
26
•  Queue is configurable
•  Queue is started on demand in own
thread
•  And stopped if unused for some time
Job Queue II
Apache Sling Job Handling
27
•  Queue Types
•  Ordered queue
•  Parallel queues: Plain and Topic Round
Robin
Job Queue III
Apache Sling Job Handling
28
•  Limit for parallel threads per queue
•  Number of retries (-1 = endless)
•  Retry delay
•  Thread priority
Additional Configurations
Apache Sling Job Handling
29
•  Job Manager Configuration = Main
Queue Configuration
•  Maximum parallel jobs (15)
•  Retries (10)
•  Retry Delay
•  Eventing Thread Pool Configuration
•  Used by all queues
•  Pool size (35) = Maximum parallel jobs for
a single instance
Monitoring – Web Console
Apache Sling Job Handling
30
Monitoring – Web Console
Apache Sling Job Handling
31
Job Distribution I
Apache Sling Job Distribution
32
•  Each instance determines enabled job
topics
•  Derived from Job Consumers (new API
required)
•  Can be whitelisted/blacklisted (in Job
Consumer Manager)
•  Announced through Topology
Job Distribution II
Apache Sling Job Distribution
33
•  Job Distribution depends on enabled
job topics and queue type
•  Potential set of instances derived from
topology (enabled job topics)
•  Ordered: processing on leader only, one job
after the other
•  Parallel: Round robin distribution on all
potential instances
§  Local	
  cluster	
  instances	
  have	
  preference	
  
Job Distribution III
Apache Sling Job Distribution
34
•  Failover
•  Instance crash: leader redistributes jobs to
available instances
§  Leader	
  change	
  taken	
  into	
  account	
  
•  On enabled job topics changes:
potential redistribution
Sling Job Distribution
35
Topology	
  
Instance	
  
Sling	
  ID:	
  1	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  2	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  3	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  4	
  
Job	
  Manager	
  
Job	
  Consumer	
  
Topic:	
  A	
  
Job	
  Consumer	
  
Topic:	
  B	
  
Job	
  Consumer	
  
Topic:	
  C	
  
Sling Job Distribution
36
Instance	
  
Sling	
  ID:	
  1	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  2	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  3	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  4	
  
Job	
  Manager	
  A	
  
Job	
  Consumer	
  
Topic:	
  A	
  
Job	
  Consumer	
  
Topic:	
  B	
  
A:2	
  
Job	
  Consumer	
  
Topic:	
  C	
  Job	
  
Topology	
  
Sling Job Distribution
37
Instance	
  
Sling	
  ID:	
  1	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  2	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  3	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  4	
  
Job	
  Manager	
  B	
  
Job	
  Consumer	
  
Topic:	
  A	
  
Job	
  Consumer	
  
Topic:	
  B	
  
B:3	
  
Job	
  Consumer	
  
Topic:	
  C	
  Job	
  
Topology	
  
Sling Job Distribution
38
Instance	
  
Sling	
  ID:	
  1	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  2	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  3	
  
Job	
  Manager	
  
Instance	
  
Sling	
  ID:	
  4	
  
Job	
  Manager	
  C	
  
Job	
  Consumer	
  
Topic:	
  A	
  
Job	
  Consumer	
  
Topic:	
  B	
  
C:4	
  
Job	
  Consumer	
  
Topic:	
  C	
  Job	
  
?	
  
Topology	
  
Discovery and Eventing
39
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Discovery and Eventing – What’s Next?
40
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
New	
  OSGi	
  Specifica-on	
  
	
  
•  Distributed	
  Even3ng	
  
•  Cloud	
  Compu3ng	
  
Discovery and Eventing – What’s Next?
41
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Job	
  Distribu-on	
  
	
  
•  Improved	
  load	
  balancing	
  
•  Pull	
  based	
  distribu3on	
  
One More Thing…
42
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  
Job Progress Tracking
Apache Sling Job Processing
43
§  Jobs can inform about
§  Progress (percentage)
§  ETA
§  Additional informational messages
§  All information is persisted
NEW	
  
Improved Failure Handling I
Apache Sling Job Processing
44
§  Currently, no history of jobs
§  Immediately removed once
§  Job succeeds
§  Job is cancelled
§  What happened?
§  What did go wrong?
Improved Failure Handling II
Apache Sling Job Processing
45
§  Cancelled jobs are kept
§  With a reason and log
§  Can be retried
§  Successful jobs can be kept
§  With a message and log
NEW	
  
Discovery and Eventing
46
Discovery	
  Sling	
   Job	
  Distribu3on	
  
Felix	
   OSGi	
  Event	
  Admin	
  
From	
  Even3ng	
  to	
  
Job	
  Processing	
  

Más contenido relacionado

La actualidad más candente

Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012
Anton Arhipov
 
Java basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini indiaJava basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini india
Sanjeev Tripathi
 

La actualidad más candente (20)

Elastic search adaptto2014
Elastic search adaptto2014Elastic search adaptto2014
Elastic search adaptto2014
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
JVM Under The Hood WDI.pdf
JVM Under The Hood WDI.pdfJVM Under The Hood WDI.pdf
JVM Under The Hood WDI.pdf
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern Javascript
 
From framework coupled code to #microservices through #DDD /by @codelytv
From framework coupled code to #microservices through #DDD /by @codelytvFrom framework coupled code to #microservices through #DDD /by @codelytv
From framework coupled code to #microservices through #DDD /by @codelytv
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
React state
React  stateReact  state
React state
 
우린 같은 곳을 바라 보고 있나요?
우린 같은 곳을 바라 보고 있나요?우린 같은 곳을 바라 보고 있나요?
우린 같은 곳을 바라 보고 있나요?
 
Introduction into ES6 JavaScript.
Introduction into ES6 JavaScript.Introduction into ES6 JavaScript.
Introduction into ES6 JavaScript.
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Terraform tfstate
Terraform tfstateTerraform tfstate
Terraform tfstate
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Java basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini indiaJava basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini india
 
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang) [Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
 
Design by contract(계약에의한설계)
Design by contract(계약에의한설계)Design by contract(계약에의한설계)
Design by contract(계약에의한설계)
 

Similar a Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)

Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...
Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...
Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...
Thanos Zolotas
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScript
zand3rs
 
OSMC 2012 | Neues in Nagios 4.0 by Andreas Ericsson
OSMC 2012 | Neues in Nagios 4.0 by Andreas EricssonOSMC 2012 | Neues in Nagios 4.0 by Andreas Ericsson
OSMC 2012 | Neues in Nagios 4.0 by Andreas Ericsson
NETWAYS
 
The Possibilities and Pitfalls of Writing Your Own State Stores with Daan Gertis
The Possibilities and Pitfalls of Writing Your Own State Stores with Daan GertisThe Possibilities and Pitfalls of Writing Your Own State Stores with Daan Gertis
The Possibilities and Pitfalls of Writing Your Own State Stores with Daan Gertis
HostedbyConfluent
 

Similar a Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013) (20)

EVOLVE'13 | Enhance | Eventing to job Processing | Carsten Zeigler
EVOLVE'13 | Enhance | Eventing to job Processing | Carsten ZeiglerEVOLVE'13 | Enhance | Eventing to job Processing | Carsten Zeigler
EVOLVE'13 | Enhance | Eventing to job Processing | Carsten Zeigler
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGi
 
Distributed Eventing in OSGi - Carsten Ziegeler
Distributed Eventing in OSGi - Carsten ZiegelerDistributed Eventing in OSGi - Carsten Ziegeler
Distributed Eventing in OSGi - Carsten Ziegeler
 
CIRCUIT 2015 - 10 Things Apache Sling Can Do
CIRCUIT 2015 - 10 Things Apache Sling Can DoCIRCUIT 2015 - 10 Things Apache Sling Can Do
CIRCUIT 2015 - 10 Things Apache Sling Can Do
 
Tracing the Breadcrumbs: Apache Spark Workload Diagnostics
Tracing the Breadcrumbs: Apache Spark Workload DiagnosticsTracing the Breadcrumbs: Apache Spark Workload Diagnostics
Tracing the Breadcrumbs: Apache Spark Workload Diagnostics
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
 
Spark Summit EU talk by Qifan Pu
Spark Summit EU talk by Qifan PuSpark Summit EU talk by Qifan Pu
Spark Summit EU talk by Qifan Pu
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Scaling Flink in Cloud
Scaling Flink in CloudScaling Flink in Cloud
Scaling Flink in Cloud
 
Spock
SpockSpock
Spock
 
Solr4 nosql search_server_2013
Solr4 nosql search_server_2013Solr4 nosql search_server_2013
Solr4 nosql search_server_2013
 
Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...
Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...
Bridging Proprietary Modelling and Open-Source Model Management Tools: The Ca...
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScript
 
Our Puppet Story (GUUG FFG 2015)
Our Puppet Story (GUUG FFG 2015)Our Puppet Story (GUUG FFG 2015)
Our Puppet Story (GUUG FFG 2015)
 
Managing ADLS gen2 using Apache Spark
Managing ADLS gen2 using Apache SparkManaging ADLS gen2 using Apache Spark
Managing ADLS gen2 using Apache Spark
 
OSMC 2012 | Neues in Nagios 4.0 by Andreas Ericsson
OSMC 2012 | Neues in Nagios 4.0 by Andreas EricssonOSMC 2012 | Neues in Nagios 4.0 by Andreas Ericsson
OSMC 2012 | Neues in Nagios 4.0 by Andreas Ericsson
 
Introduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users GroupIntroduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users Group
 
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talksNetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
 
Anatomy of an action
Anatomy of an actionAnatomy of an action
Anatomy of an action
 
The Possibilities and Pitfalls of Writing Your Own State Stores with Daan Gertis
The Possibilities and Pitfalls of Writing Your Own State Stores with Daan GertisThe Possibilities and Pitfalls of Writing Your Own State Stores with Daan Gertis
The Possibilities and Pitfalls of Writing Your Own State Stores with Daan Gertis
 

Más de Carsten Ziegeler

Apache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTApache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and REST
Carsten Ziegeler
 

Más de Carsten Ziegeler (17)

Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
 
Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)
 
What's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi SpecsWhat's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi Specs
 
What's cool in the new and updated OSGi specs
What's cool in the new and updated OSGi specsWhat's cool in the new and updated OSGi specs
What's cool in the new and updated OSGi specs
 
Monitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web ConsoleMonitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web Console
 
OSGi, Scripting and REST, Building Webapps With Apache Sling
OSGi, Scripting and REST, Building Webapps With Apache SlingOSGi, Scripting and REST, Building Webapps With Apache Sling
OSGi, Scripting and REST, Building Webapps With Apache Sling
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
 
Embrace Change - Embrace OSGi
Embrace Change - Embrace OSGiEmbrace Change - Embrace OSGi
Embrace Change - Embrace OSGi
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
Apache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTApache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and REST
 
Embrace OSGi
Embrace OSGiEmbrace OSGi
Embrace OSGi
 
Apache Sanselan (ApacheCon US 2007 FFT)
Apache Sanselan (ApacheCon US 2007 FFT)Apache Sanselan (ApacheCon US 2007 FFT)
Apache Sanselan (ApacheCon US 2007 FFT)
 
Apache iBatis (ApacheCon US 2007)
Apache iBatis (ApacheCon US 2007)Apache iBatis (ApacheCon US 2007)
Apache iBatis (ApacheCon US 2007)
 
JCR In Action (ApacheCon US 2007)
JCR In Action (ApacheCon US 2007)JCR In Action (ApacheCon US 2007)
JCR In Action (ApacheCon US 2007)
 
Apache Portals Panel (ApacheCon US 2007)
Apache Portals Panel (ApacheCon US 2007)Apache Portals Panel (ApacheCon US 2007)
Apache Portals Panel (ApacheCon US 2007)
 
JCR In Action (ApacheCon EU 2008)
JCR In Action (ApacheCon EU 2008)JCR In Action (ApacheCon EU 2008)
JCR In Action (ApacheCon EU 2008)
 
Maven SCR Plugin (ApacheCon EU 2008 - FFT)
Maven SCR Plugin (ApacheCon EU 2008 - FFT)Maven SCR Plugin (ApacheCon EU 2008 - FFT)
Maven SCR Plugin (ApacheCon EU 2008 - FFT)
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)

  • 1. APACHE SLING & FRIENDS TECH MEETUP BERLIN, 23-25 SEPTEMBER 2013 Distributed Eventing and Jobs Carsten Ziegeler | Adobe Research Switzerland 1
  • 2. About 2 §  RnD Team at Adobe Research Switzerland §  Co-founder Adobe Granite §  OSGi Core Platform and Enterprise Expert Groups §  Member of the ASF §  Current PMC Chair of Apache Sling §  Apache Sling, Felix, ACE §  Conference Speaker §  Technical Reviewer §  Article/Book Author
  • 3. Overview 3 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 4. Overview 4 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 5. OSGi Event Admin Publish Subscribe Model 5 OSGi  Event  Admin  Component  A   publish deliver Component  X   Component  Y  
  • 6. OSGi Event Admin Publish Subscribe Model 6 §  OSGi event is a data object with §  Topic (hierarchical namespace) §  Properties (key-value-pairs) §  Resource Event §  Topic: org/apache/sling/api/resource/Resource/ADDED §  Properties: path, resource type etc.
  • 7. OSGi Event Admin Publish Subscribe Model 7 §  Publisher creates event object §  Sends event through EventAdmin service §  Either sync or async delivery §  Subscriber is an OSGi service (EventHandler) §  Service registration properties §  Interested topic(s) §  org/apache/sling/api/resource/Resource/*   §  Additional filters (optional) §  (path=/libs/*)  
  • 8. OSGi Event Admin Publish Subscribe Model 8 §  Immediate delivery to available subscribers §  No guarantee of delivery §  No distributed delivery
  • 9. OSGi Event Admin Publish Subscribe Model 9 §  Immediate delivery to available subscribers §  No guarantee of delivery §  No distributed delivery Discovery  Sling   Job  Distribu3on  
  • 10. Overview 10 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 11. Overview 11 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 12. Installation Scenarios 12 Clustered  JCR   Single   Instance   JCR   Instance   1   Instance   2   Instance   3  
  • 13. Topologies I Apache Sling Discovery 13 Clustered  JCR  JCR   ID  :  A   ID  :  X   ID  :  42  ID  :  1   Single   Instance   Instance   1   Instance   2   Instance   3   §  Instance: Unique Id (Sling ID)
  • 14. Topologies I Apache Sling Discovery 14 §  Instance: Unique Id (Sling ID) §  Cluster: Unique Id and leader                       Cluster  99                                      Cluster  35   Clustered  JCR  JCR   ID  :  A   ID  :  X   ID  :  42  ID  :  1   Single   Instance   Instance   1   Instance   2   Instance   3   Leader   Leader  
  • 15. Topologies I Apache Sling Discovery 15 §  Topology: Set of clusters                       Cluster  99                                      Cluster  35   Clustered  JCR  JCR   ID  :  A   ID  :  X   ID  :  42  ID  :  1   Single   Instance   Instance   1   Instance   2   Instance   3   Leader   Leader   Topology  Topology  
  • 16.                       Cluster  99                                      Cluster  35   Topologies I Apache Sling Discovery 16 Clustered  JCR  JCR   ID  :  A   ID  :  X   ID  :  42  ID  :  1   Single   Instance   Instance   1   Instance   2   Instance   3   Leader   Leader   Topology   §  Topology: Set of clusters
  • 17. Topologies II Apache Sling Discovery 17 §  Instance §  Sling ID §  Optional: Name and description §  Belongs to a cluster §  Might  be  the  cluster  leader   §  Additional distributed properties §  Extensible  through  own  services   (PropertyProvider)   §  E.g.  data  center,  region  or  enabled  job  topics                                       Cluster  99   ID  :  42   Instance   3   Topology   Lead er  
  • 18. Topologies II Apache Sling Discovery 18 §  Cluster §  Elects (stable) leader §  Stable instance ordering                                     Cluster  99   ID  :  42   Instance   3   Topology   Lead er  
  • 19. Topologies II Apache Sling Discovery 19 §  TopologyEventListener §  Receives events on topology changes §  Topology is changing §  Topology changed §  Properties changed                                     Cluster  99   ID  :  42   Instance   3   Topology   Lead er  
  • 20. Overview 20 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 21. Job Handling I Apache Sling Job Handling 21 §  Job : Guaranteed processing, exactly once §  Exactly one job consumer §  Started by client code, e.g. for replication, workflow... §  Job topic §  Payload is a serializable map
  • 22. Job Handling I Apache Sling Job Handling 22 §  Sling Job Manager handles and distributes jobs §  Delivers job to a job consumer… §  …and waits for response §  Retry and failover §  Notification listeners (fail, retry, success)
  • 23. Starting / Processing a Job I Apache Sling Job Handling 23 public interface JobConsumer { String PROPERTY_TOPICS = "job.topics"; enum JobResult { OK, FAILED, CANCEL, ASYNC } JobResult process(Job job); }   public interface JobManager { Job addJob(String topic, String optionalName, Map<String, Object> properties); … }   Star3ng  a  job   Processing  a  job   Note:  Star3ng/processing  of  jobs  through  Event  Admin  is  deprecated  but  s3ll  supported  
  • 24. Starting / Processing a Job II Apache Sling Job Handling 24 @Component @Service(value={JobConsumer.class}) @Property(name=JobConsumer.PROPERTY_TOPICS, value="org/apache/sling/jobs/backup") public class BackupJobConsumer implements JobConsumer { @Override public JobResult process(final Job job) { // do backup return JobResult.OK; } }
  • 25. Job Handling I Apache Sling Job Handling 25 •  New jobs are immediately persisted •  Jobs are “pushed” to the processing instance •  Processing instances use different queues •  Associated with job topic(s) •  Main queue •  0..n custom queues
  • 26. Job Queue I Apache Sling Job Handling 26 •  Queue is configurable •  Queue is started on demand in own thread •  And stopped if unused for some time
  • 27. Job Queue II Apache Sling Job Handling 27 •  Queue Types •  Ordered queue •  Parallel queues: Plain and Topic Round Robin
  • 28. Job Queue III Apache Sling Job Handling 28 •  Limit for parallel threads per queue •  Number of retries (-1 = endless) •  Retry delay •  Thread priority
  • 29. Additional Configurations Apache Sling Job Handling 29 •  Job Manager Configuration = Main Queue Configuration •  Maximum parallel jobs (15) •  Retries (10) •  Retry Delay •  Eventing Thread Pool Configuration •  Used by all queues •  Pool size (35) = Maximum parallel jobs for a single instance
  • 30. Monitoring – Web Console Apache Sling Job Handling 30
  • 31. Monitoring – Web Console Apache Sling Job Handling 31
  • 32. Job Distribution I Apache Sling Job Distribution 32 •  Each instance determines enabled job topics •  Derived from Job Consumers (new API required) •  Can be whitelisted/blacklisted (in Job Consumer Manager) •  Announced through Topology
  • 33. Job Distribution II Apache Sling Job Distribution 33 •  Job Distribution depends on enabled job topics and queue type •  Potential set of instances derived from topology (enabled job topics) •  Ordered: processing on leader only, one job after the other •  Parallel: Round robin distribution on all potential instances §  Local  cluster  instances  have  preference  
  • 34. Job Distribution III Apache Sling Job Distribution 34 •  Failover •  Instance crash: leader redistributes jobs to available instances §  Leader  change  taken  into  account   •  On enabled job topics changes: potential redistribution
  • 35. Sling Job Distribution 35 Topology   Instance   Sling  ID:  1   Job  Manager   Instance   Sling  ID:  2   Job  Manager   Instance   Sling  ID:  3   Job  Manager   Instance   Sling  ID:  4   Job  Manager   Job  Consumer   Topic:  A   Job  Consumer   Topic:  B   Job  Consumer   Topic:  C  
  • 36. Sling Job Distribution 36 Instance   Sling  ID:  1   Job  Manager   Instance   Sling  ID:  2   Job  Manager   Instance   Sling  ID:  3   Job  Manager   Instance   Sling  ID:  4   Job  Manager  A   Job  Consumer   Topic:  A   Job  Consumer   Topic:  B   A:2   Job  Consumer   Topic:  C  Job   Topology  
  • 37. Sling Job Distribution 37 Instance   Sling  ID:  1   Job  Manager   Instance   Sling  ID:  2   Job  Manager   Instance   Sling  ID:  3   Job  Manager   Instance   Sling  ID:  4   Job  Manager  B   Job  Consumer   Topic:  A   Job  Consumer   Topic:  B   B:3   Job  Consumer   Topic:  C  Job   Topology  
  • 38. Sling Job Distribution 38 Instance   Sling  ID:  1   Job  Manager   Instance   Sling  ID:  2   Job  Manager   Instance   Sling  ID:  3   Job  Manager   Instance   Sling  ID:  4   Job  Manager  C   Job  Consumer   Topic:  A   Job  Consumer   Topic:  B   C:4   Job  Consumer   Topic:  C  Job   ?   Topology  
  • 39. Discovery and Eventing 39 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 40. Discovery and Eventing – What’s Next? 40 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing   New  OSGi  Specifica-on     •  Distributed  Even3ng   •  Cloud  Compu3ng  
  • 41. Discovery and Eventing – What’s Next? 41 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing   Job  Distribu-on     •  Improved  load  balancing   •  Pull  based  distribu3on  
  • 42. One More Thing… 42 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing  
  • 43. Job Progress Tracking Apache Sling Job Processing 43 §  Jobs can inform about §  Progress (percentage) §  ETA §  Additional informational messages §  All information is persisted NEW  
  • 44. Improved Failure Handling I Apache Sling Job Processing 44 §  Currently, no history of jobs §  Immediately removed once §  Job succeeds §  Job is cancelled §  What happened? §  What did go wrong?
  • 45. Improved Failure Handling II Apache Sling Job Processing 45 §  Cancelled jobs are kept §  With a reason and log §  Can be retried §  Successful jobs can be kept §  With a message and log NEW  
  • 46. Discovery and Eventing 46 Discovery  Sling   Job  Distribu3on   Felix   OSGi  Event  Admin   From  Even3ng  to   Job  Processing