Submit Search
Upload
2017 02-14 キュー実装に見る排他処理
•
Download as PPTX, PDF
•
2 likes
•
2,677 views
Akishige TAKEKOSHI
Follow
キューは排他制御ができていないと簡単に死んでしまいます。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 16
Download now
Recommended
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
日本語テストメソッドについて
日本語テストメソッドについて
kumake
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
Takafumi ONAKA
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Recommended
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
日本語テストメソッドについて
日本語テストメソッドについて
kumake
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
Takafumi ONAKA
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
Yusuke Shirakawa
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
akira6592
こわくない Git
こわくない Git
Kota Saito
OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳
Takako Miyagawa
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
Takako Miyagawa
More Related Content
What's hot
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
Yusuke Shirakawa
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
akira6592
こわくない Git
こわくない Git
Kota Saito
What's hot
(20)
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Docker Tokyo
Docker Tokyo
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
入門 シェル実装
入門 シェル実装
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
Rest ful api設計入門
Rest ful api設計入門
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
こわくない Git
こわくない Git
Viewers also liked
OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳
Takako Miyagawa
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
Takako Miyagawa
CodeIgniterのライセンスについて
CodeIgniterのライセンスについて
Takako Miyagawa
CodeIgniterでXMLを処理してみる
CodeIgniterでXMLを処理してみる
智之 大野
FuelPHP で DynamoDB
FuelPHP で DynamoDB
Tetsuji Koyama
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
Keishi Hosoba
PHPUnitでリファクタリング
PHPUnitでリファクタリング
Takako Miyagawa
Codeigniter3フレームアップデート
Codeigniter3フレームアップデート
tomohiro kitaura
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
Codeigniter4の比較と検証
Codeigniter4の比較と検証
ME iBotch
CodeIgniter3マニュアル和訳の方法と感想
CodeIgniter3マニュアル和訳の方法と感想
Akishige TAKEKOSHI
CodeIgniter4 PHPCon 2016
CodeIgniter4 PHPCon 2016
Takako Miyagawa
スピーカーから始める勉強会
スピーカーから始める勉強会
Akishige TAKEKOSHI
groceryCRUDとtank_authで簡単に管理画面と認証機能を作る
groceryCRUDとtank_authで簡単に管理画面と認証機能を作る
Akishige TAKEKOSHI
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策
Akishige TAKEKOSHI
Dockerでデプロイ
Dockerでデプロイ
oshiro_seiya
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
Takako Miyagawa
Spring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクト
政雄 金森
Viewers also liked
(20)
OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
CodeIgniterのライセンスについて
CodeIgniterのライセンスについて
CodeIgniterでXMLを処理してみる
CodeIgniterでXMLを処理してみる
FuelPHP で DynamoDB
FuelPHP で DynamoDB
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
PHPUnitでリファクタリング
PHPUnitでリファクタリング
Codeigniter3フレームアップデート
Codeigniter3フレームアップデート
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
Codeigniter4の比較と検証
Codeigniter4の比較と検証
CodeIgniter3マニュアル和訳の方法と感想
CodeIgniter3マニュアル和訳の方法と感想
CodeIgniter4 PHPCon 2016
CodeIgniter4 PHPCon 2016
スピーカーから始める勉強会
スピーカーから始める勉強会
groceryCRUDとtank_authで簡単に管理画面と認証機能を作る
groceryCRUDとtank_authで簡単に管理画面と認証機能を作る
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策
Dockerでデプロイ
Dockerでデプロイ
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
Spring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクト
Similar to 2017 02-14 キュー実装に見る排他処理
Python 2/3コード共存戦略 #osakapy
Python 2/3コード共存戦略 #osakapy
敦志 金谷
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみる
Kenta IDA
Github Actionsで始めるROS/ROS2のCI
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
CotEditor Script
CotEditor Script
Kosuke Usami
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
PEP8を読んでみよう
PEP8を読んでみよう
2bo 2bo
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Shinya Okano
Firefox と Mozilla のテクノロジー
Firefox と Mozilla のテクノロジー
dynamis
Kivyでゲーム
Kivyでゲーム
Jun Okazaki
Code igniter + ci phpunit-test
Code igniter + ci phpunit-test
ME iBotch
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
第1回python勉強会
第1回python勉強会
Yoshio Shimomura
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Yuma Ohgami
Python languageupdate (2004)
Python languageupdate (2004)
泰 増田
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
Devとopsをつなぐchat ops
Devとopsをつなぐchat ops
ikikko
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Chihiro Adachi
Build an iOS app with ConcourseCI
Build an iOS app with ConcourseCI
健仁 天沼
Similar to 2017 02-14 キュー実装に見る排他処理
(20)
Python 2/3コード共存戦略 #osakapy
Python 2/3コード共存戦略 #osakapy
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみる
Github Actionsで始めるROS/ROS2のCI
Github Actionsで始めるROS/ROS2のCI
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
CotEditor Script
CotEditor Script
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
PEP8を読んでみよう
PEP8を読んでみよう
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Firefox と Mozilla のテクノロジー
Firefox と Mozilla のテクノロジー
Kivyでゲーム
Kivyでゲーム
Code igniter + ci phpunit-test
Code igniter + ci phpunit-test
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
第1回python勉強会
第1回python勉強会
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Python languageupdate (2004)
Python languageupdate (2004)
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Devとopsをつなぐchat ops
Devとopsをつなぐchat ops
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Build an iOS app with ConcourseCI
Build an iOS app with ConcourseCI
Recently uploaded
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Recently uploaded
(9)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
2017 02-14 キュー実装に見る排他処理
1.
キュー実装に見る 排他処理 CodeIgniter Night 2 2017-02-14
@noldorinfo
2.
自己紹介 • 竹腰彰成(たけこしあきしげ) • Twitter:
@noldorinfo • http://blog.noldor.info/ 2
3.
今日のテーマ • CodeIgniter4でキュー実装中です • 仕様変更や機能追加するならリリース前のいまのうち •
レビュー的な意味でツッコミお願いします 3
4.
キューとは Queue 4
5.
キュー(Queue) • 先入れ先出し: First
In First Out: FIFO • 対義語はスタック(Last In First Out) • ここテストに出ます(※基本情報技術者試験) 5 図はWikiPediaより https://ja.wikipedia.org/wiki/FIFO
6.
キューの利用用途 • フレームワークの場合、メッセージキューイング用途に使う • 例) •
メール送信のリクエストをため込む • PDF生成を別スレッドに処理させる • つまり相手の応答を待たずに次の処理に移るために使う • 何か重い処理をしたいが、今すぐでなくてよい • 一方でブラウザにはすぐに応答したい • キューに入れてしまおう 6 ※パンクするのでメッセージを溜め込んではいけません
7.
処理が異常終了してメッセージが消える 7 処理始めるのでキューからメッセージ消しますー Fatal Error!
8.
メッセージを残すと二重処理 8 処理始めます、終わるまでメッセージ消しませんー 別のスレッドが同じメッセージ取り出しちゃった! 重い、終わらない……
9.
そこで排他処理 9 処理始めます、作業中のマーキングしますー 次のメッセージをやるねー 重い、終わらない…… こんなライブラリがほしい!
10.
キュー実装がhelp wantedに 10
11.
リクエストされているキューの種類 • RabbitMQ • ググると利用事例が結構あるキューのミドルウェア •
Local File • ミドルウェアなしでも動かしたいらしい • Local Database • Webサーバが複数でもRDBで実装できていればいいよね • Redis、Memcached • Webサーバが複数でもKVSで実装できていればいいよね 11
12.
RabbitMQでの排他処理 • Message Acknowledgment
(ACK) • RDBのトランザクションのようなもの • 作業中はセッションつなげっぱなし、終わったらACKを投げる • ACKが戻る前にセッションが切れたら異常終了とみなす • セッションにタイムアウトはないので重い処理もできる 12 メッセージ取得 終わったら知らせる セッション持ったまま処理
13.
RDBでRabbitMQのマネはできない • RDBならトランザクションでやれば楽だよね! 異常時にはロールバックできるし! ⇒行ロック・テーブルロック持ちっぱなし問題発生 13 メッセージ取得 終わったらcommit セッション持ったまま処理 DBへの負荷が!
14.
トランザクションを使わない排他処理 • UPDATEしてaffected rows
> 0ならロックできた、とみなす • SQLが1行で済むのでアトミック性は確保できている • 異常終了は検知できないのでタイムアウト処理を作る必要あり 14
15.
まだ確認できてないこと • Radis/Memcachedで同じようなことできるの? • 長時間セッション張っていいの? •
FIFOできるの? • ググると実装はあるらしい • ローカルファイルで汎用実装だとflock()だよね…… • flock()は信用ならんイメージがある • mkdir()による代替実装って今どきやるのか? アドバイスください! 15
16.
ご清聴ありがとうございました 16
Download now