SlideShare a Scribd company logo
1 of 40
分散キャッシュ
          むにゃむにゃ




Python Developers Festa 2012.03

   絵で見てわかる 某分散データストアキャッシュ
   2012/03/17
   Takahiko Sato
                                  1
じこしょうかい
おまえだれよ

• 本名
 – 佐藤 貴彦(さとう たかひこ)


• 日本オラクルで働いてます。
 – 主担当はデータベースやらミドルウェア製品です。
 – その他よろず屋やってます。
 – データベース、ネットワーク、OSとかインフラ系


• Oracle の社内ポリシーに、
  「匿名でオラクルのことについて語んじゃねーよ!」
  という項目あります。という訳で、今回だけは実名で発
  表します。


                              2
最初にお約束
今日は仕事ではなく個人としての発表です

本スライドにおいて示されている見解
は、私自身の見解であって、オラクルの
見解を必ずしも反映したものではありま
せん。




                      3
Agenda


• 「某」分散データストアについて
 –   アーキテクチャ
 –   DEMO
 –   通信を高速化するために
 –   ネットワーク障害に打ち勝つために




                        4
「某」分散データストア




              5
「某」分散データストア


• 今回のお話のメインは「分散キャッシュ」です。
• どんな仕組みなのか、「某」製品のアーキテクチャを紹
  介しながらお話をします。

         本当はキャッシュだけじゃなく分散DB
         も含めて広く話したくて曖昧に「分散
         データーストア」というタイトルをつ
         けてたのですが、発表時間が20分に収
         まるはずもなく諦めました。




                              6
「某」製品
分散とかクラスターとかいう製品多いですね・・・

• 今回メインで話す「某」製品
 – Oracle Coherence


• 今回話したかったけど時間が足りなかった「某」製品
 – Oracle Real Application Clusters


• 今回話す予定が全くなかった「某」製品
 –   Oracle TimesTen In-Memory Database
 –   Oracle NoSQL Database
 –   Oracle Cluster File System
 –   MySQL Cluster




                                          7
製品メッセージとしては分散データ・グリッド


• オラクル的には、データ・グリッドと呼んでいます。



• 定義(マニュアルより抜粋)
 – A Data Grid is a system composed of multiple servers that
   work to manage information and related operations - such
   as computations - in a distributed environment.
 – データ・グリッドは複数のサーバーで構成されるシステムで、
   分散環境において情報とそれに関連付けられた操作(計算など)の
   管理を連携して実行します。




                                                               8
Oracle Coherence




                   9
Oracle Coherenceとは


•   分散キャッシュ、分散データグリッド製品
•   100% Javaで書かれている。
•   本体は1つの jar ファイル。
•   サーバーアプリとCoherence API群からなる
    – Coherence Server(データを格納するキャッシュサーバー)
     • 中に入ってる DefaultCacheServer.class を実行するだけ
    – Coherence Client(Serverにアクセスするアプリ)
     • coherence.jar のAPIを叩くJavaアプリを書くだけ
• データは key-value       pairの ObjectをMap に格納。

            あれ?単なるKVSじ
             ゃ・・・・



                                                 10
Coherenceで組むクラスターはこんな感じ


クライアントもクラスター
の一部なんだね

                         Coherence
                           Client

                        Coherence API
                            JVM
    Coherence Cluster

          Coherence        Coherence    Coherence
           Server           Server       Server

              JVM             JVM         JVM




                                                    11
Coherenceの内部構造概略

                                    Coherence
            実際のデータは、backing           Client
             map と呼ばれるマップに         Coherence API
             格納される。



Coherenceの内部は複数のサ
  ービス(スレッド)で構
  成される。


cache service         Cache              Cache            Cache
                  Service Thread     Service Thread   Service Thread
                     storage            storage          storage
                   backing map        backing map      backing map

cluster service      Cluster            Cluster          Cluster
                  Service Thread     Service Thread   Service Thread

                    Coherence          Coherence        Coherence
                     Server             Server           Server
                                                                       12
Cache Serviceの種類
     Distributed Cache Service

     • Distributed Cache Service (分散キャッシュ)
        – データはハッシュ計算により、どのパーティションに格納される
          か決まる。パーティションはノード全体に分散。
      どのデータにも1hop                     Coherence
      でアクセス可能                           Client
                                    Coherence API



