O objetivo deste documento é trazer uma visão do que é e como funciona a Arquitetura N Camadas. De como configurar o ambiente em suas estações para correto funcionamento das aplicações neste cenário.
O que é a Arquitetura N Camadas:
Anteriormente, na Arquitetura Cliente‐Servidor, a camada cliente acessava diretamente a camada de Banco de Dados, além de todos os processos como: abertura de formulários, acesso a dados, regras de validação, cálculos e relatórios entre outros.
Na Arquitetura N camadas, apesar da complexidade do ambiente, a divisão das tarefas possibilita maior distribuição de processamento do sistema.
Cliente - Na camada cliente, temos apenas os formulários que serão abertos na execução do programa.
APP - Na camada aplicação, a execução da Regra de Negócio e Cálculos além de fazer a comunicação com a Camada de Banco de Dados.
JOB - Na camada Jobs, a execução dos processos e a comunicação com a Camada de Banco de Dados.
Abaixo exemplo da arquitetura em N camadas:
Servidor de Jobs:
O que é:
É um dos serviços executados pelo Host em background, na arquitetura N camadas, esse serviço é habilitado somente no servidor de Jobs. É responsável por executar os processos submetidos pelos aplicativos, que entram em uma fila de execução (GJOBXEXECUCAO).
Como Funciona:
Separação entre JobServer e AppServer:
Como é Definido:
Vantagens:
Veja mais sobre: Configuração do Jobserver na Linha RM e Gerenciamento de Alias
Servidor de Aplicação:
Instale a Biblioteca RM no Servidor de Aplicação (no momento de instalação, selecione "Ambiente N camadas | Servidor de Aplicação (App Server)"). Ao selecionar Modo Servidor de Aplicação, somente os arquivos necessários serão copiados nesta instalação , ou seja, arquivos necessários para a execução do Host.
Passo a Passo para instalação do RM em N camadas Servidor de Aplicação:
|
Servidor de Jobserver:
É responsável pela execução dos Jobs/Processos, e comunicação direta com o banco de dados.
Abaixo as configurações que diferenciam o Jobserver do AppServer:
Instalação Jobserver:
Passo a Passo para instalação do RM em N camadas Servidor JobServer::
|
Existem duas formas de verificarmos se o processamento de Jobs está ativo:
Para que o processo seja iniciado juntamente com o host, é necessário acessar o gerenciamento de Alias e verificar que a flag "Habilitar Processamento de Jobs" estará marcada.
Quando a configuração for feita pelo alias, o Host processará somente o Job da base onde a flag estiver marcada. |
Configurações do alias abaixo:
Podemos utilizar o Cockpit para iniciar o processamento de Jobs de forma manual.
Exemplo abaixo:
Todas as máquinas que estiverem executando um Host serão adicionadas ao Cockpit, nele é possível identificar se as máquinas estão ou não executando processos e se estão processando Jobs locais ou não. |
Servidor Client:
Na camada cliente temos apenas os formulários que serão abertos na execução do programa. Ao instalar a Biblioteca RM em cada Cliente (no momento de instalação, selecionar "Ambiente N Camadas | Client") será necessário informar o servidor de aplicação e porta de comunicação (Padrão 8050).
Ao selecionar o modo Client serão copiados para a pasta de instalação somente os arquivos necessários para execução dos sistemas. O sistema será configurado para direcionar todo o processamento de dados para o servidor de aplicação, ou seja, o processamento de dados será realizado na máquina em que a Biblioteca for instalada na opção App Server.
Passo a Passo para instalação do RM em N camadas Servidor Client:
|
As configurações do RM.AliasManager.exe, são armazenadas no arquivo Alias.dat.
Caso não exista o arquivo “Alias.dat”, ou um alias para o banco de dados em questão, essa configuração será criada automaticamente assim que qualquer tela de processos for aberta, tornando esse processos transparente para o usuário. |
Configuração para um cliente utilizar dois servidores de APP, fazendo com que seja distribuindo a carga entre eles. Melhorando a performance do sistema.
Exemplo abaixo de como será o funcionamento do sistema:
Nesse cenário o sistema fará o balanceamento por requisição, alternando as requisições entre os servidores. |
A máquina cliente será apontada para dois ou mais servidores de aplicação. essa configuração pode ser realizada durante a instalação da Biblioteca RM em modo client ou através do arquivo ".config" do aplicativo (exemplo: C:\totvs\CorporeRM\RM.Net.exe.config), inserindo as tags "PORT" e "HOST" apontando para o outro servidor.
Exemplo abaixo:
Lembrando que poderá haver mais de dois servidores de aplicação. Neste caso, é necessário continuar identificando as tags. Exemplos: Host2, Host3, Port2 e Port3. |
O isolamento de processo consiste em habilitar o RM.Host.JobRunner para execução das threads/processos realizados pelos usuários. Dessa forma garantimos que o serviço do Host mantenha-se estável e dedicado somente à abertura de telas e realizações de alguns cálculos de regras de negócio dos aplicativos.
O isolamento de processo pode ser habilitado durante a instalação da Biblioteca Rm em modo "JobServer" ao marcar a opção "Habilitar Isolamento de Processo" (5º passo da instalação como JobServer) ou incluindo as seguintes tags nos arquivos de configuração do Host (RM.Host.Service.exe.config ou RM.Host.exe.config) são eles:
Exemplo abaixo de um arquivo de configuração do host com o isolamento de processo habilitado:
É possível através do Cockpit, definir que um servidor de Job terá uma afinidade de processo, ou seja, ele será responsável pela execução de determinados processos de forma exclusiva. Se configurada a afinidade, o job server só executará Jobs que respeitam essa afinidade.
Exemplo:
Exemplo desta configuração na imagem abaixo:
Configurações Gerais:
Para garantir o correto funcionamento do sistema em ambiente N camadas, os arquivos de configurações devem ser configurados respeitando as orientações a seguir.
Aliaspath:
Define um único alias.dat para ser utilizado por todos os Servidores de aplicação do ambiente. Para uso, deve-se adicionar a Tag "Aliaspath" nos arquivos "RM.AliasManager.exe.config", "RM.Host.exe.config" e "RM.Host.Service.exe.config".
Exemplo: <add key=“Aliaspath” value=“\\Servidor\Pasta” />
Como a configuração dos Alias no Servidor de APP é diferente do Servidor de Jobs, deve-se utilizar um Alias para o(s) servidor(es) de Jobs e outro para os servidores de APP. |
FileServerPath:
Como anteriormente explicado durante os passos da instalação em modo Server (Job e APP) está tag define um único diretório para geração e leitura de arquivos temporários, assim todos os Hosts do ambiente irão gerar os arquivos somente neste diretório. Em ambientes N camadas, a Tag "FileServerPath" deve estar presente nos arquivos RM.Host.exe.config ou RM.host.Service.exe.config de todos os servidores de APP e Job.
Exemplo: <add key=“FileServerPath” value=“\\Servidor\Pasta” />
LogPath:
Define o caminho onde serão gerados os log's do sistema.
Exemplo: <add key=“LogPath” value=“\\Servidor\Pasta” />
Determina qual linguagem o sistema irá funcionar independente da linguagem em que sistema operacional esta configurado.
Exemplo: <add key=“LOCALIZATIONLANGUAGE” value “pt-BR” />
Habilita compressão de dados para melhorar desempenho de rede, contudo o custo para compactação e descompactação dos dados em redes Gigabits, pode ser superior a transferências sem a compactação.
Veja mais sobre a compressão de dados em: Configurando a compressão de dados
Configurações Bases Oracle:
Visando melhorar a performance de acesso em bancos Oracle, existe um cache para armazenar dados do schema da base de dados. Este cache é necessário pois o "GetSchema" no Oracle tem um alto custo. Para correta utilização, deve-se parametrizar o Config do Host da seguinte forma:
UseDbSchemaCache:
Indica se o sistema guardará em cache os esquemas obtidos pelas consultas.
Exemplo: <add key="UseDbSchemaCache" value="true" />
DbSchemaCacheMaxSize:
Define a quantidade de schemas que serão guardados em cache.
<add key="DBSchemaCacheMaxSize" value=“5000"/>
Apesar do valor default ser 100, o valor ideal de acordo com testes realizados é 4000. Este valor deve ser utilizado com bastante critério, se for muito grande, pode-se comprometer a performance do banco |
GJOBSERVER:
GJOBX
GJOBXEXECUCAO
Tabelas relacionadas a fila de processos
Tabela relacionada ao log de auditoria.
Tabela relacionada ao Histórico de Cubo .Net.
Essas tabelas armazenam grande número de informações e por isso devemos executar o processo de manutenção. Veja também: RM.Host.Cleanner |
|
|