Новые возможности распределенной обработки данных в...

Preview:

Citation preview

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Распределенная обработка данных в памяти с помощью Coherence 12c

CAF 12cАнтон Шмаков

Программа

Краткий обзор Coherence

Возможности Coherence 12c

Редакции Coherence

Планы развития Coherence 12c

Примеры внедрений

Программа

Краткий обзор Coherence

Возможности Coherence 12c

Редакции Coherence

Планы развития Coherence 12c

Примеры внедрений

Oracle Coherence: лидер рынка и пионер отрасли

2000-2006 2008-2012 2013-2014 2015+

2000

Tangosol Founded

Coherence 3.5 – 3.7

Broadening

popularity,

integration

across

FMW

2013 12cR1 12.1.2Strategic part of CAF HotCache, Managed Servers

2014Coherence launched as part of JCS

2011 3.7.1Exalogic Integration

2014 12.1.3JSR-107 ratified, led by Oracle + Coherence

2015 12cR2MAA MultitenancyJDK8

2001

Coherence 1.0

2007

Acquired by Oracle

Coherence In Memory Data GridЗачем это нужно

� Производительность

приложений� Прямой доступ из оперативной памяти –

информация более близка к приложениям

� Масштабируемость приложений

� Уменьшение нагрузки на базы за счет кэширования в памяти

� Надежность работы приложений

� За счет надежного распределенного кэша

CoherenceIn Memory

Data Grid

ПриложенияПриложения

Новая архитектура работы приложенийSocial, Mobile, «Internet of Things»

In-Memory

Data Grid

Больше данных из

разных источников

Пользователи и

приложения

работают в

реальном времени

Coherence:

Распределенный кэш

и обработка в памяти

Coherence – первое решение по объединенному распределенному кэшу в памяти

Первое поколение решений

по кэшированию

Приложение Приложение

Независимый

кэш

Независимый

кэш

� Сложное масштабирование

� Сложно поддерживать свежие данные

в памяти

� Большие требования к памяти

Приложение Приложение

Современная наилучшая практика

работы с данными в памяти

Слой приложений

Слой приложений

Кластеризованный кэш в памяти

(Clustered Cache Data Grid)

Coherence Coherence Coherence Coherence

Слой данных в памяти (Data Grid)

� Легкое масштабирование – горизонтально и

вертикально

� Легкость обновления данных – один кэш

для обновления

� Сильное увеличение производительности за

счет параллельных вычислений

Серверы приложений с Coherence Производительность при использовании уровня данных в памяти (Data Grid)

In Memory Data Grid

Кластер серверов приложений

WLS

Coherence

WLS

Coherence

Сервер приложений

Coherence

CoherenceCoherence

CoherenceCoherence

Coherence

Сервер WebLogic Server + Coherence

Примеры использования технологииКому это нужно

� Кэширование

o Клиентские приложения запрашивают и работают с данными в памяти, а не на серверах хранения

� Аналитика

o Клиентские приложения запрашивают данные из памяти (есть язык CohQL похожий на SQL) и моделируют в памяти

� Вычисления

o Приложения производят вычисления (бизнес-логику и транзакции) в распределенной памяти

� События

o Приложения производят действия основываясь на событиях в распределенной памяти

Oracle CoherenceОсновные свойства и преимущества

� Технология data fabric/grid для управления данными в распределенной

сети без точки отказа (все узлы равноправны – без single points of failure)

� Единое представление данных на всех узлах

� Данные и индексы «поднимаются» в оперативную память с

автоматическими транзакциями изменений в базу данных (с

пониманием flash disks, SSD и обычных дисков)

� Динамическое распределение данных по узлам и автоматическая

балансировка нагрузки

� При потере одного узла остальные перераспределяют его нагрузку

� Поддержка различных запросов, которые параллельно обрабатываются

узлами

� Линейное масштабирование системы (внедрения до тысяч узлов)

� Расширенная безопасность (авторизация, использование identity token)

Coherence Clustered CachingРаспределенный, устойчивый к сбоям, самоподдерживающийся