Distributed     Distributed Cache   Distributed Cache   Distributed Cache
Cache Service    Service Thread      Service Thread      Service Thread
                    storage             storage             storage
                  backing map         backing map         backing map
                   P1     P4           P2     P5           P3     P6


                   Coherence           Coherence           Coherence
                    Server              Server              Server
                                                                            13
Cache Serviceの種類
     Distributed Cache Service

     • Distributed Cache Service (分散キャッシュ)
        – バックアップを保持する設定も可能。
        – バックアップは自動的に”異なるサーバー”に配置される。
                                        これでSPOFがなくな
                                         ったね!


Distributed     service thread   service thread   service thread
Cache Service      storage          storage           storage
                backing map      backing map      backing map
                 P1     P4        P2     P5        P3     P6

                 backup map       backup map       backup map
                 P3      P6        P1     P4        P2     P5

                 Coherence        Coherence        Coherence
                  Server           Server           Server
                                                                   14
Cache Serviceの種類
     Replicated Cache Service

     • Replicated Cache Service (レプリケーションキャッシュ)
         – 全ノードに完全に同じデータを持つ。




Replicated      service thread   service thread   service thread
Cache Service      storage          storage         storage
                backing map      backing map      backing map
                同じデータ            同じデータ            同じデータ


                 Coherence        Coherence        Coherence
                  Server           Server           Server


                                                                   15
Backing map の種類


• 実際のデータが格納されるbacking mapにも様々ある
 – Local Cache                         heapを使うLocal Cacheを
   • ローカルJVMのヒープにデータを格納                  ベースに、他と組み合
                                         わせることが多いね
 – Read Write
   • 参照更新に連動して、DBなどの永続化層と連携する
 – Overflow
   • frontに入りきらなくなった分を、backに移動させる
 – 他にもたくさんあって、いろいろ組み合わせられる!
  backing map      backing map            backing map
 (Local Cache)    (Read Write)            (Overflow )
                 front (Local Cache)    front (Local Cache)
  Local Cache       Cache Store             back(nio)



                      RDBMS                              file

                                                                16
組み合わせ例
     Distribute Cache Service + Read Write Backing map

     • Distributed Cache Service にてキャッシュを分散。
       Read Write Backing map を使い、キャッシュとDBの連
       携をする例
Distributed       service thread        service thread     service thread
Cache Service        storage               storage            storage
                   backing map           backing map       backing map
                   (Read Write)          (Read Write)      (Read Write)
                   front (Local)         front (Local)      front (Local)
                Cache Store           Cache Store        Cache Store

                   backup map            backup map         backup map

                   Coherence              Coherence         Coherence
                    Server                 Server            Server

                                   databaseへ接続

                                                                            17
ようは何なの?
便利でカスタマイズしまくれる分散KVS。
分散処理や可用性担保などを行うめんどい部分は、
 全てCoherence Serverがよしなにやってくれる。
開発者は、Coherence APIを使って処理を書くだけ。
 デフォルトの挙動が気に入らなければ、多くの機能
 で独自にカスタマイズ可能。



     Distributed Cache Serviceならば、1つのデータは
      1つのノード(Partition)に格納するため、ノー
      ド全体での一貫性は崩れない。言い換えると、一
      貫性を保って更新が必要なデータは、同一ノード
      (Partition)に割り当てることで、アトミックな操
      作が可能。
                                        18
DEMO



       19
通信を高速化するために




              20
ネットワーク転送は速いけれど・・・


• ネットワーク通信がどんどん高速化している
 – Ethernetでも10Gbps
 – 単純なブロック転送であれば、ディスクI/Oよりはるかに高速


• 速いがされどI/O、つまるときはつまる
 – ボトルネックはI/Oに始まることが多い。
 – 速いI/Oも積もれば山となる

     基本は2つ
      転送量を減らす
      転送数を減らす



                                   21
Coherence が使う通信プロトコル
     TCMP - Tangosol Cluster Management Protocol

     • Coherence独自のアプリケーションプロトコル
        – 用途に応じてUDPユニキャスト/UDPマルチキャスト/TCPなど使う

            TCMP over TCP
Coherence
  Client    マルチキャスト範囲
            外からの外接
                            Coherence    TCMP over UDP ユニキャスト
                              Client     データの転送

              Proxy
              Server




            Coherence                             Coherence
             Server                                Server

                             Coherence
                              Server     TCMP over UDP マルチキャスト
                                         クラスター管理
                                                                22
