Transcript
Page 1: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Kako obraditi velike količine podataka u realnom vremenu koristeći Cloud okruženjekoristeći Cloud okruženje

Ivica Čardić Senior Software Engineer, Liferay Inc.

Page 2: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Sadržaj

● Trendovi● Liferay Cloud Services sustav● Arhitektura sustava● Budući planovi● Budući planovi

Page 3: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Trendovi

Map Reduce

Big Data

Cloud Computing

Apache Cassandra

Apache Hadoop

Big Data

Real-time processing

Amazon Web Services

RedisNo SQL

Auto Scaling

Distributed Systems

MongoDB

OpenStack

RackSpace

Page 4: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Liferay Cloud Services (LCS)

● Poslovni zahtjevio Upravljanje portalima

� Hijerarhijska organizacija� Osnovne informacije o registrianim portalima � Osnovne informacije o registrianim portalima � Automatsko otkrivanje portala u cluster-u

o Download zakrpi(FixPacks)o Metrika portala(JVM, Server, Aplikacija)

Page 5: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Liferay Cloud Services (LCS)

● Tehnički zahtjevio SAAS aplikacija

o Tisuće servera spojenih istovremeno

Prikupljanje velikih količina podatakao Prikupljanje velikih količina podataka

o Skalabilan sustav

� Modularnost

� Komunikacija REST servisima

Page 6: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Arhitektura sustava

Page 7: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Amazon Web Services● Resursi

o Amazon EC2, Auto Scaling, Elastic Load Balancing● Skladištenje

o Amazon S3, Amazon EBS● Baze podataka● Baze podataka

o Amazon RDS(MySQL), Amazon ElastiCache(Redis)● Procesiranje

o Amazon EMR(Apache Hadoop)● Aplikacijski servisi

o Amazon SNS, Amazon SQS● Deployment & Management

o Amazon CloudWatch

Page 8: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Amazon EC2 Konzola

Page 9: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Amazon Auto Scaling

● Dinamički pokreće i zaustavlja EC2 instanceo Amazon CloudWatch servis ili o Planirani vremenski periodi

● Zamjenjuje nezdrave ili nedostupne instance● Zamjenjuje nezdrave ili nedostupne instance● Obavještava korisnike o promjenama

o Amazon SNS servis

Page 10: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Netflix Asgard

Page 11: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Klijent

● Portleto Sučelje za registracijuo Niti za komunikaciju

● Registracija portalaLCS Portlet

Customer Portal

● Registracija portalao otkriva portale u cluster-u

● Handshake● “Dvosmjerna” veza

o Prikuplja podatkeo Izvršava komande

OSB LCS Gateway

LCS Dashboard

Podaci Registracija

Page 12: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Klijent

Page 13: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Gateway

● Server: Apache Tomcat● Java Servlet● Stateles arhitektura

o Tomcat-i nisu u clusteru

OSB LCS Gateway

Amazon ElastiCache(Redis)

Podaci

Autorizacija

o Tomcat-i nisu u clusteru● Dobiva podatke od klijenta● “Šalje” komande klijentu● Autorizacija portala prilikom

slanja podataka

Amazon SQS

ElastiCache(Redis)

Page 14: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Amazon SQS

● Pouzdan● Jednostavan za korištenje● Skalabilan● Siguran● Siguran● Jeftin● Alternative: JMS, RabitMQ, ZeroMQ

Page 15: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Processor

● Server: Apache Tomcat● Akka framework● Stateless arhitektura

o Tomcat-i nisu u clusteru

Amazon SQS

Amazon ElastiCache(Redis)

Podacio Tomcat-i nisu u clusteru

● Sprema podatke u Cassandru

● Provjerava autentičnost portala

OSB LCS Processor

CassandraNOSQL

Podaci

Page 16: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Amazon ElastiCache (Redis)

● Podržava Redis i Memcached● Redis

o key-value in-memory baza podatakao moguće spremanje podataka na disk kreiranjem o moguće spremanje podataka na disk kreiranjem

dump datoteke ili dodavanjem komandi u logo tipovi podataka: string hash, lista i seto podržava master-slave replikacijuo podržava transakcije, publish/subscribe, ograničeno

vrijeme života podataka, rad isključivo kao cache

Page 17: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Apache Cassandra

● Linearna skalabilnost● Brzi upis podataka● Fleksibilna pohrana podataka● Ne sadrži centralno mjesto pogreške● Ne sadrži centralno mjesto pogreške● Jednostavna distribucija podataka● Pojednostavljena administracija● Podrška za transakcije (AID)● Sporije čitanje podataka● Oprez prilikom modeliaranja podataka

Page 18: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Dashboard

● Apache Tomcat● Liferay portal● Sučelje implementirano

kao skup portleta

MySQL

OAuth

File RepositoryAmazon

S3

LCS Dashboard

kao skup portleta● Klijent vrši autentifikaciju

preko OAuth-a● Integracija sa centralnom

bazom korisnika Cassandra

NOSQL

OSB LCS Portlet

OSB LCS NOSQL

Amazon EMR

Page 19: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Dashboard

Page 20: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Dashboard

Page 21: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

LCS Dashboard

Page 22: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Amazon EMR(Apache Haddop)

● Omogućava distribuirano procesiranje velikih količina podataka preko grupe računala koristeći jednostavne programske modele

● Po potrebi povećava broj servera● Po potrebi povećava broj servera● Koristi se pri izračunu dostupnih zakrpa za

svaki server

Page 23: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Budući planovi

● Private Beta● Error i Log management● Web analitika

Page 24: JavaCro'14 - How to handle large amounts of data in real time using a cloud environment – Ivica Čardić and Igor Bešlić

Hvala

Ivica ČardićSenior Software Engineer

[email protected]@liferay.com

Igor BešlićSenior Software Engineer

[email protected]


Top Related