red hat jboss data grid 6 - emergent · red hat jboss data grid 6 ... an in-memory distributed...
TRANSCRIPT
2
Agenda● Business Challenges● Architectures
● Awesomeness● Querying/Indexing● Real-time applications● Standards based Security● Map/Reduce● Monitoring● Road Map
4
Traditional data and knowledge
● In people, on paper, and in data warehouses
● In relational tables, rows, and columns
Modern data and knowledge
● On websites, mobile devices, and in the cloud
● Global, at home, at work, and distributed
● In non-traditional and non-relational forms
● Video, images, phrases, and tags
● Tweets, timelines, conversations, comments, and “likes”
Business today
Varied, real-time, complex in nature...
5
The challenge
How do you design your application for:
● Performance during unprecedented transaction volumes?
● Availability to meet high uptime requirements?
● Flexibility in open hybrid cloud environments?
● Reliability to provide accurate, real-time information?
● Independence from the complex, rigid data-tier?
6
Modern challenges, traditional solutions?
Design for more...● Pile on complex code, servers,
databases, DBAs
● Cost-prohibitive
● Quick fix until you need to scale again
Start from scratch...
● Completely re-architect
● Sharding? Denormalization?
● Complicated
● Time- and resource-intensive
● Risky
7
What is a data grid?
● An in-memory distributed database designed for fast access to large volumes of data and scalability
● Commonly a complementary layer to the relational database and the application
Key data grid characteristics:
● In-memory, distributed caching
● Elastic scalability
● Advanced querying
● Data replication
● Processing for streaming data
● Transaction capabilities
8
“Although the in-memory data grid (IMDG) market, a key IMC segment,is small, it is likely to grow fast and to
reach $1 billion by 2016.”
SOURCE: Gartner, Gartner Says In-Memory Computing Is Racing Towards Mainstream Adoption, http://www.gartner.com/newsroom/id/2405315
9
Fast access to data
● In-memory speeds, high availability, reliability, elasticity
● Built on proven, popular open source Infinispan technology
Flexibility beyond Java
● Compatible with Java and non-Java platforms
Premium and advanced features in a cost-effective subscription
● Includes Red Hat JBoss Operations Network Management for management tooling
● Includes remote clients
11
Configuration - Local cacheAlleviate load on the traditional database and boost application performance
A more sophisticated data structure...
● Memory management
● Persistence
● Eviction, expiration
● Eliminate memory overflow errors
● Warm-start, preload
● Transaction capable (JTA)
● Rich monitoring and administration (via JBoss Operations Network)
● Events and notifications
● Plugs into many frameworks to boost performance
Ideal for:
Single processes
Data unique to a process
Unshared data
12
Configuration – Remote CacheSeparate the lifecycle and maintenance of theapplication from its cache/data.
13
Configuration - Replicated cacheUltimate failover protection
● Instant reads, linear performance scalability
● Network overhead scales linearly
● Limited to a single JVM heap size
● Replicate the same key/value, updates across the cluster
Ideal for:
Small, fixed datasets
Scenarios requiring extremely high fault tolerance
Real-time read access by multiple applications
14
Configuration – Data gridGlobal, distributed processing and scale
● Distributed, horizontally scalable, unlimited storage
● Move processing to data with map/reduce
● Low-latency, fast performance
● Eliminate single point of failure
● Multiple access protocols
● Compatible with applications written in any language, any framework
15
Cross datacenterreplicationKey functionality
● Achieve failover with active-passive or active-active
● Synchronous and asychronous replication
● High availability to meet SLA requirements for data within and across datacenters
● Geographic data partitioning with failover
17
Client and serverMultiple access protocols
Protocol Format Client type Smart? Load balance and failover
REST text any no external
Memcached text any no pre-defined
Hot Rod binary Java, C++ yes auto/dynamic
Hot Rod: Infinispan's native TCP client/server protocol
● Hashing and topology aware
● Failover during topology changes
● Smart request routing in partitioned or distributed server clusters
18
Data compatibility modeKey functionality
● Access data regardless of how it was stored
Library mode and client/server mode interoperability
● Data written by a Library mode application can be read over a remote client (and vice versa)
Protocol interoperability
● Data written via one protocol can be read via another protocol
● Example: Write data via the REST protocol and read data via Hot Rod protocol
Cross-language interoperability
● Data written via the C++ Hot Rod protocol can be read by an application via the Java Hot Rod protocol (and vice versa)
Access via Hot Rod
Access via memcached
19
Cache ManagementExpiration - Keep your data fresh
● Removes entries...● Based on time they have been in memory (lifespan
value or maximum idle time value)● Globally (memory, cache stores, cluster...)
● Specified on a per-entry or per-cache basis
20
Cache ManagementEviction – Avoid running out of memory
● Remove entries based on how recently (and often) they are used, and only when too many entries are present
● Remove entries from memory and remain in cluster and persists to cache stores (if a cache store exists)
● On a per node basis
● Strategies● Least Recently Used (LRU) - default● Unordered eviction strategy – recommended for testing
purposes● Low Inter-reference Recency (LIRS)
21
Options for Persistence
● Cache store options
● File Based Cache Store● LevelDB (JNI)● Database (JDBC)● JPA Cache Store (Hibernate)
● Read-through
● If data is not in cache, then read from cache store
● Write-through
● Write to cache store sychronously
● Write-behind
● Write to cache store asychronously
23
JBoss Data Grid Marshalling
● Keys are Strings
● Values are typically Java Objects but really can be anything that
● Implements the Java Serializable
● Serialized via a custom Serializer (think Java Externizable)
● Transformed into a String
● XStream● JSON
25
JBoss Data Grid Querying
● Querying API enables you to search for entries in the grid using values instead of keys
● Features include:
● Keyword, Range, Fuzzy, Wild-card, and Phrase queries
● Combining queries
● Sorting, filtering, and pagination of query results
● API is based upon Hibernate Search and Apache Lucene
● Currently supported only in library mode, and Hot Rod (tech preview)
30
JBoss Data Grid Listeners and Notifications
● Both Cache and CacheManager implement Listenable
● Attach Listeners and receive notifications
● Listen for CRUD Operations
Cache c = cacheManager.getCache(“MyAwesomeCache”);
c.addListener(“MyAwesomeListener”);
...
@Listener (sync=false)
public class MyAwesomeListener {
@CacheEntryCreated
public void print(CacheEntryCreatedEvent event) {System.out.println("New entry " + event.getKey() + " created in the cache");
...
31
JBoss Data Grid Futures
● Listeners can be attached to a NotifyingFuture to notify the user about a completed future
FutureListener futureListener = new FutureListener() {
public void futureDone(Future future) {
try {future.get();
} catch (Exception e) {// Future did not complete successfullySystem.out.println("Help!");
}}
};
cache.putAsync("key", "value").attachListener(futureListener);
...
34
Live updates to your Web Application
● WebSockets
● Standard in HTML 5
● Standard in JEE7
● Full Duplex (two way communication) between Client/Server
● Web Servers easily push updates to Browsers
● Dedicated Connections
● Many Benefits● Full Duplex● Reduced Resources● Scalable● Supported in all modern browsers (Chrome, Firefox, IE, Safari,
Opera)
35
JBoss Data Grid Listeners With WebSockets
● @CacheEntryCreated
● public void sendNewJSON(CacheEntryCreatedEvent event) {
Employee emp = new Employee(event.getValue());
String json = JsonWriter.objectToJson(emp)
session.sendText(new TextMessage(json));
...● Infinispan Web Socket JavaScript Libraries
● Ask for notifications directly on the client!
● Available in community, but not yet supported
● Status is Alpha● Working its way through QA
37
JBoss Data Grid Security
● Store confidential and personally identifiable information (PII) securely on the grid
Data Security
● User Authentication
● Role-based access control to caches and cache managers
● Node authentication and authorization
● Encryption of communication between cluster nodes
● Audit logging framework
38
Data Security in JDG 6.3 Design considerations
● Use case: Protect confidential or personally identifiable information (PII) stored on the grid.
● Use popular protocols
● X.509 certificates
● TLS/SSL
● Kerberos
● Use standard Java security frameworks/libraries
● Simple Authentication and Security Layer (SASL)
● Java Authentication and Authorization Service (JAAS)
● Java Secure Sockets Extension (JSSE)
● Java Cryptographic Architecture (JCA)
51
MapReduce
● JBoss Data Grid MapReduce model is an adaptation of Google's Map Reduce model
● Generate and process large data sets
● Best suited for handling large data sets in real-time
● Not a one-to-one replacement for Hadoop
● Hadoop is better suited for deeper analytics and analytical processing
● JBoss Data Grid can complement Hadoop solutions in many customer environments
53
JBoss Data Grid is Cool
● JBoss Data Grid fully supports Java Transaction API (JTA) compliant transactions
● Infinispan includes Context and Dependency Injection (CDI)
● Rolling Upgrades now supported in Client/Server Mode (Hot Rod and REST)
● Data Compatibility Mode allows you to read data written in different protocols and interfaces (Write in Hot Rod C++, Read in Python REST)
● Distributed Execution not only through MapReduce but also through the JDK ExecutorService
55
Management and administrationRed Hat JBoss Operations Network
● Centralized control for management and administration of all Red Hat JBoss Middleware
● Efficiently monitor JBoss Data Grid performance and availability ● Clearly exposes node state and statistical information needed to manage tens to
hundreds of JBoss Data Grid nodes● Displays information in clear and concise manner
57
JBOSS DATA GRID ROADMAPSubject to Change
JDG 7
7.0
JDG 6
6.06.0 6.16.1 6.26.2
6.3 (July 2014)● Security –
Authentication/Authorization ● .NET Hot Rod client (Tech Preview)● Support in Karaf and Weblogic● EAP 6 modules
6.4 (Target Jan/Feb 2015)● Remote Querying – Full Support● Clustered listeners● Handling network partitions● Integrate with JBoss Fuse (Camel
component)● Cross Site state transfer ● Remote listeners – Tech Preview
6.36.3
6.2 (January 2014)● Querying- Support in Library mode● Remote Querying (Tech Preview)● C++ Hot Rod Client● Data compatibility across protocols● High performance cache stores
6.56.4
6.5 (Target end Q2 CY15)● Remote listeners – Full Support● OpenShift deployment - xPaaS