転送オーバーヘッドの削減
UDPベースの独自プロトコル

• データのやり取りは基本的にTCMP over UDPを使う。
 – TCMPレイヤーで独自のACK機能やフロー制御を行う。
 – どんな感じかというと、高品質なネットワークを前提にUDPの乱
   れ打ち。




 基本的に高品質なスイッチとネットワーク
 インフラ期待してるんで、パケロスなんて
 するわけ無いでしょってこと。
 10GEtherかInfiniBandがほしいなぁ・・・




                                    23
転送量の削減&転送オーバーヘッドの削減
POF : Coherence独自のシリアライザ―

• ネットワーク経由のデータ転送にはシリアライズ処理
  が必要。
• Java標準のシリアライザーが正直いけてない
                                   MessagePack
                                     試してみたいなぁ

• POF(Portable Format Object)という独自の
  シリアライザ―を提供。
 – また、シリアライザ―は自分で指定もできるので、自作(?)の
   シリアライザ―を指定することも可能。
    Coherence                  Coherence
      Client                    Server
                  POF Object
     Object                     Object



                                             24
転送量の削減&転送オーバーヘッドの削減
POFによる部分更新

• POFはオブジェクトの部分的なデシリアライズが可能

                Object全体を転送する
                  のは無駄

   Coherence          put
                                         Coherence
     Client                               Server
                            POF Object
    Object                                Object



               変更点(フィールド単位)だ
                け送ること可能
   Coherence                             Coherence
     Client    pof update                 Server
    Object                                Object



                                                     25
転送量&転送回数の削減
      Query

      • データアクアスに put/get ばかりじゃ、毎回クライア
        ントにデータが飛んでくるのでI/O無駄。
      • 処理手順を投げてサーバー側に処理させる
データのある所で処理                        Coherence
                                    Client
 させれば良いじゃん
                                 Coherence API




Distributed     Service Thread   Service Thread   Service Thread
Cache Service
                 backing map      backing map      backing map
                  P1     P4        P2     P5        P3     P6


                 Coherence         Coherence        Coherence
                  Server            Server           Server
                                                                   26
ネットワーク障害に打ち勝つために




                   27
ネットワーク関連の障害


• CAPで言うところの「一貫性」+「可用性」を優先する
 – そのためネットワークの分断耐性が低い


• ネットワーク通信ができなくなったノードを、速やかに
  クラスターから離脱させる仕組みが必要。

• クラスター全体でNetwork Heartbeat もうつが、それだ
  けでは即時性に欠ける。

        ネットワーク障害には正面からぶち
         当たっても勝てないので、諦めて
         データを守るのを優先します。


                                       28
プロセスダウンの検知をするには
   TCP Ring

   • プロセス同士は互いにTCPコネクションをリング上に張
     っている。
   • プロセスがダウンした場合、OSがTCPコネクション(ソ
     ケット)を閉じてくれるので、ノードダウンに気がつく
     事ができる。        OS
ん?隣のノードが落ち
                    Coherence
 たっぽいぞ。               Client


           OS                      OS

        Coherence               Coherence
         Server        OS        Server

                    Coherence
                     Server

                                            29
サーバー(OS)のダウンを検知するには
  IP Monitor

  • ハードウェア障害や、OSのカーネルパニックなど、OSが
    突然死した場合、TCPコネクションは適切に処理されな
    いため、通信相手はそれに気がつくことができない。
  • ランダムにpingを送ることで、OSダウンを検知。
ん?向かいのノードの            OS
 ping応答が無いな
                   Coherence
                     Client


          OS                           OS
                        ICMP Echo
       Coherence                    Coherence
        Server        OS             Server

                   Coherence
                    Server

                                                30
一番避けたいクラスターの分断
 Split Brain
正常時        network                            network
                switch                         switch


     Server     Server    Server   Server     Server    Server

    cluster1




障害発生時           network                       network
                 switch                        switch


       Server   Server    Server    Server     Server   Server
    cluster1                       cluster2


         ネットワークが切れたのか、本当           お互い、相手がダウンしたと思い
         に相手のノード3台がダウンしたの          込んでいるので、各々クラスター
         か区別つかない。                  を再構成する。
                                                                 31
Split Brainの何が問題?


  • 分断したクラスターが各々処理を始めてしまうため、全
    体での一貫性が崩れてしまう。
    – データ破損
    – 結果不正
  • 発生の検知には、少なくとももう1系統の情報共有手段
    が必要
              network                       network
               switch                        switch


     Server   Server    Server    Server    Server    Server
   cluster1                      cluster2



