Você está na página 1de 18

JUSTJAVA2006

SUCESU-SP Sociedade de Usurios de Informtica e


Telecomunicaes So Paulo

Conferencista : Alberione Braz da Silva e Marcelo Martins


Pires

Conferencista

Alberione Braz da Silva


Consultor de Negcios e Sistemas para Amrica Latina pela Telefonica
Internacional S/A.
Mestre em Sistemas de Computao pela Pontifcia Universidade
Catlica de Campinas e Engenheiro de Minas pela Universidade
Federal de Pernambuco

Marcelo Martins Pires


Consultor de Sistema para Brasil e Amrica Latina da Telefonica.
Especialista Solues J2EE pela FIAP, Especialista em Orientao a
Objetos pela Unicamp e Tecnlogo em Processamento de Dados pela
FATEC

Ttulo

Java para sistemas de misso critica:


mito ou realidade?

Agenda

Premissas Envolvidas

Arquitetura Sugerida por Fornecedores e a arquitetura utilizada

Influncia da Arquitetura no desenvolvimento de um sistema de misso


crtica

Fluxo do processamento

Custo computacional

Uso de I/O atravs do DMA (Direct Memory Access)

Codificao

Melhores praticas para programao

Ordenao atravs comportamento das classes

Persistncia de dados utilizando o BerkeleyDB

Framework Spring

Demonstrao dos resultados

Concluso

Propostas

Perguntas

Premissas Envolvidas

As principais premissas eram utilizao do java como


linguagem de programao e com mxima portabilidade,
outras foram:
Processamento de 500 milhes de CDRs/dia.
Processamento on-line quase em tempo real (~3min).
Reduo de custo proposto com infra-estrutura.
Reduo de custo com aquisio de Software e
manuteno sem utilizao de OpenSource.

Arquitetura Sugerida por Fornecedores e a arquitetura utilizada

De modo geral a arquitetura proposta pelo fornecedor de


infra-estrtura para o sistema CORE foi de um equipamento
multiprocessado com 12 CPUs de 1.2GHz, com 24 Gbytes
de memria, com storage de 100Gbyte RAID-5 e com
banco de dados.
A arquitetura utilizada para o sistema CORE foi de um
equipamento multiprocessado com 6 CPUs de 1.2GHz
com 12 Gbytes de memria, com storage de 500Gbyte
RAID 0+1 (utilizado 150 Gbytes hoje).

Influncia da Arquitetura no desenvolvimento de um sistema de


misso crtica - Fluxo do processamento (4 etapas lgicas)

Gerenciador de
Processos de normalizao, consolidao e
recuperao de receita

Indica a seqncia dos semforos

4
3
2
2

Validao

Consolidao

Aplicao de
algoritmos

Agregao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Agregao
Normalizao
Normalizao

Arqs.
de
alertas

Arqs. CDRs Normalizadas consolidadas

Arqs. do BMP

Arqs. Validos e distribudos por Tecnologia

Arqs. CDRs Normalizados sem consolidao

Influncia da Arquitetura no desenvolvimento de um sistema de


misso crtica Custo Computacional (Relao entre CPUs,
Threads, memria e desempenho)
Normalmente, quando fala-se em Threads os desenvolvedores atemse na forma de disponibiliz-la e no em sua relaes CPUs e
Memria, que esta relacionado diretamente com custo
computacional. Como se segue:
CPUs
Para promover este ganho realizou-se as seguintes
aes:

Ganho de 6 CPUs

Fixou-se na JVM em 6 GBytes a memria mnima e


mxima utilizada, com isto, evita-se o overhead de
gerenciamento pela prpria JVM.
Usou-se a caracterstica do gerenciamento de
Threads do ambiente, ou seja, uso-se cinco threads
executando em paralelo (relao direta com a
quantidade de CPUs) e cinco em slice.

Threads

Ganho de 12 GBytes

Memria

Influncia da Arquitetura no desenvolvimento de um sistema de


misso crtica Uso de I/O atravs do DMA (Direct Memory
Access)
A caractersticas dos sistemas voltados a misso critica so grandes
volumes e grande quantidade de acesso as unidades de
armazenamento ou comunicao para tratamento das informao.

Para promover este ganho realizou-se as seguintes


aes:
Usou-se o DMA
Usou-se o pacote NIO que permite a utilizao do
DMA atravs da JVM

Codificao Melhores prticas para programao


A forma de codificao e a prpria lgica implementada pode afetar bastante
o desempenho, pois cada segundo perdido multiplicado pelo volume de
informaes a serem tratadas.
Acesso a
arquivos de
dados e
parmetros

