With declining use of the Google Reader application, combined a new strategy to focus efforts on a small number of projects, Google has make an executive decision to scrap its reader services starting July 1st, 2013. Waves of commentary disseminated across the web regarding the disposal of the Reader application from Google’s portfolio of services; this decision has left many disappointed, in search of alternatives, and even starting petitions that beg Google to keep the service active.
The phrase “when one door closes, another opens” is relevant here: On March 11th, the NetflixOSS team released its very first “NetflixOSS Recipe” and it’s an RSS Reader! That’s right folks, you now have a step-by-step guide on creating your very own RSS reader, brought to you by Netflix.
If you plan on creating your very own RSS Reader using these tools, we want to hear from you! Please email info@PlanetCassandra.org; we might even trade you some C* Ale for a blog posting on your experience.
So, what are you waiting for? Found below is a repost from the NetflixOSS Blog on how to get up-and-running with your home brewed NetflixOSS RSS Reader.
Introducing the first NetflixOSS Recipe: RSS Reader
Over the past year, Netflix has open sourced many of its components such as Hystrix, Eureka, Servo, Astyanax, Ribbon, etc.
While we continue to open source more of our components, it would be useful to open source a set of applications that can tie up these components together. This is the first in the series of “Netflix OSS recipes” that we intend to open source in the coming year that showcases the various components and how they work in conjunction with each other. While we expect many users to cherry pick the parts of Netflix OSS stack, we hope to show how using some of the Netflix OSS components in unison is very advantageous for you.
- Archaius: Dynamic configurations properties client.
- Astyanax: Cassandra client and pattern library.
- Blitz4j: Non-blocking logging.
- Eureka: Service registration and discovery.
- Governator: Guice based dependency injection.
- Hystrix: Dependency fault tolerance.
- Karyon: Base server for inbound requests.
- Ribbon: REST client for outbound requests.
- Servo: Metrics collection.
Recipes RSS Reader is composed of the following three major components:
All middle tier instances, upon startup, get registered to Eureka using a unique logical name. It is later used by the edge service to discover the available middle tier instances, querying by that logical name.
RSS Middle Tier Service
RSS Middle tier is responsible for fetching the contents of RSS feeds from external feed publishers, parsing the RSS feeds and returning the data via REST entry points. Ribbon’s HTTP client is used to fetch the RSS feeds from external publishers. This tier is also responsible for persisting the user’s RSS subscriptions into Cassandra or into an InMemory hash map. Astyanax is used to persist data into Cassandra. The choice of the data store, cassandra host configurations, retry policies etc are specified in a properties file, which is accessed using Archaius. Latencies, success and failure rates of the calls made to Cassandra and external publishers are captured using Servo. The base container for this middle tier is built on top of Karyon and all log events are captured using Blitz4j.
Eureka is used to discover the middle tier instances that can fetch the RSS feeds subscribed by the user. Hystrix is used to provide greater tolerance of latency and failures when communicating with the middle tier service. The base container for this edge service is also built on top of Karyon. A simple UI, as shown below, is provided by the edge service to add, delete and display RSS feeds.
Hystrix dashboard for the Recipes RSS application during a sample run is as shown below:
Our Github page for Recipes RSS Reader has instructions for building and running the application. Full documentation is available on the wiki pages. The default configurations that come along with this application allows all these different services to run in a single machine.
In the coming months, we intend to open source other commonly used recipes that share best practices on how to integrate the various bits of Netflix OSS stack to build highly scalable and reliable cloud-based applications.