Soumettre la recherche
Mettre en ligne
サーバーのおしごと
•
53 j'aime
•
14,298 vues
Yugo Shimizu
Suivre
2014/2/8に行ったゲームサーバ勉強会でのスライドです。 サーバー構成図で登場するApplicationサーバーとDBについての基本的な事項と気をつける事について紹介しました。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 68
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
Recommandé
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
MagicOnion入門
MagicOnion入門
torisoup
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
Ken SASAKI
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
分割と整合性と戦う
分割と整合性と戦う
Yugo Shimizu
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
Makoto Haruyama
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
Yuto Komai
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
Yohei Hamada
Imprementation of realtime_networkgame
Imprementation of realtime_networkgame
Satoshi Yamafuji
Contenu connexe
Tendances
MagicOnion入門
MagicOnion入門
torisoup
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
Ken SASAKI
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
分割と整合性と戦う
分割と整合性と戦う
Yugo Shimizu
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
Makoto Haruyama
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
Yuto Komai
Tendances
(20)
MagicOnion入門
MagicOnion入門
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
脱RESTful API設計の提案
脱RESTful API設計の提案
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
分割と整合性と戦う
分割と整合性と戦う
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
En vedette
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
Yohei Hamada
Imprementation of realtime_networkgame
Imprementation of realtime_networkgame
Satoshi Yamafuji
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
Satoshi Yamafuji
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
N Masahiro
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Youichiro Miyake
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
johgus johgus
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
光晶 上原
En vedette
(8)
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
Imprementation of realtime_networkgame
Imprementation of realtime_networkgame
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
Similaire à サーバーのおしごと
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
hideyuki ikeda
SQLWorld★大阪#8
SQLWorld★大阪#8
Atsuo Yamasaki
勉強会資料①
勉強会資料①
真亮 坂口
Aiming のクラウド採用基準
Aiming のクラウド採用基準
Takahiro Hozumi
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
Keiichi Hashimoto
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Masahiko Tachizono
Google App Engineとその影響(補足)
Google App Engineとその影響(補足)
なおき きしだ
2022_1210_WordpressMeetup.pdf
2022_1210_WordpressMeetup.pdf
Naotaka Saito
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
Shota Umeda
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
SORACOM, INC
勉強会 Vol1 『ホスティングとは?』
勉強会 Vol1 『ホスティングとは?』
chimoto
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
Linux学習ロードマップ
Linux学習ロードマップ
akihito_s
Db tech showcase2015
Db tech showcase2015
emin_press
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
Webプログラミング入門
Webプログラミング入門
Tsuyoshi Kiryu
Webプログラミング入門
Webプログラミング入門
SI TEAM
Amazon ec2とは何か?
Amazon ec2とは何か?
Shinya_131
Cockatoo
Cockatoo
Hiroaki Kubota
Similaire à サーバーのおしごと
(20)
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
SQLWorld★大阪#8
SQLWorld★大阪#8
勉強会資料①
勉強会資料①
Aiming のクラウド採用基準
Aiming のクラウド採用基準
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Google App Engineとその影響(補足)
Google App Engineとその影響(補足)
2022_1210_WordpressMeetup.pdf
2022_1210_WordpressMeetup.pdf
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
勉強会 Vol1 『ホスティングとは?』
勉強会 Vol1 『ホスティングとは?』
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Linux学習ロードマップ
Linux学習ロードマップ
Db tech showcase2015
Db tech showcase2015
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Webプログラミング入門
Webプログラミング入門
Webプログラミング入門
Webプログラミング入門
Amazon ec2とは何か?
Amazon ec2とは何か?
Cockatoo
Cockatoo
Dernier
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Dernier
(7)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
サーバーのおしごと
1.
サーバーのおしごと Webサービスにおけるサーバー構成とその目的
2.
自己紹介 清水 佑吾 @yamionp id:yamionp 株式会社
gumi 勤務 Python歴約2年 サーバーさわりはじめて約10年
3.
略歴 高校:CGIやホームページを作成して小遣い稼ぎ 卒業後:ISPでネットワーク&サーバー構築のバイト ちょっと前:PHPでウェブサービス開発 今:ソーシャルゲーム開発
4.
サーバーの話
5.
6.
使用言語・フレームワーク
7.
使用ミドルウェア
8.
最近のサーバー構成
9.
S3 ELB 今日話す範囲 Application EC2 MessageQueue Job EC2 ElasticCache RDS Horizontal Partitioning Database
10.
最小限構成
11.
Request Response DATA Service
12.
一番シンプルな形 問題は? サーバーが壊れるとデータが消える サービスも止まる 書き込み途中で壊れると中途半端な書き込みが残る
13.
アクセスが増えたら 今のサーバー1台では処理しきれない時
14.
負荷への対処 スケールアップ スペックの良いサーバーに変更して処理能力UP! スケールアウト 台数を増やして処理能力UP! 今日はこちらの話をします
15.
Request Response DATA Service
16.
A B C Service DATA DATA DATA
17.
単にサーバーを増やした 特定のサーバーに負荷が集中すると対処出来ない 全データを見るには個別にアクセスする必要がある 可用性、整合性の問題は解決していない
18.
データベース
19.
A B C Service DATA DATA DATA
20.
A B C Application SQL SQL DATA Service
21.
データの格納にRDBを使用した データの扱い方が統一される (リレーショナルモデル&SQL) どのApplicationサーバーでも同じデータを扱える ユーザーはどれか一台にアクセスすれば良い アクセス先はユーザーが決める
22.
ロードバランサー
23.
助けて! A 暇… B C 暇… Application DATA Service
24.
Elastic Load Balancing
25.
A B C Application SQL DATA Service
26.
Application A B C ELB LoadBalancer Service DATA
27.
ユーザーがアクセスする先を選ぶ必要が無くなった 特定のApplicationサーバーに負荷が集中しない => 台数さえ増やせば処理可能
28.
レプリケーション
29.
Application ELB DATA Service
30.
Application 書き込み 読み込み ELB Master Slave Service
31.
メリット 既存のロジックに大きな変更無しに導入可能 自動でデータが更新される 再起動しても消えない
32.
デメリット 分散可能なのは読み込みのみ 非同期の場合古いデータが最新のデータと限らない 同期の場合、Masterのパフォーマンスが悪化する
33.
KeyValueStore (KVS)
34.
KVSとは KeyとValueのペアでデータを管理するDB Memcache, DynamoDB, Riak,
Redis…etc それぞれ全て特徴・使い方・用途が違う KEY VALUE A_AGE 21 A_AGE 21
35.
Memcached
36.
Application ELB DATA Service
37.
Application GET ELB SELECT DATA Service
38.
特徴 オンメモリなので非常に高速 (RDBの十倍程度) シンプル
39.
注意点 キャッシュロジックをアプリケーションに実装が必要 更新時に削除を忘れると古いデータが返る キャッシュのデータをもとにRDBを更新してはならない TTL以前に消える可能性 キャッシュ間のサイズが大きく違うとメモリ効率悪化 永続化は出来ない(データはメモリ上にのみ存在)
40.
Redis
41.
特徴 インメモリ型KVS 永続化可能 レプリケーション可能 データ型 (LIST, SET,
SORTED SET, HASH) を持つ 複雑な操作をアトミックに実行可能
42.
LIST LPOP A B C D
43.
LIST RPUSH B C D E
44.
アトミックに実行とは
45.
原子性 コマンド結果が全て成功or全て失敗しかない事 操作の途中段階にならない。
46.
データベース分割
47.
Application 書き込み ELB 暇… 助けて! Master Slave Service
48.
書込み性能の限界
49.
垂直分割 ID 体力 やくそう ジョブ Player A 100 2 戦士 Player B 98 8 格闘家 Player
C 20 0 魔法使い Player D 0 10 僧侶 DB 1 DB 2 DB 3
50.
Application ELB アイテム カード Service
51.
メリット 分割しても集計が容易 ユニーク制約が維持される
52.
デメリット アイテムに負荷が集中したら対処できない 実際は分割をまたいだ処理が多い
53.
水平分割 体力 やくそう ジョブ Player A 100 2 戦士 Player B 98 8 格闘家 Player
C 20 0 魔法使い DB 2 Player D 0 10 僧侶 DB 3 DB 1
54.
Application Player1 ELB Player2 Service
55.
メリット ほぼ均等に負荷が分散される プレイヤーに閉じた処理はDBをまたがなくてすむ
56.
デメリット 集計が難しい 技術的難易度(フレームワークがサポートしないetc ユニーク制約をかけれない ID1のデータが分割した数だけ存在する
57.
データが壊れる時
58.
DB ユーザー1 GET A a=3 a=a+2 set(“a”, a) A 3 A 5 3 SET
A 5
59.
DB ユーザー1 ユーザー2 GET A a=3 a=a+2 set(“a”, a) A 3 SET
A 5 3 A 3 A 5 3+2+2=5 A 5 GET A 3 a=3 a=a+2 SET A 5 set(“a”, a)
60.
ロック
61.
DB ユーザー1 GET A &
LOCK A a=3 a=a+2 3 SET A 5 ユーザー2 3 A 3 A 5 A 7 GET A & LOCK 5 SET A 7 a=5 a=a+2
62.
RDBでは標準的 SELECT FOR UPDATE デッドロックの危険性 ロック順番を統一する
63.
CAS
64.
DB ユーザー1 ユーザー2 GET A A 3, ver02 a=3 a=a+2 SET
A 5, ver02 A ver02 ver02 A 3 3 5 3 ver03 ver02 A ver03 5 GET A 3, ver02 a=3 a=a+2 失敗 A 5, ver02 SET
65.
DB ユーザー2 失敗したので最初からリトライ A ver03 5 GET A 5, ver03 a=5 a=a+2 A ver03 ver04 5 7 SET
A 7, ver03
66.
Memcache, Redisなどで使用可能 ロックが無いので処理が止まらない 繰り返すロジックを自分で実装する必要が有る 永遠に失敗し続ける可能性がある リトライ回数に上限をつける
67.
まとめ 負荷対策にはスケールアップとスケールアウトがある データ読み込みに関しては手段が多い KVSはそれぞれのソフトで目的・使い方が違う 書き込みの分散は整合性との戦い
68.
ご清聴ありがとうございました
Télécharger maintenant