� Кластер узлов с данными (локальные и архивные)

�Данные узлов архивированы на другие узлы

�Любой узел знает обо всех данных во всех узлах

� Все узлы проверяют жизнеспособность других

� Если один из узлов «умирает», остальные узлы узнают о его состоянии

� «Умерший» узел изолируется из кластера

�Остальные узлы перераспределяют данные (основные и архивные) и принимают на себя работу этого узла

?

In-Memory Data Grid

Data

Распределенный кэшБезграничные возможности работы с данными и вычислениям в памяти

� Загруженные данные распределяются в памяти

�Объем данных и скорость обработки масштабируются линейно

� Система с распределенной ответственностью

� Скорость доступа и задержки (latency) постоянны

�Наилучшее решение для большого объема часто изменяемых данных

Applications

Process Process Process Process

Virtual Load Balancing

Coherence Cluster

ОтказоустойчивостьАвтоматическое управление целостностью

� Бэкапы хранятся на разных машинах

�Настраиваемое количество копий объектов

�Делегирование функции бэкапированиеопределенным узлам

� Единый процесс управления доступностью объектов

In-Memory Data Grid

Data

Applications

Process Process Process Process

Virtual Load Balancing

Fault Tolerance Management

Coherence Cluster

Репликация кэшаБыстрый доступ к объектам кэша

� Все данные кэша реплицируются

�Данные хранятся в виде нативных Java объектов

�Прямой доступ к данным

�Изменения объектам реплицируются на весь кластер

�Идеально подходит для небольших объемов статических данных

In-Memory Data Grid

Process Process Process Process

Replication

Data

Applications

Coherence Cluster

In-Memory Data Grid

Data

Near CachingОбеспечение быстрого доступа к данным

�Данные делятся на локальные и распределенные по узлам, на локальные и архивные

� Система учитывает часто изменяемые данные и данные, к которым часто обращаются

� Часто используемые данные хранятся локально для быстрого доступа

� Есть различные стратегии автоматического пополнения/обновления данных

� Система масштабируется линейно Process Process Process Process

Virtual Load Balancing

Coherence Cluster

Application Application Application

Клиенты, прокси, POFОптимальный доступ через встроенный протокол и REST

� Клиенты: Java, .Net, C++ и REST

� Типы клиентов:

� Coherence*Extend – внешние по отношению к кластеру

� Compute Clients – Java клиенты, часть кластера Coherence

� REST – клиенты

� POF (Portal Object Format):

� Сжатый бинарый формат объекта

� Оптимальные хранения объектов в кластере

� Снижает сетевые накладные расходы

� Быстрое индексирования для доступа к определенным полям объекта

REST ClientPOF

Cache

Java Client

Cache Server Tier

Coherence Extend

.NET Client

C++ Client

Java Client

Proxy Tier

POF

Objects

POF

Coherence Cluster

Различные методы работы с данными в памяти

� Кэш «в стороне», т.е. данными управляют разработчики

o Помещаем данные в память после чтения из источника данных

o Убираем или изменяем кэш после записи в хранилище

� Синхронный режим

o Все данные читаются и пишутся через кэш

o Изменения в кэше производятся синхронно с изменениями в хранилище

� Асинхронный режим

o Все данные записываются/изменяются через кэш

o Изменения производятся асинхронно с источником данных

DAO Cache

DAO Cache

Cache

DAO

Параллельная обработкаЗапросы, обработка, агрегирование в памяти

� Запрос на обработку посылается туда, где находятся данные

�Обработка происходит параллельно в кластере

o Query the Data Grid

o Continuous Query Cache

o Parallel Processing on the Data Grid

o Map/Reduce Aggregation

� Гарантия единократного ответа (Once-and-only-once guarantees)

�Обработка масштабируется по количеству узлов

In-Memory Data Grid

Process Process Process Process

Coherence Cluster

Application

Processing

Unit

Уведомления о событияхПоддержка работы с событиями

� Уведомления о событиях в рамках кластера:

