2019/6/25に行われたJavaコミュ@福岡での登壇資料です
これはすごい! というわけでTwitter検索を3倍高速化したという記事を翻訳してみました。Twitter Engineering: Twitter Search is Now 3x Faster2010年春。Twitterの検索チームは、我々の増え続けるトラフィックに対応し、エンドユーザにとっての遅延を減らし、我々のサービスの可用性を向上させ、新しい検索の機能を素早く開発できるようにするため、検索エンジンを書きなおす作業を始めた。 その努力の一部として、我々は新しいリアルタイム検索をリリースし、検索のバックエンドをMySQLからLuceneのリアルタイム版に変更した。そして先週、我々はRuby-on-Railsに取って代わるフロントエンドをローンチした。我々がBlenderと呼ぶJavaサーバーである。我々はこの変更によって検索のレイテンシが3分の1になり、検索機能の開発を促進できるよう
socket.ioがJavaやGrailsから扱えるかを調べている関係でvert.xを調べていて興味深かったので、こちらにあるVert.xの記事を翻訳してみました。JGGUG G*Workshopにおける杉浦さんのVert.x資料もお奨めです。 Vert.xは急速に発達つつあるサーバ・フレームワークです。 世にあまたあるサーバ・フレームワークのいずれもが、多様なプロトコルをサポートし、高速であることが特長であると主張していますが、Vert.xはそれらよりも一歩抜きん出ています。例えば、Vert.xは、サーバサイドのネットワーク環境の確立と操作も対象としています。言いかえれば、Vert.xは、単一サーバ上のデーモン実行だけでなく、クラスタリング環境での複数サーバデーモンの実行を考慮しているのです。 したがって、Vert.xを調査するにあたっては、どのように高性能を実現しているかだけではなく、
Nettyと言えばJavaのノンブロッキングIOのAPIであるNIOをラップしたフレームワークとして、TwitterのFinagleなどで分散ネットワークアプリケーションシステムで使わていて高速で実績のあるライブラリとして有名ですが、ノンブロッキングIOでイベント駆動のサーバークライアントのネットワークアプリケーションを知るのに非常に良い題材ですので、素人翻訳ですがその日本語訳を公開することにしました。 ちなみにNettyがどれぐらいパフォーマンスに優れているのかというと、Herokuの仮想インスタンスを利用した実験の結果が参考になります。Scala(Finagle)がNettyの実装を利用したものになりますが、秒間6000リクエスト時の1dyno(APサーバー)の応答が秒間4000レスポンスで、C(Accept)、Java(Jetty)、Java(Tomcat)、Js(Node)、Pyt
今年も開催される Scala Advent Calendar 2014 の 15 日目にエントリーしていて、ネタとしては先日 Tumblr が発表した "I/O and Microservice library for Scala" を謳う Colossus をやる予定なんだけど、前振りとして「なぜマイクロサービス化を進めるサービスは Scala を選ぶのか」という話をしてみるエントリ。ちなみに、Advent Calendar の前振りと書いたけど、とりあえず Scala をあまり知らない人向け。 そもそもマイクロサービスって何だっけ? マイクロサービスへの移行と Scala なぜ Scala が選ばれるのか? 1. JVM 言語である 2. Finagle の存在 性能 プログラミングモデル 運用ツールとの連携 3. 静的型付き言語である 余談 そもそもマイクロサービスって何だっけ? こ
import io.vertx.core.AbstractVerticle; public class Server extends AbstractVerticle { public void start() { vertx.createHttpServer().requestHandler(req -> { req.response() .putHeader("content-type", "text/plain") .end("Hello from Vert.x!"); }).listen(8080); } } import io.vertx.core.AbstractVerticle class Server : AbstractVerticle() { override fun start() { vertx.createHttpServer().requestHandler {
Bootstrap、Hogan.js、Finagleなど 注目のTwitter系オープンソース Twitter Tokyo Open Houseまとめレポート 山本裕介 2012/5/15 「Twitter Open House」はTwitter社のエンジニアと直接情報交換ができるオフラインイベントで、すでにサンフランシスコの本社では何度か開催している。 先日、日本では初めてとなる「Twitter Tokyo Open House」がTwitter Japanのオフィスで開催された。季節外れの大型低気圧により天候は荒れ、開催すら危ぶまれたが、結果としては多くのエンジニアが集まり盛況なイベントとなった。 OpenJDKにも参加するTwitterのアーキテクチャ 最初に講演を行ったのはTwitterのアーキテクチャのディレクターであるロブ・ベンソン氏。なでしこジャパンや天空の城ラピュタを例に挙
Start your trial month now! Use devmio on a monthly basis REGISTER brand id {{brandid}} apploaded {{apploaded}} loading {{loading}} everLoadedData {{everLoadedData}} page {{page}} page_size {{page_size}} loadMorePossible {{loadMorePossible}}
ここ数日、Nettyについて調べていたので理解できたことを書きます。 JBoss Netty Netty は Java で非同期、イベント駆動のネットワークアプリを作るためのフレームワークです。Netty を使うと早くて簡単にハイパフォーマンス、ハイスケールでメンテナンス性がいいものが作れます。いいとこ取りの全部乗せです。 なぜハイパフォーマンス、ハイスケールか? Netty は Java NIO(New I/O)をラップしていて、ノンブロッキングなIO操作ができます。そのため、1つのコネクションにずっと1スレッドを割り当てる必要がないため効率のよいリソース消費をします。従来のブロッキングなOIO(Old I/O)もサポートしており、僅かな変更で好きな方を使えます。また、NIOの複雑なByte BufferをChannelBufferというオブジェクトに抽象化し、不必要なコピーが発生しない
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty is an NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server. 'Quick and ea
Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency. Most of Finagle’s code is protocol agnostic, simplifying the implementation of new protocols. Finagle is written in Scala, but provides both Scala and Java idiomatic APIs. GitHub p
前回の記事「Play2(+JavaScript)アプリを高速化、最適化する4つのテクニック」では、キャッシュの利用方法や非同期通信を行う手法、クライアントサイドでJavaScriptをうまく扱うテクニックについて紹介しました。 今回はPlay framework 2.x(以下、Play2)を既存のWebサーバーと連携させる方法、並列処理や双方向通信を行う方法を紹介します。 WebサーバーとPlay2の連携 Webサーバーと連携する必要性 連載第2回記事「Play 2.0のアーキテクチャとディレクトリ構成の基礎知識」で解説をしましたが、Play2では「Netty」というHTTPサーバーを内包しており、それを使用してリクエストを処理します。そのため、Play2の起動ポートを80番に設定すれば通常のWebサーバーと同じようにアクセス可能です。 単純なWebアプリケーションの場合はこれで問題はない
0x00. はじめに 筆者はJava製のWAF(Web Application Firewall)、Guardian@JUMPERZ.NETの開発とメンテナンスを行っている。元は自社のシステムを守るために(そして半分趣味で)作ったものだが、数年前にこれをコアのエンジンとしてさらに拡張し、SaaS型の商用サービス「Scutum(スキュータム)」を立ち上げた。 その後順調に顧客を獲得することができ、システムリソース的にも増強が必要となる段階などを経験した。Google、mixiやはてな等、さまざまな大規模サイトのインフラエンジニアの方々がインフラ設計に関する考え方などをインターネット上で公開してくれているおかげで、初期のシステム設計時に「将来的にスケールアウト可能なシステム構成にしておくこと」が重要であるということがわかっていた。その教えに従っていたおかげで、リソースの逼迫(ちなみに今回はCP
https://blog.twitter.com/2014/netty-at-twitter-with-finagle 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約4時間前 Twitterの一連のシステムは、バックエンドのユーザプロファイル / tweet / タイムラインから、HTTPリクエストを処理するフロントAPIのエンドポイントに至るまで、Finagle上で構築されてます。同社のエンジニアブログでその概要が紹介されています。 障害耐性があり特定のプロトコルに依存しないRPCフレームワーク for JVM Netty (NIOクライアントサーバフレームワーク) 上に構築。SOA (サービス指向アーキテクチャ)では上流サービスの待ち受けをしている時間が長いので、非同期処理ライブラリが効果的。 Twitt
How much does your framework choice affect performance? The answer may surprise you. Authors’ Note: We’re using the word “framework” loosely to refer to platforms, micro-frameworks, and full-stack frameworks. We have our own personal favorites among these frameworks, but we’ve tried our best to give each a fair shot. Show me the winners! We know you’re curious (we were too!) so here is a chart of
wired.com webmonkey 2012.3.9の記事 Twitter Catches the 'SPDY' Train | Webmonkey | Wired.com 以下斜め読んだ内容 api.twitter.comへの通信にSPDYが使われてる (補足)2012.4.5時点でoffになってる SPDYおさらい "speedy"と同じ発音 HTTPを代替するもの ページやファイルをネットでリクエストするときHTTPが使われる。サーバーの応答もHTTP使う アドレスバーの頭がhttpで始まる由縁 SPDYはプロトコル httpより50%高速に同じ処理を片付けれる (補足) SPDYはSSL接続が前提なのでSSL接続の高速化とした方が誤解が少ない SPDYの起源 googleのプロジェクト あくまでgoogleのプロダクト・サービス向けのプロトコルとしてスタート chromeでのみ
/* Based on device data, this query returns the average * of the battery level for every hour for each device_id */ WITH avg_metrics AS ( SELECT device_id, DATE_BIN('1 hour'::INTERVAL, time, 0) AS period, AVG(battery_level) AS avg_battery_level FROM devices.readings GROUP BY 1, 2 ORDER BY 1, 2 ) SELECT period, t.device_id, manufacturer, avg_battery_level FROM avg_metrics t, devices.info i WHERE t.
実践編 目次 オリジナルの通信プロトコルを実装してみよう(Netty 実践編1) - Taste of Tech Topics オリジナルの通信プロトコルを実装してみよう(Netty 実践編2) - Taste of Tech Topics こんにちは!新しい物好きなエンジニアのツカノです。 Vert.xがますます面白いところに入ってきましたが、今回は久しぶりのNettyシリーズです。Vert.xは通信周りにNettyを利用しており、その仕組みを理解する上でも良いかと思います。 前回シリーズを掲載した後、Nettyの世界では大きな変化がありました。ついにNettyのメジャーパージョンアップであるNetty4がリリースされました。Netty4ではパッケージ名から変わっており、直接的な互換性もありません(パッケージ名やクラス名を置き替えることで、ある程度移行できます)。そのくらい大きく変わって
導入編 目次 イベントドリブンで通信処理を行えるNetty 導入編 - Taste of Tech Topics イベントドリブンで通信処理を行えるNetty 導入編2 - Taste of Tech Topics イベントドリブンで通信処理を行えるNetty 導入編3 - Taste of Tech Topics こんにちは!新しい物好きなエンジニアのツカノと言います。 情報システムのインフラを支えるOSSのひとつにNettyというフレームワークがあります。 Nettyはイベントドリブンな非同期通信を行うアプリケーションを開発するためのフレームワークで、これを使うとネットワークプログラミングを見通し良く書ける、という特徴があります。今回から数回に分けて、Nettyについて紹介します。 それでは、よろしくお願いします。 インフラOSSを使いこなそう! ここ数年、ビッグデータ関係のプロダクト
こんにちは、新規開発局のイニシャルP.です。 今回はJBoss OpenSource Projectの一つであるNetty Projectを紹介します。 Nettyは高性能・高スケーラビリティなネットワークアプリケーションを快速開発するために設計されたNIOクライアント・サーバフレームワークです。 Nettyを使うと複雑なNIO Selector APIを知らなくても簡単に非同期なイベント駆動型のネットワークアプリケーションの作成が可能になります。 簡単とはいえ、APIや使い方の説明になると楽しくないので、 ここでは実際にNettyを利用してMemcachedサーバを作ってみることにします。 動作環境について ・JDK1.5以上 ・Nettyの最新バージョン(現時点で3.2.1-Final) Memcachedサーバの実装について ・Binary Protocolのみ ・GetとSetのみ
At Twitter, Netty (@netty_project) is used in core places requiring networking functionality. For example: Finagle is our protocol agnostic RPC system whose transport layer is built on top of Netty, and it is used to implement most services internally like Search TFE (Twitter Front End) is our proprietary spoon-feeding reverse proxy which serves most of public-facing HTTP and SPDY traffic using Ne
What is Ratpack?Ratpack is a set of Java libraries for building scalable HTTP applications. It is a lean and powerful foundation, not an all-encompassing framework. Want to know more? Check out the manual. More the bookish type? Get “Learning Ratpack” from O'Reilly Media. Have a question or problem? Discuss it now via the Ratpack Community Channel (powered by Slack). One time sign up is required.
ometer.com 2011.07.24のブログエントリ Callbacks, synchronous and asynchronous : Havoc's Blog 2011年7月からnodeコアチーム7人のうちの1人になってたid:koichik(@koichik)さんが良記事認定してたエントリ コアチームの人たちは、Joyentからは2人。ryan(@ryah)、npmの人(@izs)。Cloudkickからも2人。Bert Belder(@piscisaureus)にPaul Querna。それにBen NoordhuisとFelix Geisendörferに@koichik。 informativeな内容だが歯が立たない。けど何とか斜め読んでみた 以下斜め読んだ内容 このエントリ コールバック使ったAPIデザインで守った方がいいルール2つ 同じテーマで細々したところは前に書い
You are viewing the documentation for the 2.9.x release series. The latest stable release series is 3.0.x. Search Home Working with Play Common topics Configuration §Understanding Play thread pools Play Framework is, from the bottom up, an asynchronous web framework. Thread pools in Play are tuned to use fewer threads than in traditional web frameworks, since IO in play-core never blocks. Because
こんにちは。kimukimuです。 最近気温の変化が激しくて、夜暑くて夏の格好で寝ると途中で寒くて目が覚める・・・ というのが普通にある今日この頃です。 皆さんもお大事に。 さて、先週StormがApacheプロジェクトとなったことについて投稿しましたが、 Stormで大きなニュースがまた一つ出ました。 Storm0.9.0-rc1のリリースです。 rcで正式版ではないのか、という突っ込みもありますが、 このバージョンは「0.9.0正式版リリースに向けた最終リリース確認バージョン」という位置づけのため、 そう遠くないうちに正式な0.9.0としてリリースされることが見込まれます。 1.Storm0.9.0の新機能/変更 Storm-Nettyの登場 まず、もっとも影響の大きな機能変更点として、「通信レイヤをZeroMQとNettyどちらを使うか選択可能になった」があります。 これまではSto
WebSocket の簡単なサーバープログラムを Jetty, Grizzly, Netty, EM-WebSocket をそれぞれ使って、Groovy や JRuby で実装してみました。 WebSocket のプロトコル仕様は確定しておらず、互換性の無い改訂が行われているようなので、今回は draft-ietf-hybi-thewebsocketprotocol-00 をサポートした Google Chrome 12.0.742.100 の WebSocket クライアントと接続可能なサーバープログラムを作成する事にします。 実際に、draft-ietf-hybi-thewebsocketprotocol-00 で使う Sec-WebSocket-Key1 と Sec-WebSocket-Key2 は、draft-ietf-hybi-thewebsocketprotocol-06 で使
はじめに Spark, SQL on Hadoop etc. Advent Calendar 2014 - Qiita 3日目の記事です。 SparkでカスタムStreamingする方法を紹介します。 TwitterやFlumeなどのSpark Streamingの活用例が下記にあります。 spark/examples/src/main/scala/org/apache/spark/examples/streaming at master · apache/spark · GitHub spark/external at master · apache/spark · GitHub これらは、いろいろ利用できそうですね。 一方で、オリジナルのStreaming処理を行いたい場合には、 Sparkが提供するReceiverクラスを拡張する必要があります。 この記事では、Receiverクラス
こんにちは!新しい物好きなエンジニアのツカノ(@snuffkin)です。 強い風を吹かせて台風が通り過ぎましたが、皆さんはいかがお過ごしでしょうか。 このブログで紹介しているVert.xもそうですが、Nettyは様々なプロダクトで採用され、追い風を感じる状況です。はい、今回は久しぶりのNettyです。 これまでのおさらい さて、これまで何回かに分けてNettyの話をしてきました。まずは、簡単に振り返ってみましょう。 イベントドリブンで通信処理を行えるNetty 導入編 - Taste of Tech Topics イベントドリブンで通信処理を行えるNetty 導入編2 - Taste of Tech Topics イベントドリブンで通信処理を行えるNetty 導入編3 - Taste of Tech Topics オリジナルの通信プロトコルを実装してみよう(Netty 実践編1) - Ta
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く