大規模IT企業における5年目エンジニアの技術面接体験談
大規模検索ログ解析におけるTopN問題の解法
大容量ファイルから頻出検索語を抽出する手法について考察する。メモリ制約下での効率的な処理が鍵となる。
分散処理による解決策
from collections import defaultdict
import heapq
def process_chunk(file_path, chunk_size=1024):
counter = defaultdict(int)
with open(file_path) as f:
while True:
...
6月18日 19:15 投稿
ZooKeeperによるサービス発見の実装(C++)
リポジトリ:git@github.com:ccx19930930/services_register_and_discovery.git
参考リンク:https://www.cnblogs.com/haippy/archive/2013/02/21/2920280.html
down_service_mgr.h
1 #ifndef _DOWN_SERVICE_MANAGER_H_
2 #define _DOWN_SERVICE_MANAGER_H_
3
4 #include "base_class.h"
5
6 class CDownServiceManager : CUnCopyable
7 {
8 public:
...
6月14日 22:49 投稿
Redisの核心技術とベストプラクティス
漸進的リハッシュ
漸進的リハッシュの実行時、キーバリューペアの操作に基づいてデータ移行を行うだけでなく、Redis自体にも定期的なタスクがリハッシュを実行します。キーバリューペアの操作がない場合、このタスクは周期的に(例えば100msごと)新しいハッシュテーブルに一部のデータを移動させ、これにより全体のリハッシュプロセスを短縮できます。
整数配列と圧縮リ ...
6月13日 16:32 投稿
キャッシュシステムにおける3つの問題:ペネトレーション、ブレークダウン、雪崩の原理と解決策
キャッシュペネトレーション
キャッシュペネトレーションは、存在しないデータを照会する状況を指します。キャッシュはヒットしない場合に書き込まれるため、またエラー処理の観点からストレージ層からデータが見つからない場合にはキャッシュに書き込まないため、このような存在しないデータのリクエストは毎回ストレージ層に到達してしまいます。これによりキャッシュの ...
6月8日 19:39 投稿
Apache Flinkの分散ストリーム処理基盤
ステート管理の設計特性
インメモリ状態管理: 高速アクセスが可能だが障害耐性に課題
分散システム状態管理: 耐障害性が高いがレイテンシ増加のトレードオフ
コアアーキテクチャ特性
高スループット・低レイテンシ処理
毎秒数百万イベント処理をミリ秒級レイテンシで実現
時間概念モデル
Flinkは二つの時間セマンティクスを提供:
処理時間(Processing Time): データが ...
6月5日 21:08 投稿
ZooKeeper、KafkaクラスタとFilebeat+Kafka+ELKアーキテクチャの実装ガイド
一、ZooKeeper
1.1 概要
ZooKeeperは、分散アプリケーションの管理フレームワークです。オープンソースの分散型サービスで、分散環境における一貫性の問題を解決するためのApacheプロジェクトです。
1.2 ZooKeeperの役割
主な役割として、分散アプリケーションクラスタにおける一貫性の問題解決があります。ファイルシステムとして、各種分散アプリケーションの登録とメ ...
5月31日 00:36 投稿
分散型一意ID生成方式の実装方法
グローバル一意IDの設計特性
グローバル一意性
分散システム全体で重複しない一意な識別子を生成する必要があります。
高可用性
水平スケーリングやクラスタ構成により、ノード障害時でも継続的なID生成を保証します。
セキュリティ
業務ロジックとは独立した専用コンポーネントとして設計し、複数サービス間での共有を可能にします。
高パフォーマンス
短時間で大 ...
5月29日 08:10 投稿
Spring Bootの@Scheduledと分散環境における注意点
基本的な実装と課題
Spring Bootの@Scheduledアノテーションを使用する場合、デフォルトではシングルスレッドで処理が実行されます。この仕様により、処理時間が長いタスクが存在する場合、以下の2つの問題が発生します:
タスクの実行遅延
スレッドの競合による処理停止
@Component
@EnableScheduling
public class ScheduledTask {
@Scheduled(cron = "0/5 * * * * ...
5月28日 15:52 投稿
RabbitMQを用いた.NETアプリケーションでのメッセージング実装
RabbitMQ基本設定
サーバーにRabbitMQをインストール後、vhostの作成とexchange/queueのバインディングを設定します。
プロジェクト構成
NuGetからRabbitMQ.Clientパッケージをインストールし、以下のヘルパークラスを実装します。
RabbitMQ操作クラス
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Configuration;
using System.Text;
namespace ...
5月18日 00:41 投稿
RabbitMQのアーキテクチャ設計原理と実践
目次
メッセージミドルウェア概要
同期通信と非同期通信の比較
結合の緩和:
非同期による結合緩和
トラフィックスムージング:
従来のHTTPリクエストの課題:
具体例:
コードデモンストレーション:
解決策:
1.マルチスレッドによるビジネスロジック処理(非同期操作の実現):
2.MQによるビジネスロジック処理(非同期操作の実現):
MQの二つの実装バージョン:
1.ネ ...
5月15日 19:07 投稿