� Java Bean

� Key-based

� Filter-based

� «Живые» объекты

� Объекты могут реагировать на изменения своего собственного состояния

� Состояние всегда можно определить

In-Memory Data Grid

Process Process Process Process

Coherence Cluster

Application Application Application

Эластичность данныхРеволюционный подход к масштабированию

Эластичность расширяет доступный объем

данных

� Прозрачность хранения данных на более дешевых SSD-дисках

� Расширяет возможности Coherence в десятки раз

� Можно работать с меньшим числом узлов (уменьшая сложность системы)

Кластер без эластичности

� Размер ограничен количеством дорогой оперативной памяти

� Практический предел - 10TB данных

o 100 узлов кластера

o 10-20GB памяти в каждом узле

Node

1

Node

2

Machine 1

Node

3

RAM

Node

4

Node

5

Machine 2

Node

6

Cluster

RAM

Cluster

Node

1

Node

2

Machine 1

Node

3

RAM

Node

4

Node

5

Machine 2

Node

6

RAM

SSD SSD

до 10TB данных до 100TB данных

Интеграция WebLogic и Coherence«Из коробки»

�Администрирование, операционный контроль и управление встроены в WebLogic

�Декларативное масштабирование и управление сессиями

�Работа с памятью в синхронном/асинхронном чтение/запись

�Аналитика, обработка событий, вычисления

Coherence

WebLogic

Coherence

WebLogic

Coherence

Coherence

WebLogic

Coherence

WebLogic

Coherence

Data CacheCoherence

Data Cache

Coherence

WebLogic

Coherence

WebLogic

CoherenceQuery/Event

CoherenceQuery/Event

CoherenceQuery/Event

CoherenceQuery/Event

Декларативное управление

сессиями

Кэширование в режимах

чтения и записиЗапросы, вычисления и события

Coherence

Coherence Coherence

Дополнительные возможности

� GoldenGate HotCache – решение проблемы

«stale cache» (изменение данных в

источниках из сторонних систем)

o Golden Gate определяет изменения и производит их в

кэше используя JPA/TopLink Grid

o Не требуется программирования

o Расширяет возможности решения на большие и

сложные системы

� Федеративный кэш (распределенные

изменения в разных системах data grid) с

поддержкой различных распределенных

систем (Active/Passive, Active/Active, Hub &

Spoke) и разрешением конфликтов Hub & Spoke Group

Tokyo

London

Sydney

Active/Passive Group

New

York

Active/Active

Group

Программа

Краткий обзор Coherence

Возможности Coherence 12c

Редакции Coherence

Планы развития Coherence 12c

Примеры внедрений

Резервное копирование

• Синхронное и асинхронное резервное копирование

• Асинхронное резервное копирование увеличивает пропускную способность на 40-50%

• Компромисс между высокой доступностью и производительностью

Асинхронный бэкап

Primary BackupClient

1

2 2

3

Asynchronous Backup

Primary BackupClient

1

3

2

4

Synchronous Backup

Резервное копирование

• Многоуровневое резервное копирование

• Гарантированное сохранение данных в случае одновременной катастрофы нескольких машин

• Компромисс между высокой доступностью и производительностью

Множество мест копирования

PrimaryClient Backup

Backup

Backup

Pre-12.1.2

PrimaryClient Backup Backup Backup

12.1.2

Coherence опции высокой доступности

• Узел

• Машина

• Стойка - новое

• Сайт - новое

Узел, машина, стойка, сайтRack 2

Machine 5

P4’P4’

P5P5

Machine 8

P2’P2’

P8P8

Machine 7

P1’P1’

P7P7

Machine 6

P3’P3’

P6P6

MANSite 1

P1P1

P2’P2’

Site 2

P2P2

P1’P1’

Rack 1Machine 1

P8’P8’

P1P1

Machine 4

P5’P5’

P4P4

Machine 3

P6’P6’

P3P3

Machine 2

P7’P7’

P2P2

«Живые» события Coherence

• Единый подход ко всем событиям:

