タグ

2017年6月27日のブックマーク (2件)

  • cockscomblog?

    Rustでツールを書こうとして、コンポーネントを差し替えられるようにtraitとして定義した。GUIプログラミングの習い性で、IOが発生するメソッドは非同期にしたいから、asyncキーワードをつける。ここでは、何か文字列を読み込む予定のLoader traitを定義する。 use std::error::Error; trait Loader { async fn load(&self) -> Result<String, Box<dyn Error>>; } このコードを書き始めた時点で、このコードは有効ではなかった。Rustではtraitにasyncメソッドを持たせられなかったのだ。そこで、async-trait crateの出番となる。 use std::error::Error; use async_trait::async_trait; #[async_trait] trait

    cockscomblog?
    reedom
    reedom 2017/06/27
  • JSONデータ圧縮方式をSnappyからzstdに切り替えた事例紹介 | BLOG - DeNA Engineering

    JSONデータ圧縮方式をzstdに切り替えデータ量を38.3%削減した事例、及びマイクロサービスの無停止アップデート事例について紹介したいと思います。 はじめに JPRゲーム事業部開発基盤部の池田周平です。先日 Rails5対応についてDeNA techブログに投稿 した@namusyakaと同じチームで働いています。 JSON文字列をRDBに格納する際の圧縮フォーマットをSnappyからzstdに切り替え、データ量を削減した事例を紹介したいと思います。対応を実施した目的はDB負荷対策です。DBで扱うデータをより小さくすることで、DBサーバのDiskI/O負荷とMaster-Slave間のレプリケーション遅延対策を目的としています。 「Sakasho」は、DeNAが持つモバイルゲームのためのプラットフォームです。複数タイトルのゲームを取り扱っており、一部データはゲーム毎の仕様差を吸収し

    JSONデータ圧縮方式をSnappyからzstdに切り替えた事例紹介 | BLOG - DeNA Engineering