何かしらの情報共有手
段。
                                                               32
Coherence以外のクラスター製品はどうしてる?
   Oracle RACの例

   • Network Heartbeatの他に、Disk Heartbeatを使ってい
     るものもある。

               network                                  network
                switch                                   switch


      Server   Server    Server                Server   Server    Server
    cluster1                                 cluster2




                                                        投票の結果、cluster2は再起動
                                                        することにします。
共有ディスクを使って
Disk Heartbeatを行なってい
るので、ネットワーク分断が
起こっても検知可能。
                                  storage server
                                                                           33
Coherenceではどうしてる?


   • 標準では特にSprit Brainを検知する機能を持っていな
     い
     – デフォルトのままで使うと Split Brain 状態になる。
     – カスタムで色々拡張できるので、ネットワークを2系統使い(例
       えば運用LAN)独自の検知機能を付与することはできる。
                                                      3台でクラスター
3台でクラスター                                              再構成しよーっ
              network                       network
再構成しよーっと       switch                        switch   と


     Server   Server    Server    Server    Server     Server
   cluster1                      cluster2




      例えば運用LANがあるなら、そちらから
      ノードの数数えて、不一致なら強制停止
      とかスクリプト書けるよね。
                                                                34
そもそもSplit Brainを起こさせたら負け


  • 通常はネットワークは「冗長」構成にするもの。
  • ネットワーク分断が起こるのは一時的なものがほとんど
     – スイッチの H/A切り替え
                                               SPOFとかまじありえ
     – スパニングツリーの再計算                            ないよねー
     – etc...
  • 数秒の通信断だけ耐えられればよいはず
                          切り替えるから
                          ちょっと待って
あれ?繋が                     ね。
らないぞ?         network                          network
                network
               switch                            network
                                                switch
                 switch                           switch


     Server   Server      Server     Server    Server      Server
   cluster1                         cluster2

                                                                    35
Quorumによる制御
  Cluster Quorum Policy

  • 例えば、HA切り替えに伴う1分程度の通信断でもクラス
    ターを維持させたい。
  • Quorum という考え方。
       – クラスターの稼働に必要なノード数を指定(以下の図では4)
                          切り替えるから
                          ちょっと待って
動けな
い・・・                      ね。
              network                         network
                network
               switch                           network
                                               switch
                 switch                          switch


     Server   Server      Server    Server    Server      Server
   cluster1                        cluster2

                            4台ないと離脱やノード排除も含むク
                            ラスター活動を行えないので、一時的
                            な通信断でsplit brainが発生することを
                            防ぐことができる。
                                                                   36
実際の構成例など




           37
CoherenceとRACを組み合わせた構成例
        「某」製品の組み合わせ
                                                     Service LAN

                                                 switch


                  AP Server        AP Server                  AP Server     AP Server
 AP Layer        (Coherence)      (Coherence)                (Coherence)   (Coherence)


              Coherence Cluster                  switch


                Cache Server      Cache Server             Cache Server    Cache Server
Cache Layer     (Coherence)       (Coherence)              (Coherence)     (Coherence)


                                                 switch

                      DB Server     DB Server             DB Server   DB Server
 DB Layer              (RAC)         (RAC)                 (RAC)       (RAC)
              DB Cluster                         switch

                                            Storage Server
                                                                                          38
多すぎたのでここまで



             39
おしまい



       40

More Related Content

What's hot

