タグ

ブックマーク / qiita.com/tutuming (3)

  • 月間50億PVを捌くアクセス解析サービスをGCPで作る (検証: データ収集編) - Qiita

    今年もWACULのアドベントカレンダー、順調に埋まって、残すところ2日です。 クリスマスイブを担当する、CTOの包です。 なかなか濃い記事がいっぱいあって、よくもまぁこんな人達が集まったなぁという感慨深い感じです。 今日はと娘たちとケーキを作ってべました。ホイップクリームを泡立器で作ったら疲れたのでブレンダーがほしいです。 アクセス解析サービスを作ろう さてさて、今回は、(弊社のような)弱小企業に務めるあなたが、会社の偉い人とかに、Webサイトにいれるアクセス解析ツール作ってね!しかも一人で! とか言われた時のために、GCPを使った構成を考えて検証してみました。 (あたなが、gojavaをちょっと書けること前提です!) 検証なので、細かいエラー処理などは省いていますのでご了承を。 アクセス解析ツールの構成部品 Webのアクセス解析ツールを作るにはほんっとざっくり言うと 何はともあれ、

    月間50億PVを捌くアクセス解析サービスをGCPで作る (検証: データ収集編) - Qiita
  • Go でチャネルに手軽に優先度を付けたいとき - Qiita

    バッチ処理でキューを処理していて、特定の送信元からの処理は優先度高くしたい!っていう要件が発生することありますよね?あります。 Goでチャネルをキューとして使い、ワーカーを別 gorutine で作ってタスクを処理するというのは、よくある実装です。そこへ優先度の高いタスクは割り込ませたい、みたいなことが起こった時に、さくっと解決するニッチなテクニックをご紹介します。 問題のプログラム チャネルからタスクを消費するようなプログラムですが、途中で優先度の高いタスクが発生するとします。 package main import ( "fmt" "time" ) type task struct { name string } var queue = make(chan task) func startConsumer() { for { select { case t := <-queue: //

    Go でチャネルに手軽に優先度を付けたいとき - Qiita
  • Go http.RoundTripper 実装ガイド - Qiita

    こんにちわ、ワカルのアドベントカレンダー2日目を担当する包です。 最近はGoばかり書いているので、Goネタです。 外部への http アクセスをする時に構造を理解しておくと便利な、http.RoundTripper について書きます。 http.RoundTripper とは Go で、外部にhttpアクセスするときには、 net/http パッケージにある、 http.Client を使います。 また、いろいろなAPIのクライアントライブラリの中でも殆どの場合 http.Client が使われていて、定義は以下のようになっています。(一部コメント省略) type Client struct { // Transport specifies the mechanism by which individual // HTTP requests are made. // If nil, Def

    Go http.RoundTripper 実装ガイド - Qiita
  • 1