

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Java continuations e NIO, o casamento perfeito</title>
	<atom:link href="http://www.kumpera.net/blog/index.php/2006/10/12/29/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/</link>
	<description>Meus achados sobre tecnologia</description>
	<lastBuildDate>Thu, 02 Sep 2010 20:00:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: felipe</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-672</link>
		<dc:creator>felipe</dc:creator>
		<pubDate>Tue, 07 Nov 2006 19:33:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-672</guid>
		<description>Rodrigo,

gostaria de entender melhor o objetivo de usar i/o não bloqueante com continuations na leitura e escrita dos channels, já que o i/o não bloqueante já meio que funciona como se tivesse continuation (é lido o que está disponivel, mesmo que essa leitura precise continuar depois e o mesmo vale para escrita).

Se não existem dados para ler, qual o sentido de eu suspender o processamento? 

Qual o ganho real dessa suspensao(usando continuations) se o i/o não é bloqueante? (ou seja, o thread continua executando outras coisas ao invés de ficar parado)</description>
		<content:encoded><![CDATA[<p>Rodrigo,</p>
<p>gostaria de entender melhor o objetivo de usar i/o não bloqueante com continuations na leitura e escrita dos channels, já que o i/o não bloqueante já meio que funciona como se tivesse continuation (é lido o que está disponivel, mesmo que essa leitura precise continuar depois e o mesmo vale para escrita).</p>
<p>Se não existem dados para ler, qual o sentido de eu suspender o processamento? </p>
<p>Qual o ganho real dessa suspensao(usando continuations) se o i/o não é bloqueante? (ou seja, o thread continua executando outras coisas ao invés de ficar parado)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kumpera</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-574</link>
		<dc:creator>kumpera</dc:creator>
		<pubDate>Wed, 18 Oct 2006 15:31:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-574</guid>
		<description>Willian, eu já utilizei antes o Apache MINA. A arquitetura é boa e o software é de estavel. O grande problema é o inferno que é programar codecs e afins.&lt;br&gt;

Com MINA você escreve basicamente 2 componentes, o (de)codicador de mensagens e o tratador de mensagens. O primeiro é responsavel por traduzir de/para o formato de rede (de stream para ServletRequest, por exemplo); o segundo lida apenas com objetos da aplicação e possui as regras de negocios, por assim dizer.&lt;br&gt;

Implementar um codec é exponencialmente dificil em relação a complexidade do protocolo, e de quao eficiente você quer que ele seja. É basicamente implementar uma máquina de estados enorme. Já fiz para HTTP 1.1 parcialmente e conheci o inferno.&lt;br&gt;

Depois vem o protocol handler, ele tem que se preocupar com coisas como flow control, para não mandar dados rápido demais e deixar um toneladas de buffers na mão do framework. Fora que você tem que programar utilizando um modelo orientado a eventos. Uma delicia. Willian, vou mostrar num artigo futuro então a diferença de dificuldade com um protocolo não trivial.&lt;br&gt;</description>
		<content:encoded><![CDATA[<p>Willian, eu já utilizei antes o Apache MINA. A arquitetura é boa e o software é de estavel. O grande problema é o inferno que é programar codecs e afins.</p>
<p>Com MINA você escreve basicamente 2 componentes, o (de)codicador de mensagens e o tratador de mensagens. O primeiro é responsavel por traduzir de/para o formato de rede (de stream para ServletRequest, por exemplo); o segundo lida apenas com objetos da aplicação e possui as regras de negocios, por assim dizer.</p>
<p>Implementar um codec é exponencialmente dificil em relação a complexidade do protocolo, e de quao eficiente você quer que ele seja. É basicamente implementar uma máquina de estados enorme. Já fiz para HTTP 1.1 parcialmente e conheci o inferno.</p>
<p>Depois vem o protocol handler, ele tem que se preocupar com coisas como flow control, para não mandar dados rápido demais e deixar um toneladas de buffers na mão do framework. Fora que você tem que programar utilizando um modelo orientado a eventos. Uma delicia. Willian, vou mostrar num artigo futuro então a diferença de dificuldade com um protocolo não trivial.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Willian Mitsuda</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-573</link>
		<dc:creator>Willian Mitsuda</dc:creator>
		<pubDate>Wed, 18 Oct 2006 15:15:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-573</guid>
		<description>Rodrigo, vc chegou a estudar a possibilidade de usar o Apache MINA?

Se entendi bem o seu problema, acho que ele já implementa toda a infra que vc precisa, só precisando implementar um codec p/ o seu protocolo.

http://directory.apache.org/subprojects/mina/index.html</description>
		<content:encoded><![CDATA[<p>Rodrigo, vc chegou a estudar a possibilidade de usar o Apache MINA?</p>
<p>Se entendi bem o seu problema, acho que ele já implementa toda a infra que vc precisa, só precisando implementar um codec p/ o seu protocolo.</p>
<p><a href="http://directory.apache.org/subprojects/mina/index.html" rel="nofollow">http://directory.apache.org/subprojects/mina/index.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luca Bastos</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-557</link>
		<dc:creator>Luca Bastos</dc:creator>
		<pubDate>Tue, 17 Oct 2006 13:54:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-557</guid>
		<description>Agora que o Gilad Bracha saiu da Sun, fui ler o antigo blog dele na Sun e o encontrei falando de continuantions. Lembrei logo de ti.


Não ainda não leu, dê uma lida em:
http://blogs.sun.com/gbracha/entry/will_continuations_continue
http://blogs.sun.com/gbracha/entry/continuations_continued</description>
		<content:encoded><![CDATA[<p>Agora que o Gilad Bracha saiu da Sun, fui ler o antigo blog dele na Sun e o encontrei falando de continuantions. Lembrei logo de ti.</p>
<p>Não ainda não leu, dê uma lida em:<br />
<a href="http://blogs.sun.com/gbracha/entry/will_continuations_continue" rel="nofollow">http://blogs.sun.com/gbracha/entry/will_continuations_continue</a><br />
<a href="http://blogs.sun.com/gbracha/entry/continuations_continued" rel="nofollow">http://blogs.sun.com/gbracha/entry/continuations_continued</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Urubatan</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-551</link>
		<dc:creator>Rodrigo Urubatan</dc:creator>
		<pubDate>Thu, 12 Oct 2006 23:18:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-551</guid>
		<description>isto é verdade :D
e parece que estou mal informado :D
acreditei na propaganda do jetty, e achava que ele estava usando NIO para tudo :(</description>
		<content:encoded><![CDATA[<p>isto é verdade :D<br />
e parece que estou mal informado :D<br />
acreditei na propaganda do jetty, e achava que ele estava usando NIO para tudo :(</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kumpera</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-548</link>
		<dc:creator>kumpera</dc:creator>
		<pubDate>Thu, 12 Oct 2006 17:19:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-548</guid>
		<description>Jetty não resolve meu problema. Beeem longe disso.
Jetty tem um treco que alega &quot;suportar continuations&quot;, mas na verdade é um mecanismo pelo qual você tem que implementar o suspend/restore manualmente, ou seja, tem uso super-super específico: comet.

Além disso, o jetty funciona usando threading e I/O bloqueante para todo o resto, o que não resolve meus problemas de escalabilidade. Para terminar, não adianta eu ter um servidor escalavel se eu vou continuar esbarrando no driver JDBC.</description>
		<content:encoded><![CDATA[<p>Jetty não resolve meu problema. Beeem longe disso.<br />
Jetty tem um treco que alega &#8220;suportar continuations&#8221;, mas na verdade é um mecanismo pelo qual você tem que implementar o suspend/restore manualmente, ou seja, tem uso super-super específico: comet.</p>
<p>Além disso, o jetty funciona usando threading e I/O bloqueante para todo o resto, o que não resolve meus problemas de escalabilidade. Para terminar, não adianta eu ter um servidor escalavel se eu vou continuar esbarrando no driver JDBC.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Urubatan</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/12/29/comment-page-1/#comment-547</link>
		<dc:creator>Rodrigo Urubatan</dc:creator>
		<pubDate>Thu, 12 Oct 2006 16:48:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/12/29/#comment-547</guid>
		<description>ótima a solução, mas tu tem problemas :D
não era mais fácil usar o jetty em vez de implementar isto novamente?</description>
		<content:encoded><![CDATA[<p>ótima a solução, mas tu tem problemas :D<br />
não era mais fácil usar o jetty em vez de implementar isto novamente?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