[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata
[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata
[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke KuramataInsight Technology, Inc.
 
超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODE超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODEMasaki Yamakawa
 
HDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsHDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsCloudera Japan
 
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...Insight Technology, Inc.
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexKoji Shinkubo
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2Dell TechCenter Japan
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...Insight Technology, Inc.
 
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)Akira Shimosako
 
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clustersDb tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clustersHiroaki Kubota
 
Osc2012 spring HBase Report
Osc2012 spring HBase ReportOsc2012 spring HBase Report
Osc2012 spring HBase ReportSeiichiro Ishida
 
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告Amazon Web Services Japan
 
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...Insight Technology, Inc.
 
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deploymentssmdkk
 
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014Cloudera Japan
 
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...Insight Technology, Inc.
 
[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...
[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...
[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...Insight Technology, Inc.
 

What's hot (20)

[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata
[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata
[D25] 分散Key-Valueストア「okuyama」&「Riak」の同時書込み性能検証 by Yusuke Kuramata
 
超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODE超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODE
 
HBase at LINE
HBase at LINEHBase at LINE
HBase at LINE
 
HDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsHDFS Supportaiblity Improvements
HDFS Supportaiblity Improvements
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
 
Couchbase 101 ja
Couchbase 101 jaCouchbase 101 ja
Couchbase 101 ja
 
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortex
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
 
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
 
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clustersDb tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
 
Osc2012 spring HBase Report
Osc2012 spring HBase ReportOsc2012 spring HBase Report
Osc2012 spring HBase Report
 
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
 
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
 
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
 
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
 
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
 
Yahoo! JAPANとRiak
Yahoo! JAPANとRiakYahoo! JAPANとRiak
Yahoo! JAPANとRiak
 
[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...
[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...
[db tech showcase Tokyo 2015] A33:Amazon Aurora Deep Dive by アマゾン データ サービス ジャ...
 

Similar to 絵で見てわかる 某分散データストア

エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例Amazon Web Services Japan
 
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側gipwest
 
Windows Azure 基盤を支えるテクノロジー
Windows Azure 基盤を支えるテクノロジーWindows Azure 基盤を支えるテクノロジー
Windows Azure 基盤を支えるテクノロジーKazumi Hirose
 
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)Amazon Web Services Japan
 
CDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATECDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATEHiroyasu Suzuki
 
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編Amazon Web Services Japan
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera Japan
 
VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料Shinichiro Isago
 
Denali ctp3 always on availability groups 概要
Denali ctp3 always on  availability groups 概要Denali ctp3 always on  availability groups 概要
Denali ctp3 always on availability groups 概要Masayuki Ozawa
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usageirix_jp
 
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなしOSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなしSatoshi Shimazaki
 
WindowsAzureで女子力アップ
WindowsAzureで女子力アップ WindowsAzureで女子力アップ
WindowsAzureで女子力アップ Shinichiro Isago
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - SORACOM, INC
 
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoyaインフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 NagoyaSatoshi Shimazaki
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたGoAzure
 
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR Technologies Japan
 
Heroshima "Cloud & Security Day" and Night
Heroshima "Cloud & Security Day" and NightHeroshima "Cloud & Security Day" and Night
Heroshima "Cloud & Security Day" and NightShinichiro Isago
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 

Similar to 絵で見てわかる 某分散データストア (20)

エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例
 
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
 
Windows Azure 基盤を支えるテクノロジー
Windows Azure 基盤を支えるテクノロジーWindows Azure 基盤を支えるテクノロジー
Windows Azure 基盤を支えるテクノロジー
 
Windows Azure
Windows AzureWindows Azure
Windows Azure
 
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
 
CDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATECDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATE
 
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219
 
VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料
 
Denali ctp3 always on availability groups 概要
Denali ctp3 always on  availability groups 概要Denali ctp3 always on  availability groups 概要
Denali ctp3 always on availability groups 概要
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usage
 
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなしOSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
 
WindowsAzureで女子力アップ
WindowsAzureで女子力アップ WindowsAzureで女子力アップ
WindowsAzureで女子力アップ
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoyaインフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 
HBase at LINE
HBase at LINEHBase at LINE
HBase at LINE
 
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
 
Heroshima "Cloud & Security Day" and Night
Heroshima "Cloud & Security Day" and NightHeroshima "Cloud & Security Day" and Night
Heroshima "Cloud & Security Day" and Night
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 

Recently uploaded

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (10)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

絵で見てわかる 某分散データストア

  • 1. 分散キャッシュ むにゃむにゃ Python Developers Festa 2012.03 絵で見てわかる 某分散データストアキャッシュ 2012/03/17 Takahiko Sato 1
  • 2. じこしょうかい おまえだれよ • 本名 – 佐藤 貴彦(さとう たかひこ) • 日本オラクルで働いてます。 – 主担当はデータベースやらミドルウェア製品です。 – その他よろず屋やってます。 – データベース、ネットワーク、OSとかインフラ系 • Oracle の社内ポリシーに、 「匿名でオラクルのことについて語んじゃねーよ!」 という項目あります。という訳で、今回だけは実名で発 表します。 2
  • 4. Agenda • 「某」分散データストアについて – アーキテクチャ – DEMO – 通信を高速化するために – ネットワーク障害に打ち勝つために 4
  • 6. 「某」分散データストア • 今回のお話のメインは「分散キャッシュ」です。 • どんな仕組みなのか、「某」製品のアーキテクチャを紹 介しながらお話をします。 本当はキャッシュだけじゃなく分散DB も含めて広く話したくて曖昧に「分散 データーストア」というタイトルをつ けてたのですが、発表時間が20分に収 まるはずもなく諦めました。 6
  • 7. 「某」製品 分散とかクラスターとかいう製品多いですね・・・ • 今回メインで話す「某」製品 – Oracle Coherence • 今回話したかったけど時間が足りなかった「某」製品 – Oracle Real Application Clusters • 今回話す予定が全くなかった「某」製品 – Oracle TimesTen In-Memory Database – Oracle NoSQL Database – Oracle Cluster File System – MySQL Cluster 7
  • 8. 製品メッセージとしては分散データ・グリッド • オラクル的には、データ・グリッドと呼んでいます。 • 定義(マニュアルより抜粋) – A Data Grid is a system composed of multiple servers that work to manage information and related operations - such as computations - in a distributed environment. – データ・グリッドは複数のサーバーで構成されるシステムで、 分散環境において情報とそれに関連付けられた操作(計算など)の 管理を連携して実行します。 8
  • 10. Oracle Coherenceとは • 分散キャッシュ、分散データグリッド製品 • 100% Javaで書かれている。 • 本体は1つの jar ファイル。 • サーバーアプリとCoherence API群からなる – Coherence Server(データを格納するキャッシュサーバー) • 中に入ってる DefaultCacheServer.class を実行するだけ – Coherence Client(Serverにアクセスするアプリ) • coherence.jar のAPIを叩くJavaアプリを書くだけ • データは key-value pairの ObjectをMap に格納。 あれ?単なるKVSじ ゃ・・・・ 10
  • 11. Coherenceで組むクラスターはこんな感じ クライアントもクラスター の一部なんだね Coherence Client Coherence API JVM Coherence Cluster Coherence Coherence Coherence Server Server Server JVM JVM JVM 11
  • 12. Coherenceの内部構造概略 Coherence 実際のデータは、backing Client map と呼ばれるマップに Coherence API 格納される。 Coherenceの内部は複数のサ ービス(スレッド)で構 成される。 cache service Cache Cache Cache Service Thread Service Thread Service Thread storage storage storage backing map backing map backing map cluster service Cluster Cluster Cluster Service Thread Service Thread Service Thread Coherence Coherence Coherence Server Server Server 12
  • 13. Cache Serviceの種類 Distributed Cache Service • Distributed Cache Service (分散キャッシュ) – データはハッシュ計算により、どのパーティションに格納される か決まる。パーティションはノード全体に分散。 どのデータにも1hop Coherence でアクセス可能 Client Coherence API Distributed Distributed Cache Distributed Cache Distributed Cache Cache Service Service Thread Service Thread Service Thread storage storage storage backing map backing map backing map P1 P4 P2 P5 P3 P6 Coherence Coherence Coherence Server Server Server 13
  • 14. Cache Serviceの種類 Distributed Cache Service • Distributed Cache Service (分散キャッシュ) – バックアップを保持する設定も可能。 – バックアップは自動的に”異なるサーバー”に配置される。 これでSPOFがなくな ったね! Distributed service thread service thread service thread Cache Service storage storage storage backing map backing map backing map P1 P4 P2 P5 P3 P6 backup map backup map backup map P3 P6 P1 P4 P2 P5 Coherence Coherence Coherence Server Server Server 14
  • 15. Cache Serviceの種類 Replicated Cache Service • Replicated Cache Service (レプリケーションキャッシュ) – 全ノードに完全に同じデータを持つ。 Replicated service thread service thread service thread Cache Service storage storage storage backing map backing map backing map 同じデータ 同じデータ 同じデータ Coherence Coherence Coherence Server Server Server 15
  • 16. Backing map の種類 • 実際のデータが格納されるbacking mapにも様々ある – Local Cache heapを使うLocal Cacheを • ローカルJVMのヒープにデータを格納 ベースに、他と組み合 わせることが多いね – Read Write • 参照更新に連動して、DBなどの永続化層と連携する – Overflow • frontに入りきらなくなった分を、backに移動させる – 他にもたくさんあって、いろいろ組み合わせられる! backing map backing map backing map (Local Cache) (Read Write) (Overflow ) front (Local Cache) front (Local Cache) Local Cache Cache Store back(nio) RDBMS file 16
  • 17. 組み合わせ例 Distribute Cache Service + Read Write Backing map • Distributed Cache Service にてキャッシュを分散。 Read Write Backing map を使い、キャッシュとDBの連 携をする例 Distributed service thread service thread service thread Cache Service storage storage storage backing map backing map backing map (Read Write) (Read Write) (Read Write) front (Local) front (Local) front (Local) Cache Store Cache Store Cache Store backup map backup map backup map Coherence Coherence Coherence Server Server Server databaseへ接続 17
  • 18. ようは何なの? 便利でカスタマイズしまくれる分散KVS。 分散処理や可用性担保などを行うめんどい部分は、 全てCoherence Serverがよしなにやってくれる。 開発者は、Coherence APIを使って処理を書くだけ。 デフォルトの挙動が気に入らなければ、多くの機能 で独自にカスタマイズ可能。 Distributed Cache Serviceならば、1つのデータは 1つのノード(Partition)に格納するため、ノー ド全体での一貫性は崩れない。言い換えると、一 貫性を保って更新が必要なデータは、同一ノード (Partition)に割り当てることで、アトミックな操 作が可能。 18
  • 19. DEMO 19
  • 21. ネットワーク転送は速いけれど・・・ • ネットワーク通信がどんどん高速化している – Ethernetでも10Gbps – 単純なブロック転送であれば、ディスクI/Oよりはるかに高速 • 速いがされどI/O、つまるときはつまる – ボトルネックはI/Oに始まることが多い。 – 速いI/Oも積もれば山となる 基本は2つ 転送量を減らす 転送数を減らす 21
  • 22. Coherence が使う通信プロトコル TCMP - Tangosol Cluster Management Protocol • Coherence独自のアプリケーションプロトコル – 用途に応じてUDPユニキャスト/UDPマルチキャスト/TCPなど使う TCMP over TCP Coherence Client マルチキャスト範囲 外からの外接 Coherence TCMP over UDP ユニキャスト Client データの転送 Proxy Server Coherence Coherence Server Server Coherence Server TCMP over UDP マルチキャスト クラスター管理 22
  • 23. 転送オーバーヘッドの削減 UDPベースの独自プロトコル • データのやり取りは基本的にTCMP over UDPを使う。 – TCMPレイヤーで独自のACK機能やフロー制御を行う。 – どんな感じかというと、高品質なネットワークを前提にUDPの乱 れ打ち。 基本的に高品質なスイッチとネットワーク インフラ期待してるんで、パケロスなんて するわけ無いでしょってこと。 10GEtherかInfiniBandがほしいなぁ・・・ 23
  • 24. 転送量の削減&転送オーバーヘッドの削減 POF : Coherence独自のシリアライザ― • ネットワーク経由のデータ転送にはシリアライズ処理 が必要。 • Java標準のシリアライザーが正直いけてない MessagePack 試してみたいなぁ • POF(Portable Format Object)という独自の シリアライザ―を提供。 – また、シリアライザ―は自分で指定もできるので、自作(?)の シリアライザ―を指定することも可能。 Coherence Coherence Client Server POF Object Object Object 24
  • 25. 転送量の削減&転送オーバーヘッドの削減 POFによる部分更新 • POFはオブジェクトの部分的なデシリアライズが可能 Object全体を転送する のは無駄 Coherence put Coherence Client Server POF Object Object Object 変更点(フィールド単位)だ け送ること可能 Coherence Coherence Client pof update Server Object Object 25
  • 26. 転送量&転送回数の削減 Query • データアクアスに put/get ばかりじゃ、毎回クライア ントにデータが飛んでくるのでI/O無駄。 • 処理手順を投げてサーバー側に処理させる データのある所で処理 Coherence Client させれば良いじゃん Coherence API Distributed Service Thread Service Thread Service Thread Cache Service backing map backing map backing map P1 P4 P2 P5 P3 P6 Coherence Coherence Coherence Server Server Server 26
  • 28. ネットワーク関連の障害 • CAPで言うところの「一貫性」+「可用性」を優先する – そのためネットワークの分断耐性が低い • ネットワーク通信ができなくなったノードを、速やかに クラスターから離脱させる仕組みが必要。 • クラスター全体でNetwork Heartbeat もうつが、それだ けでは即時性に欠ける。 ネットワーク障害には正面からぶち 当たっても勝てないので、諦めて データを守るのを優先します。 28
  • 29. プロセスダウンの検知をするには TCP Ring • プロセス同士は互いにTCPコネクションをリング上に張 っている。 • プロセスがダウンした場合、OSがTCPコネクション(ソ ケット)を閉じてくれるので、ノードダウンに気がつく 事ができる。 OS ん?隣のノードが落ち Coherence たっぽいぞ。 Client OS OS Coherence Coherence Server OS Server Coherence Server 29
  • 30. サーバー(OS)のダウンを検知するには IP Monitor • ハードウェア障害や、OSのカーネルパニックなど、OSが 突然死した場合、TCPコネクションは適切に処理されな いため、通信相手はそれに気がつくことができない。 • ランダムにpingを送ることで、OSダウンを検知。 ん?向かいのノードの OS ping応答が無いな Coherence Client OS OS ICMP Echo Coherence Coherence Server OS Server Coherence Server 30
  • 31. 一番避けたいクラスターの分断 Split Brain 正常時 network network switch switch Server Server Server Server Server Server cluster1 障害発生時 network network switch switch Server Server Server Server Server Server cluster1 cluster2 ネットワークが切れたのか、本当 お互い、相手がダウンしたと思い に相手のノード3台がダウンしたの 込んでいるので、各々クラスター か区別つかない。 を再構成する。 31
  • 32. Split Brainの何が問題? • 分断したクラスターが各々処理を始めてしまうため、全 体での一貫性が崩れてしまう。 – データ破損 – 結果不正 • 発生の検知には、少なくとももう1系統の情報共有手段 が必要 network network switch switch Server Server Server Server Server Server cluster1 cluster2 何かしらの情報共有手 段。 32
  • 33. Coherence以外のクラスター製品はどうしてる? Oracle RACの例 • Network Heartbeatの他に、Disk Heartbeatを使ってい るものもある。 network network switch switch Server Server Server Server Server Server cluster1 cluster2 投票の結果、cluster2は再起動 することにします。 共有ディスクを使って Disk Heartbeatを行なってい るので、ネットワーク分断が 起こっても検知可能。 storage server 33
  • 34. Coherenceではどうしてる? • 標準では特にSprit Brainを検知する機能を持っていな い – デフォルトのままで使うと Split Brain 状態になる。 – カスタムで色々拡張できるので、ネットワークを2系統使い(例 えば運用LAN)独自の検知機能を付与することはできる。 3台でクラスター 3台でクラスター 再構成しよーっ network network 再構成しよーっと switch switch と Server Server Server Server Server Server cluster1 cluster2 例えば運用LANがあるなら、そちらから ノードの数数えて、不一致なら強制停止 とかスクリプト書けるよね。 34
  • 35. そもそもSplit Brainを起こさせたら負け • 通常はネットワークは「冗長」構成にするもの。 • ネットワーク分断が起こるのは一時的なものがほとんど – スイッチの H/A切り替え SPOFとかまじありえ – スパニングツリーの再計算 ないよねー – etc... • 数秒の通信断だけ耐えられればよいはず 切り替えるから ちょっと待って あれ?繋が ね。 らないぞ? network network network switch network switch switch switch Server Server Server Server Server Server cluster1 cluster2 35
  • 36. Quorumによる制御 Cluster Quorum Policy • 例えば、HA切り替えに伴う1分程度の通信断でもクラス ターを維持させたい。 • Quorum という考え方。 – クラスターの稼働に必要なノード数を指定(以下の図では4) 切り替えるから ちょっと待って 動けな い・・・ ね。 network network network switch network switch switch switch Server Server Server Server Server Server cluster1 cluster2 4台ないと離脱やノード排除も含むク ラスター活動を行えないので、一時的 な通信断でsplit brainが発生することを 防ぐことができる。 36
  • 38. CoherenceとRACを組み合わせた構成例 「某」製品の組み合わせ Service LAN switch AP Server AP Server AP Server AP Server AP Layer (Coherence) (Coherence) (Coherence) (Coherence) Coherence Cluster switch Cache Server Cache Server Cache Server Cache Server Cache Layer (Coherence) (Coherence) (Coherence) (Coherence) switch DB Server DB Server DB Server DB Server DB Layer (RAC) (RAC) (RAC) (RAC) DB Cluster switch Storage Server 38