Some of the most common questions we receive about Obsidian are below. They range from questions about how Obsidian works, to how you go about taking advantage of different features.
What is Obsidian exactly?
Obsidian is a Java-based task/job scheduler. At its most basic level, it allows you to run jobs at certain recurring times. It has native, configuration-free clustering, which provides fail-over and load-sharing. In addition, it provides many advanced features like a full UI, job chaining, and event notification which are lacking in other popular schedulers.
What technologies does Obsidian use?
Obsidian is built on Java 1.6, and will run on newer versions as well. The admin web application requires a servlet container, such as Tomcat or Jetty. Obsidian also requires a database such as MySQL or Oracle, where scheduling data is stored. Obsidian has a small set of library dependencies (.jar files), selected to avoid conflicts with our users' own libraries. See Getting Started for details on which versions of servlet containers and database platforms are supported.
How is Obsidian different from Quartz?
Quartz is mainly an embedded jar that provides you with the ability to schedule recurring jobs. Developers have to integrate it into their application and layer on code to do things like event notifications, job chaining, etc. In addition, database usage and clustering require additional configuration and, in our opinion, the available UIs are not complete. Quartz focuses primarily on the job execution side of scheduling, and provides extension points for developers to customize behaviour according to their needs.
Conversely, Obsidian is designed from the ground-up to provide clustering, chaining, a complete UI, event notifications, etc. right out of the box. While Obsidian is also embeddable, it is intended to provide a complete solution to job scheduling, including monitoring, high availability, and recovery. It is designed based on years of industry experience dealing with issues of reliability and operations issues. Obsidian doesn't just make your developers more productive, it eliminates work for your whole IT department by making the information they need to troubleshoot and resolve issues quickly available at a moment's notice.
How does clustering work?
Obsidian's clustering works by coordinating effort of various nodes through a central relational database such as MySQL. Each node periodically attempts to claim its share of work off of a work queue. The algorithm that performs this takes into account how many other nodes are running in order to provide load balancing. That is one key difference in Obsidian since it values load-sharing over second-level precision, since most applications don't require it. You can add new cluster nodes at any time and they will automatically join the pool, and the load-sharing and scheduling algorithm will adapt right away.
Obsidian can scale to many nodes without significant performance degradation.
How does it perform?
Whether you are running a single node or using multiple clustered nodes, Obsidian is very efficient at scheduling and execution. We have successfully run thousands of jobs a minute on basic developer hardware without issue.
It is unlikely Obsidian's scheduling activity will have much of a performance impact, so most of our users are constrained by the resource requirements of their actual job code.