07.計算Nova→1.nova架構→1.架構概覽→5.Database和Message Queue

  1. Database:Nova 會有一些數據須要存放到數據庫中,通常使用 MySQL。數據庫安裝在控制節點上。Nova 使用命名爲 「nova」 的數據庫。不知道爲何個人devstack裏沒有nova數據庫???
    1.  1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      root@controller:~# su - stack
      stack@controller:~$ mysql
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 172
      Server version: 5.7.26-0ubuntu0.16.04.1 (Ubuntu)
      
      Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
      
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      mysql> SHOW DATABASES;
      +--------------------+
      | Database           |
      +--------------------+
      | information_schema |
      | cinder             |
      | glance             |
      | keystone           |
      | mysql              |
      | neutron            |
      | nova_api           |
      | nova_cell0         |
      | nova_cell1         |
      | performance_schema |
      | sys                |
      +--------------------+
      11 rows in set (0.03 sec)
  2. Message Queue:Nova 包含衆多的子服務,這些子服務之間須要相互協調和通訊。爲解耦各個子服務,Nova 經過 Message Queue 做爲子服務的信息中轉站。因此在架構圖上咱們看到了子服務之間沒有直接的連線,它們都經過 Message Queue 聯繫。Advanced Message Queuing Protocol

openstack通用設計思路:
  1. Messaging 服務
    1. 爲何不讓 API 直接調用Scheduler,或是讓Scheuler 直接調用 Compute,而是非要經過 Messaging 進行中轉?
    2. 程序之間的調用一般分兩種:同步調用和異步調用。
      1. API 直接調用 Scheduler 的接口就是同步調用。
        1. 其特色是 API 發出請求後須要一直等待,直到 Scheduler 完成對 Compute 的調度,將結果返回給 API 後 API 纔可以繼續作後面的工做。
      2. API 經過 Messaging 間接調用 Scheduler 就是異步調用。
        1. 其特色是 API 發出請求後不須要等待,直接返回,繼續作後面的工做。
    3. 採用異步調用能夠解耦各個自服務,即子服務不須要知道其餘服務在哪裏運行, 只須要發送消息給 Messaging 就能完成調用。而且提升性能,由於異步調用使得調用者無須等待結果返回。 這樣能夠繼續執行更多的工做, 提升系統總的吞吐量。
  2. Database:OpenStack 各組件都須要維護本身的狀態信息。好比 Nova 中有虛機的規格、狀態,這些信息都是在數據庫中維護的。每一個 OpenStack 組件在 MySQL 中有本身的數據庫。
相關文章
相關標籤/搜索