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

patroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymentpatroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deployment
hyeongchae lee
 

La actualidad más candente (20)

Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
Galera Cluster DDL and Schema Upgrades 220217
Galera Cluster DDL and Schema Upgrades 220217Galera Cluster DDL and Schema Upgrades 220217
Galera Cluster DDL and Schema Upgrades 220217
 
IBM Aspera for high-speed data migration to your AWS Cloud - DEM02-S - New Yo...
IBM Aspera for high-speed data migration to your AWS Cloud - DEM02-S - New Yo...IBM Aspera for high-speed data migration to your AWS Cloud - DEM02-S - New Yo...
IBM Aspera for high-speed data migration to your AWS Cloud - DEM02-S - New Yo...
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
An Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops ManagerAn Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops Manager
 
Introduction to NGINX web server
Introduction to NGINX web serverIntroduction to NGINX web server
Introduction to NGINX web server
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High Availability
 
Nginx
NginxNginx
Nginx
 
patroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymentpatroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deployment
 
Ask the expert AEM Assets best practices 092016
Ask the expert  AEM Assets best practices 092016Ask the expert  AEM Assets best practices 092016
Ask the expert AEM Assets best practices 092016
 
Transactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsTransactions and Concurrency Control Patterns
Transactions and Concurrency Control Patterns
 
JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 201...
JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 201...JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 201...
JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 201...
 
Distributed Locking in Mule
Distributed Locking in MuleDistributed Locking in Mule
Distributed Locking in Mule
 
PostgreSQL and Benchmarks
PostgreSQL and BenchmarksPostgreSQL and Benchmarks
PostgreSQL and Benchmarks
 
Infinispan, a distributed in-memory key/value data grid and cache
 Infinispan, a distributed in-memory key/value data grid and cache Infinispan, a distributed in-memory key/value data grid and cache
Infinispan, a distributed in-memory key/value data grid and cache
 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
WordPress + NGINX Best Practices with EasyEngine
WordPress + NGINX Best Practices with EasyEngineWordPress + NGINX Best Practices with EasyEngine
WordPress + NGINX Best Practices with EasyEngine
 

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
 

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
 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
 
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
 

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

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

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