62. /con g/environments/production.rb
config.action_controller.asset_host = Proc.new do |source, request|
protocol = if request.ssl?
request.headers["USER_AGENT"] =~ /(Safari)/ ? "http" : "https"
else
"http"
end
"#{protocol}://asset#{rand(6) + 1}.akitaonrails.local:3000"
end
Wednesday, January 27, 2010
63. /con g/environments/production.rb
config.action_controller.asset_host = Proc.new do |source, request|
protocol = if request.ssl?
request.headers["USER_AGENT"] =~ /(Safari)/ ? "http" : "https"
else
"http"
end
"#{protocol}://asset#{rand(6) + 1}.akitaonrails.local:3000"
end
Wednesday, January 27, 2010
64. /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 asset1.akitaonrails.local
asset2.akitaonrails.local asset3.akitaonrails.local
asset4.akitaonrails.local asset5.akitaonrails.local
asset6.akitaonrails.local www.akitaonrails.local
Wednesday, January 27, 2010
87. select * from ...
where ... like “%...%”
Wednesday, January 27, 2010
88. select * from ...
where ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
Wednesday, January 27, 2010
89. select * from ...
where ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
Wednesday, January 27, 2010
91. • Open Source Enterprise Search Platform
• Baseado no famoso Lucene
• Full Text Search, com relevância
• Indexa documentos (Word, PDF, etc)
• Interface REST
• Roda em containers de Servlet (Tomcat)
Wednesday, January 27, 2010
94. select * from ...
where ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
Wednesday, January 27, 2010
95. select * from ...
where ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
or ... like “%...%”
Wednesday, January 27, 2010
96. Rack
A API mais simples possível que
representa uma aplicação web genérica
Wednesday, January 27, 2010
109. Request Rack
Rack
Rack Response
Wednesday, January 27, 2010
110. Request Rack
Rack
Rack Response
Wednesday, January 27, 2010
111. Request Rack
Rack
Rack Response
Wednesday, January 27, 2010
112. Request Rack
Rack
Rack Response
Wednesday, January 27, 2010
113. Request Rack
Rack
Rack Response
Wednesday, January 27, 2010
114. $ rake middleware
use ActionDispatch::Static
use Rack::Lock
use Rack::Runtime
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::Callbacks
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::Cascade
use ActionDispatch::ParamsParser
use Rack::MethodOverride
use ActionDispatch::Head
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
run Class
Wednesday, January 27, 2010
123. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
124. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
125. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
126. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
127. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
128. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
129. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
130. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
131. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
132. Browser pede página
Se existir no cache, retorna
Procura Rota
Chama Controller
Executa Ação
Comunica com Banco de Dados
Se existir no cache, pula
Se processar assíncrono, pula
Renderiza View
Retorna resultado ao Browser
Wednesday, January 27, 2010
133. Apache2
+ mod_proxy_balancer
Squid
Varnish
Wednesday, January 27, 2010
134. Memcached
MySQL Proxy
Assíncrono (ex. Resque,
RabbitMQ)
Wednesday, January 27, 2010
136. Load
Balancer
App Server
Cache
Wednesday, January 27, 2010
137. Load
Balancer
App Server App Server
Cache Cache
Wednesday, January 27, 2010
138. Load
Balancer
App Server App Server App Server
Cache Cache Cache
Wednesday, January 27, 2010
139. Load
Balancer
App Server App Server App Server
Cache Cache Cache
Wednesday, January 27, 2010
140. Load
Balancer
App Server App Server App Server
Cache Cache Cache
MySQL
Master
Wednesday, January 27, 2010
141. Load
Balancer
App Server App Server App Server
Cache Cache Cache
MySQL MySQL MySQL
Master Slave Slave
Wednesday, January 27, 2010
142. Load
Balancer
App Server App Server App Server
Cache Cache Cache
MySQL Proxy
MySQL MySQL MySQL
Master Slave Slave
Wednesday, January 27, 2010
143. Load
Balancer
App Server App Server App Server
Cache Cache Cache
MySQL Proxy
MySQL MySQL MySQL
Master Slave Slave
Wednesday, January 27, 2010
144. Load
Balancer
App Server App Server App Server
Cache Cache Cache
Job Server MySQL Proxy
MySQL MySQL MySQL
Master Slave Slave
Wednesday, January 27, 2010