– Триггеры, листенеры

• Формализация программного кода для событийного подхода

• Декларативная конфигурация

Событийно-ориентированная архитектура

Coherence Live Events

Apps

Interceptors

with

Custom Logic

• Асинхронный запуск задачи

• Сохраняет ресурсы клиентов

– Больше не надо делать fork/invoke

– Решает проблемы загрузки системы

• Мгновенный запуск задачи:

– Без ожидания ответа

– Больше одной задачи одновременно

– Балансировка нагрузки

• Защита от «агресивных» клиентов

Simple InvocationAsynchronousProcessor procAsync =

new AsynchronousProcessor( new NumberIncrementor( (ValueManipulator)null, 1,

false));

cache.invoke(0, procAsync);procAsync.get();

Invocation with Callbackfinal Entry[] aEntry = new Entry[1];AsynchronousProcessor procAsync = new

AsynchronousProcessor(new NumberIncrementor((ValueManipulator) null, 1, false)){

@Overridepublic synchronized void

onResult(Entry entry){ aEntry[0] = entry; }

@Overridepublic void onComplete(){

Object oMonitor = AsynchronousProcessorTests.this;synchronized (oMonitor){ oMonitor.notify(); }

}};

cache.invoke(0, procAsync);

// call back when result receivedwhile (aEntry[0] == null)

{synchronized (this)

{ wait(500) }}

Асинхронные EntryProcessors

Адаптер к Memcached

• Миграция из Memcached

• Поддержка популярных клиентов Memcached

• Использование всех возможностей Coherence

–Масштабируемость, доступность, надежность

–Интеграция источников данных с поддержкой HotCache

– Безопасность

Memcached

… Client

Cache

Memcached Acceptor

Memcached

Ruby Client

POF Serializer

Cache Server

Proxy Server

Memcached

Java Client

Memcached

PHP Client

Поддержка JCache (JSR-107)Стандартный API для кэширования на Java EE

• JSR-107

–Oracle управлял разработкой стандарта

– Единогласно принят в 2014

• Полностью поддерживается в Coherence

– Поддержка сложной топологии кэширования

– Совместимость со всеми типами клиентов

– Поддержка всех возможностей

Application

javax.cache.* API (JSR-107 JCache)

Coherence

Cache

Coherence Cluster

Coherence JSR-107 Adapter

Coherence API (NamedCache)

Улучшения в безопасности REST и удобстве использования

• Защищенный канал SSL

– HTTP basic authentication, client-side certificates

– Fine-grained authorization

• Улучшения в работе запросов

– “named queries”

– Лимит на результаты запросов

– Получение кeyset

• Подключаемые движки запросов (Query Engines)

Улучшенные интеграция с клиентами

In-Memory Data Grid

Proxy Tier

Data Tier

Coherence на Exalogic

• Infiniband Message Bus

– Снижение времени отклика до 6 раз

– Построено на Exabus APIs

• Более эффективное использование памяти и SSD дисков

• Увеличение скорости ребалансировки до 16 раз для повышения доступности

Улучшение производительность, снижены требования к железу

10Gbe IPoIB InfiniBand

Message Bus

Up to 6x Better Response Time

Программа

Краткий обзор Coherence

Возможности Coherence 12c

Редакции Coherence

Планы развития Coherence 12c

Примеры внедрений

Редакции CoherenceCoherence Standard Edition Coherence Enterprise Edition Coherence Grid Edition*

•Fault-tolerant data caching

•Unlimited Data Clients

•Coherence SE + •Data management, including write-behind, transactions, analytics and events•Coherence*Web•Managed Coherence Servers

•Coherence EE +•Unlimited Real-time clients**•Unlimited Cache Clients**•WAN Support•Elastic Data•GoldenGate HotCache

* Customers who have purchased WL Suite and want to upgrade to from Coherence EE to GE can now do so via a WebLogic Suite option.

** Data Clients are C++, Java, .NET, or REST clients that are not cluster members. Real-time clients are clients that use near cache, CQC, or listen to events from the cluster. Cache Clients are storage-disabled cluster members.

