Redisを用いた分散ロックの実装と応用

分散ロックの基本概念 分散ロックは、複数プロセス間での可視性と相互排他を実現するメカニズムです。主な目的は、複数インスタンスが共有リソースへのアクセスを調整し、プログラムの直列実行を保証することにあります。 分散ロックの必須条件 可視性: すべてのプロセスが同じ状態を認識可能 相互排他: 同時に一つのプロセスのみがロックを保持 高可用性: システ ...

6月28日 19:39 投稿

OpenResty と Lua ライブラリを活用した WAF 構築手法

環境の準備とパッケージインストール OpenResty ベースのセキュリティゲートウェイを構築する際、まずは基盤となるミドルウェアと依存ライブラリのセットアップが重要です。RHEL クラスターのディストリビューションにおいて、公式のリポジトリ登録から始めてパッケージ管理を行います。 # リポジトリ設定(RHEL 8 以降は dnf を使用) wget https://openresty.org/packag ...

6月25日 22:50 投稿

Redisによる複数ルールレートリミットと重複送信防止の実装方法

Redisを利用したレートリミット実装は一般的ですが、多くの場合は単一ルール(例:1分あたり1回アクセス、60分あたり10回アクセスなど)に限定されています。しかし、実際のシステムでは一つのインターフェースに対して複数のルールを同時に適用する必要がある場合があります。特に分散システム環境では、この課題をどのように解決すればよいでしょうか。ここでは、Redisを ...

6月25日 16:04 投稿

libmoon の構造と設定ファイルの使い方

ディレクトリ構成の概要 libmoon は高性能パケット処理を実現する Lua ベースのフレームワークであり、そのプロジェクト構成は明確に分離されています。以下が主要なディレクトリ構成です。 libmoon/ ├── bin/ ├── build/ ├── config/ ├── deps/ ├── examples/ ├── lib/ ├── scripts/ ├── src/ ├── test/ ├── CMakeLists.txt ├── README.md └── LICENSE bin/: コンパイ ...

6月22日 21:05 投稿

STM32F407でのLuaによるシリアル通信を利用した機能ホットアップデート

STM32F407でのLuaによるシリアル通信を利用した機能ホットアップデート 目次- STM32F407でのLuaによるシリアル通信を利用した機能ホットアップデート 1.Luaリソースの準備 2.全体のアプローチ 3.Luaの移植 ステップ1 ステップ2 ステップ3 ステップ4 ステップ5 ステップ6 4.Luaの基本的な使用法 ステップ1 基本的なLua関数の作成 ステップ2 Lua関数の登録 ステップ3 Lua文 ...

6月15日 18:58 投稿

Air780EG における sys ライブラリを活用した LuaTask 非同期処理の実装

LuaTask フレームワークの概要 LuaTask は、Lua 言語のコルーチン機能を利用して擬似的なマルチタスク環境を実現するフレームワークです。従来のタイマーベースの遅延処理とは異なり、複数のタスクを並列的に記述することが可能になります。この框架を利用するには、まず sys ライブラリをロードし、プログラムの末尾で sys.run() を呼び出してスケジューラを起動する必要 ...

6月11日 16:40 投稿

pfUI アドオン構成と設定メカニズムの解析

プロジェクトディレクトリ構成 pfUI のソースコードは、機能ごとにモジュール化されたディレクトリ構造を採用しています。主要なフォルダの役割は以下の通りです。 pfUI/ ├── addons/ │ └── pfUI/ │ ├── api/ (外部 API 連携定義) │ ├── core/ (メインロジックおよび初期化) │ ├── modules/ (機能別モジュール) │ ├── ski ...

6月8日 23:15 投稿

NginxにGeoIP2モジュールを導入する手順

既存のNginx設定をバックアップ Nginxバージョンを切り替え(ソースコードディレクトリ /www/server/nginx/src を生成するため) GeoIP2モジュールの依存関係をインストール libmaxminddbをダウンロード Releases · maxmind/libmaxminddb (github.com) tar zxvf libmaxminddb-1.10.0.tar.gz cd libmaxminddb-1.10.0 ./configure --prefix=/usr/local/libmaxminddb ...

5月30日 07:51 投稿

OpenResty パッケージ管理ツール opm の導入と設定詳細

OpenResty 公式パッケージマネージャ opm の概要 opm(OpenResty Package Manager)は、Perl で実装された OpenResty 標準のパッケージ管理ツールです。Node.js の npm や Perl の CPAN に相当する機能を持ちます。中央リポジトリ(opm.openresty.org)から Lua ライブラリの取得や、自作ライブラリの公開を可能にします。 LuaRocks との比較 OpenResty 環境において、一般 ...

5月27日 09:01 投稿

合宙Air780EG開発ボードチュートリアル - sysライブラリの紹介 (LuatOSベース)

sysライブラリ sysライブラリのインターフェース関数については、sysインターフェース関数を参照してください。 一、sys.taskInit(func, arg1, arg2, argN) タスク(コルーチン)を作成します。 パラメータ: function: 実行する関数。匿名関数、ローカル関数、またはグローバル関数を指定できます。 any: 渡す引数1(任意) any: 渡す引数2(任意) any: 渡す引数N(任意 ...

5月25日 08:31 投稿