Utilizar Classes e Mtodos que usam a DMA como estrutura de acesso a


arquivos (ex.:java.nio)
Utilizar Classes com menor nvel de hierarquia no Diagrama Classes de
referncia
Utilizar arrays de bytes ou caracteres para efetuar a leitura, transformao
e/ou gravao

Estrutura de
repetio e
condicionais

Utilizar sempre que possvel o comando FOR nas estruturas de lao/repetio


Utilizar preferencialmente o comando condicional switch/case
Utilizar o conjunto de condicionais IF sempre do melhor caso condicional para
o pior caso.
Evitar efetivamente o uso do comando ELSE nas estruturas condicionais (no
caso IF)

Estruturas de
classes e
objetos

Evitar a criao de instancias dentro fluxo crtico do processo


Evitar a concatenao de caracteres ou strings com o uso do sinal +
Evitar o excesso de extenso de classes
Evitar o redimensionamento de arrays, vetores e strings dentro do fluxo crtico
do processo
Evitar o uso de string em todo fluxo processamento crtico
10

Influncia da Arquitetura no desenvolvimento de um sistema de


misso crtica Ordenao atravs comportamento das classes
Organizao ordenada por nome de arquivo
...

...

Consolidao das CDR das 9 horas da manh

Localizao dos elementos, do arquivo consolidado, atravs da implementao de


Busca binria.
Ex: Localizando o elemento 88
00

11

22

33

44

55

66

77

88

99 100

00

11

22

33

44

55

66

77

88

99 100

00

11

22

33

44

55

66

77

88

99 100

11

Codificao Persistncia de dados utilizando o BerkeleyDB


Solues de baixo custo
Trata-se de um banco de dados embarcado (embedded database)
famoso por sua robusteza, performance e escalabilidade
Utilizado em solues de misso crtica
Pode ser usado em aplicaes que necessitem de storages concorrentes
de alta performance
No um servidor de banco de dados, no pode ser considerado como
um SGBD relacional ou orientado a objetos
No possui uma linguagem de consulta como o SQL
O Berkeley DB suporta transaes ACID, Undo e Redo (write-ahead
logging), recuperao de falhas com checkpoints, utiliza bloqueio para o
controle de concorrncia (two-phase locking) e detecta deadlocks.

12

Codificao Framework Spring

Spring AOP

Spring MVC

Spring ORM
Hibernate Support
JDO Support

Spring Web
Web Utilities

Spring DAO Spring Context


JDBC Support
DAO Support

Spring Core
Bean Container

JDBC Support
DAO Support

O mdulo Spring Core representa as


principais funcionalidades do Spring, no qual o
principal elemento o BeanFactory.
Trata-se de uma implementao do padro
Factory, responsvel em remover a
programao de Singletons e permitindo o
baixo acoplamento entre a configurao e a
especificao de dependncias, de sua lgica
de programao.

<bean id="axeAdapterManager" class="br.com.telefonica.sacc.core.adapter.controller.


DefaultAdapterManager" singleton="false">
<property name="broker" ref="axeBroker" />
<property name="parser" ref="axeParser" />
<property name="agregator" ref="connectorAgregatorManager" />
<property name="persistence" ref="persistenceManager" />
</bean>
package br.com.telefonica.sacc.core.adapter.controller;
public class DefaultAdapterManager implements AdapterManager, BrokerListener {
private CDRBroker broker;
private CDRParser parser;
private AgregatorManager agregator;
private PersistenceManager persistenceManager;

13

Demonstrao dos resultados


Os principais pontos que afetem o desempenho so: o tamanho dos arquivos
tratados, ocorrncia de erro na checagem devido a forma de implementao
e processo de Posto em marcha.

Posto em marcha

Erro de checagem

Tamanho do arquivo

14

Concluso

Atualmente pode-se aplicar a linguagem java para o


desenvolvimento de qualquer tipo de sistema, inclusive de
misso crtica e/ou de grandes volumes. Mantendo-se, a
portabilidade, escalabilidade e interoperabilidade que a
linguagem java e a JVM proporciona.
Com isto, pode-se sugerir a quebra do paradigma que a
linguagem java e a JVM so lentas.

15

Propostas

Como atingiu-se as metas de desempenho ficaram


algumas questes pendentes de estudo, que podem ser
avaliadas. Que so:
Quando afeta o desempenho a utilizao do spring?
A classe no nvel com menor extenso melhor para
o desempenho?

16

Perguntas

Perguntas ?

17

Obrigado

Alberione Braz da Silva


Alberione@Telefonica.com.br

Marcelo Martins Pires


Creator.e106800@Telefonica.com.br

18

Você também pode gostar