Программа

Краткий обзор Coherence

Возможности Coherence 12c

Редакции Coherence

Планы развития Coherence 12c

Примеры внедрений

Oracle Coherence 12c Roadmap

12.1.2 (July 2013)

• Managed Coherence Servers

• GoldenGate HotCache

• Live Events

• Configuration Modernization

• Asynchronous Backups

• Improved Backup Management

• Maven Support

• Exalogic optimizations

• Dynamic Proxy Thread Pool Tuning

• REST Improvements

• OUI/Opatch Integration

Community @ Java.Net

• Coherence Incubator 12 (12.1.2)

• Coherence Spring Integration

• Coherence Hibernate 4 L2 Cache

2013 2015

12.1.3 (June 2014)

• JSR 107/Jcache

• Memcached Protocol Support

• VisualVM Plugin

• Exalogic IMB 2.0

• Asynchronous EntryProcessors

12.2.1

• Multitenancy

• Recoverable Caching

• Federated Caching

• Authorization/Audit Improvements

• Oracle Fusion Middleware Control

• Managed Coherence Servers 2.0

• Elastic Data Improvements

• Java 8 Support

• Generics Support

2014

Recoverable Caching

• Recoverable storage of cached data

• Automatic recovery from cluster failure

• Transactional or on-demand durability

• Multiple storage topologies

–Maximum Scalability with distributed local disks

–Maximum Availability with shared storage (e.g. SAN)

Enabling Coherence as Store of Record

Coherence Cluster

Application

In-M

em

ory

On

-Dis

k

Hub & Spoke Group

Tokyo

Federated Caching

• Distribute data grid updates

• Span on-premise and cloud cluster

• Multiple distribution strategies

– Active/Passive

– Active/Active

– Hub & Spoke

• Overlay distribution strategies across locations

• Pluggable Conflict Resolution

Multi-Datacenter Solutions London

Sydney

Active/Passive Group

New

York

Active/Active Group

Preliminary Testing: >75% more throughput, up to 7x lower replication time

Multitenancy

• Host Multitenant Apps in Coherence

– Share cluster infrastructure

• Flexible cache configuration

– Tenant-specific caches

– Shared caches for common data

• Cache and Data Grid Operation Isolation

– Tenant scoped to Coherence Service

• Resource tuning via tenant configuration

• Common CAF lifecycle tooling

Density and Operational Efficiency

Tenant 1

OHS / OTD

Coherence

Cache T1

WLS - MT

Coherence API (NamedCache)

Tenant 2

T2

T1 T1 T1

T2T2T2

Elastic Data Improvements

• Improved Index Management

– Reduced Memory Footprint (target: 12.1.4)

–Query Optimization Engine (likely post 12.1.4)

• Significantly increases cluster densities

– ~10x over on-heap

• Opens up new “extra-large” use-cases

• Increased density reduces operational costs

Increased Density and Larger Data Grids

Coherence Cluster

Machine 1 Machine 2

RAM

Node

1

Node

2

Node

3

SSD

Data Index

RAM

Node

1

Node

2

Node

3

SSD

Data Index

Программа

Краткий обзор Coherence

Возможности Coherence 12c

Редакции Coherence

Планы развития Coherence 12c

Примеры внедрений

Пример внедрения: NTT DocomoАналитика мобильных событий в реальном времени

� Самый крупный мобильный оператор в

Японии

� Oracle Event Processing and Oracle Coherence

� Наполняет и коррелирует трафик для Big Data

� 13 миллионов пользователей смартфонов

� Более 700,000 событий в секунду

� 50% снижение себестоимости

Mobile

Traffic

Web

Devices

Real-time traffic processingOracle Coherence + Event Processing

Managing Events in Real Time

Big Data

Join the Coherence Community

Visit us at: coherence.oracle.com

Oracle Coherence

Users

/OracleCoherence@OracleCoherence blogs.oracle.com/

OracleCoherence

/OracleCoherence

4

Recommended