Successfully reported this slideshow.

Performance is not an Option - gRPC and Cassandra

2

Share

Loading in …3
×
1 of 42
1 of 42

Performance is not an Option - gRPC and Cassandra

2

Share

Download to read offline

This is the slide deck from my June 2016 presentation on using gRPC and Cassandra to build high performance web services in an IoT enviroment

This is the slide deck from my June 2016 presentation on using gRPC and Cassandra to build high performance web services in an IoT enviroment

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Performance is not an Option - gRPC and Cassandra

  1. 1. Copyright 2016 Expero, Inc. All Rights Reserved 1 In today's development ecosystem building a service oriented architecture based on a micro services is common practice. With the rise of Big Data and Internet of Things applications making these services highly performant services is no longer an option. In order to accomplish the scalability and performance requirements that customers expect we are required to start thinking differently about how we architect and build these applications in order to meet those demands. This session will demonstrate a method for creating a highly performant service based application using Google’s GRPC and Apache Cassandra in .NET. We will show how you can combine gRPC to minimize communication overhead while leveraging Cassandra to optimize storage of time series data. We will explore these concepts by creating an Internet of Things (IoT) application to demonstrate how you can effectively meet the performance and scalability challenges posed by these new breeds of applications. Abstract
  2. 2. Copyright 2016 Expero, Inc. All Rights Reserved Performance is not an Option Building High performance Web Services with gRPC and Cassandra June 9th, 2016 #build4prfrmnc
  3. 3. Copyright 2016 Expero, Inc. All Rights Reserved 3 ● What is gRPC ● What is Cassandra ● How to build a simple gRPC Microservice ● How to persist time series data in Cassandra ● Why you might want to use gRPC/Cassandra instead of a more traditional REST/RDBMS for a Time-Series IoT application What I hope you take away
  4. 4. Copyright 2016 Expero, Inc. All Rights Reserved 4 Dave Bechberger Senior Architect dave@experoinc.com @bechbd https://www.linkedin.com/in/davebechberger About me
  5. 5. Copyright 2016 Expero, Inc. All Rights Reserved 5 Expero - Bringing challenging product ideas to reality Architecture & Development Product Strategy User Experience Domain Expert
  6. 6. Copyright 2016 Expero, Inc. All Rights Reserved 6 Expero - Select Clients 6 Austin(HQ) • Houston • New York City • Founded 2003
  7. 7. Copyright 2016 Expero, Inc. All Rights ReservedCopyright 2016 Expero, Inc. All Rights Reserved What is gRPC? 7
  8. 8. Copyright 2016 Expero, Inc. All Rights Reserved ● gRPC is a general purpose RPC framework ● Built on standards ● Free and Open Source ● Built for distributed systems 8 What is gRPC?
  9. 9. Copyright 2016 Expero, Inc. All Rights Reserved ● Allows client to call methods on the server as if they were local ● Built for low latency highly scalable microservices ● Payload agnostic ● Bi-Directional Streaming ● Pluggable and Extensible 9 gRPC Architecture
  10. 10. Copyright 2016 Expero, Inc. All Rights Reserved 10 Simple Model and Service Definition
  11. 11. Copyright 2016 Expero, Inc. All Rights Reserved 11 Optimized Speed and Performance
  12. 12. Copyright 2016 Expero, Inc. All Rights Reserved 12 Code Generation
  13. 13. Copyright 2016 Expero, Inc. All Rights ReservedCopyright 2016 Expero, Inc. All Rights Reserved What is Cassandra? 13
  14. 14. Copyright 2016 Expero, Inc. All Rights Reserved What is Cassandra? ● Distributed Datastore ● Open Source Apache Project ● No Single Point of Failure ● Scalable 14
  15. 15. Copyright 2016 Expero, Inc. All Rights Reserved CAP Theorem - Pick 2 ● Consistency - all nodes see the same data at the same time ● Availability - every requests receives a response ● Partition Tolerant - the system continues to operate even during network failures 15
  16. 16. Copyright 2016 Expero, Inc. All Rights Reserved ACID vs. BASE RDBMS World ● Atomic - transactions are “all or nothing” ● Consistency - On completion all data is the same ● Isolated - transactions do not interfere with one another ● Durable - results of a transaction are permanent 16 NoSQL World ● Base Availability - The datastore works most of the time ● Soft State - Stores are not write consistent, data can differ between replicas ● Eventually Consistent - Stores become consistent over time
  17. 17. Copyright 2016 Expero, Inc. All Rights Reserved Cassandra Architecture 17
  18. 18. Copyright 2016 Expero, Inc. All Rights Reserved Hash Ring Architecture 18 ● All nodes own a portion of the token ring ● All nodes know which token ranges belong to which nodes ● Partitioner generates a token from the Partition Key ● Tokens determine where data is located on the ring
  19. 19. Copyright 2016 Expero, Inc. All Rights Reserved How Tokens Work 19 Partitioner Token:12 Client Driver PK: Expero Data Written
  20. 20. Copyright 2016 Expero, Inc. All Rights Reserved Data Replication ● Data replication is automatic ● Number of replicas is called the Replication Factor or RF ● Data is replicated between Data Centers ● Hinted Handoff
  21. 21. Copyright 2016 Expero, Inc. All Rights Reserved Data Replication in Action Client Write A Data Written Replica Written Replica Written Coordinator Driver Partitioner Token:12 PK: Expero
  22. 22. Copyright 2016 Expero, Inc. All Rights Reserved What does it mean to be Eventually Consistent? 22 ● Data will “eventually” match on all replicas, usually in terms of milliseconds ● Consistency Level or CL (11 for writes, 10 for reads) ● Tuning consistency affects performance and availability ● CL can be tuned for R/W performance on a per query basis using CQL
  23. 23. Copyright 2016 Expero, Inc. All Rights Reserved Why use Cassandra over your RDBMS? ● Performance ● Linearly Scalable ● Natively built as a distributed datastore ● Always-On Architecture 23
  24. 24. Copyright 2016 Expero, Inc. All Rights Reserved What is DataStax vs. Apache Cassandra? ● Certified Cassandra – Delivers highest quality Cassandra software for confidence and peace of mind for production environments ● Enterprise Security – Full protection for sensitive data ● Automatic Management Services – Automates key maintenance functions to keep the database running smoothly ● OpsCenter – Advanced management and monitoring functionality for production applications ● Expert Support – Answers and assistance from the Cassandra experts for all production needs 24
  25. 25. Copyright 2016 Expero, Inc. All Rights ReservedCopyright 2016 Expero, Inc. All Rights Reserved The Problem - Engine Monitoring 25
  26. 26. Copyright 2016 Expero, Inc. All Rights Reserved ● Truck Engine Monitoring Software ● Currently ~ 1000 trucks taking readings every 10 seconds ● WebAPI REST on a SQL Server 2014 Database 26 Setup
  27. 27. Copyright 2016 Expero, Inc. All Rights Reserved ● You were recently landed a huge new client Expero Trucking Inc. ● Sensor readings now 1/second and add geolocation (lat/long) data ● Adding 10,000 trucks. ● Minimize costs and zero downtime 27 The Requirements
  28. 28. Copyright 2016 Expero, Inc. All Rights Reserved ● 100 measurements/second to 22,000 measurements/second ● Data load from ~35 MB/day to ~2.2 GB/day ● Your architecture needs to change 28 The Problem
  29. 29. Copyright 2016 Expero, Inc. All Rights ReservedCopyright 2016 Expero, Inc. All Rights Reserved The Solution - gRPC and Cassandra 29 Code Available Here https://github.com/experoinc/NDC-Oslo-2016/tree/master/NDC.Oslo
  30. 30. Copyright 2016 Expero, Inc. All Rights Reserved ● Change SQL Server Database to a Cassandra Cluster ● Replace REST based services with gRPC services 30 Proposed Solution
  31. 31. Copyright 2016 Expero, Inc. All Rights Reserved 31 Defining a Model and Service
  32. 32. Copyright 2016 Expero, Inc. All Rights Reserved 32 Generating Client/Server Stubs Model Definition Service Definition
  33. 33. Copyright 2016 Expero, Inc. All Rights Reserved 33 Creating Cassandra KeySpace and Table
  34. 34. Copyright 2016 Expero, Inc. All Rights Reserved 34 Connecting to Apache Cassandra using DataStax Driver DataStax Open Source C# Driver - https://github.com/datastax/csharp-driver
  35. 35. Copyright 2016 Expero, Inc. All Rights Reserved 35 Writing Data to Cassandra
  36. 36. Copyright 2016 Expero, Inc. All Rights Reserved 36 Reading Data From Cassandra
  37. 37. Copyright 2016 Expero, Inc. All Rights Reserved 37 Time to See Some Running Code Average Ping Time Running in Oregon
  38. 38. Copyright 2016 Expero, Inc. All Rights ReservedCopyright 2016 Expero, Inc. All Rights Reserved Tradeoffs of gRPC and Cassandra 38
  39. 39. Copyright 2016 Expero, Inc. All Rights Reserved 39 ● Not for Browsers ● Chunk “Big” (>1MB ) Data ● No Nullable Data Types ● Not Production Yet Tradeoffs of using gRPC
  40. 40. Copyright 2016 Expero, Inc. All Rights Reserved 40 ● No joins between tables ● No Ad-Hoc queries ● Minimal Aggregations ● Complexity ● Cassandra is Not Relational Tradeoffs of using Cassandra
  41. 41. Copyright 2016 Expero, Inc. All Rights Reserved 41 ● gRPC ○ http://www.grpc.io/ ○ https://developers.google.com/protocol-buffers/docs/proto3 ● Cassandra ○ http://cassandra.apache.org/ ○ http://www.planetcassandra.org/ ○ https://academy.datastax.com/ ○ http://www.datastax.com/ Learning More
  42. 42. Copyright 2016 Expero, Inc. All Rights ReservedCopyright 2016 Expero, Inc. All Rights Reserved Thank you, any Questions? 42

×