<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NewSQL || 微服務(wù)架構(gòu)的必備選擇

          共 7705字,需瀏覽 16分鐘

           ·

          2021-08-30 11:29

          分布式架構(gòu)示意

          面向互聯(lián)網(wǎng)的三高系統(tǒng)(高性能、高并發(fā)、高可用),分布式架構(gòu)是技術(shù)迭代的必然選擇。

          如上圖從底層操作系統(tǒng)到最終的應(yīng)用層開發(fā)都提供了相關(guān)的解決方案:

          • SpringCloud[1]Service Mesh[2] 等微服務(wù)架構(gòu)解決應(yīng)用層擴(kuò)展、部署問題

          • Redis Cluster 和 Codis[3] 等方案解決了緩存的分布式架構(gòu)問題

          • Kubernetes 完成了操作系統(tǒng)的分布式進(jìn)化, 更加有效的提高了資源的效率。

          數(shù)據(jù)庫領(lǐng)域自然也不會例外,將侵入應(yīng)用層的數(shù)據(jù)治理(分庫分表高可用)方案還原至數(shù)據(jù)庫層次,分布式數(shù)據(jù)庫(NewSQL)的發(fā)展一定是不可阻擋。

          GreatSQL 是什么

          GreatSQL[4] 概述 是一款原生分布式關(guān)系型數(shù)據(jù)庫軟件,具有動態(tài)擴(kuò)展、數(shù)據(jù)強(qiáng)一致、集群高可用等特性。采用 shared-nothing 架構(gòu),基于數(shù)據(jù)冗余與副本管理確保數(shù)據(jù)庫穩(wěn)定可靠,基于數(shù)據(jù) sharding 與 mpp 技術(shù)實(shí)現(xiàn)高性能,并具備動態(tài)擴(kuò)展數(shù)據(jù)節(jié)點(diǎn)能力,充分滿足業(yè)務(wù)需要。目前已廣泛應(yīng)用于金融、運(yùn)營商、能源、政府、互聯(lián)網(wǎng)等行業(yè)核心系統(tǒng),全面兼容國產(chǎn)操作系統(tǒng)、芯片等國產(chǎn)軟硬件生態(tài)。

          GreatSQL 可以作為 MySQL 或 Percona Server 的可選替代方案,用于線上生產(chǎn)環(huán)境;完全免費(fèi)并兼容 MySQL 或 Percona Server。

          GreatSQL VS MySQL 社區(qū)版

          特性GreatSQLMySQL 社區(qū)版
          地理標(biāo)簽??
          全新流控算法??
          InnoDB 并行查詢優(yōu)化??
          InnoDB 事務(wù)鎖優(yōu)化??
          網(wǎng)絡(luò)分區(qū)異常應(yīng)對????????????
          大事務(wù)處理????????????
          節(jié)點(diǎn)異常退出處理????????????
          一致性讀性能????????????
          提升 MGR 吞吐量????????????
          多寫模式下可能丟數(shù)據(jù)???????????
          單主模式下切主丟數(shù)據(jù)???????????
          MGR 集群啟動效率???????????
          集群節(jié)點(diǎn)磁盤滿處理???????????
          TCP self-connect 問題???????????

          構(gòu)建 MGR 集群

          docker-compose 構(gòu)建

          • 筆者這里使用 docker-compose 構(gòu)建一個三個節(jié)點(diǎn)的 MGR 集群 用于測試

          • 相較于官方的部署增加了 network 配置、password 可以直接使用。

          version: '3'

          services:
            mgr1:
              image: greatsql/greatsql
              container_name: mgr1
              hostname: mgr1
              restart: unless-stopped
              environment:
                TZ: Asia/Shanghai
                MYSQL_ROOT_PASSWORD: root
                MYSQL_INIT_MGR: 1
                MYSQL_MGR_LOCAL: '172.27.0.2:33061'
                MYSQL_MGR_SEEDS: '172.27.0.2:33061,172.27.0.3:33061,172.27.0.4:33061'
              extra_hosts:
                - "mgr1:172.27.0.2"
                - "mgr2:172.27.0.3"
                - "mgr3:172.27.0.4"
              ports:
                - 3306:3306
              networks:
                  mgr-net:
                      ipv4_address: 172.27.0.2
            mgr2:
              image: greatsql/greatsql
              container_name: mgr2
              hostname: mgr2
              restart: unless-stopped
              depends_on:
                - "mgr1"
              environment:
                TZ: Asia/Shanghai
                MYSQL_ROOT_PASSWORD: root
                MYSQL_INIT_MGR: 1
                MYSQL_MGR_LOCAL: '172.27.0.3:33061'
                MYSQL_MGR_SEEDS: '172.27.0.2:33061,172.27.0.3:33061,172.27.0.4:33061'
              extra_hosts:
                - "mgr1:172.27.0.2"
                - "mgr2:172.27.0.3"
                - "mgr3:172.27.0.4"
              networks:
                  mgr-net:
                      ipv4_address: 172.27.0.3
            mgr3:
              image: greatsql/greatsql
              container_name: mgr3
              hostname: mgr3
              restart: unless-stopped
              depends_on:
                - "mgr2"
              environment:
                TZ: Asia/Shanghai
                MYSQL_ROOT_PASSWORD: root
                MYSQL_INIT_MGR: 1
                MYSQL_MGR_LOCAL: '172.27.0.4:33061'
                MYSQL_MGR_SEEDS: '172.27.0.2:33061,172.27.0.3:33061,172.27.0.4:33061'
              extra_hosts:
                - "mgr1:172.27.0.2"
                - "mgr2:172.27.0.3"
                - "mgr3:172.27.0.4"
              networks:
                  mgr-net:
                      ipv4_address: 172.27.0.4

          networks:
             mgr-net:
                ipam:
                   config:
                   - subnet: 172.27.0.0/16

          啟動 MGR 服務(wù)

          • 進(jìn)入被選為 PRIMARY 節(jié)點(diǎn)的容器 mgr1,啟動 MGR 服務(wù):
          [root@greatsql]# docker exec -it mgr1 bash
          [root@mgr1 /]# mysql
          ...
          [root@GreatSQL][(none)]> set global group_replication_bootstrap_group=ON;
          [root@GreatSQL][(none)]> start group_replication;
          • 開啟另外兩個節(jié)點(diǎn)的啟動 MGR 服務(wù)
          [root@greatsql]# docker exec -it mgr2 bash
          [root@mgr2 /]# mysql
          ...
          [root@GreatSQL][(none)]> start group_replication;
          Query OK, 0 rows affected (2.76 sec)

          查看 MGR 狀態(tài)

          >select * from performance_schema.replication_group_members;
          +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
          | CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
          +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
          | group_replication_applier | 07455a01-0898-11ec-ac58-0242ac1b0002 | mgr1        |        3306 | ONLINE       | PRIMARY     | 8.0.25         |
          | group_replication_applier | 124a583d-0898-11ec-bbb7-0242ac1b0003 | mgr2        |        3306 | ONLINE       | SECONDARY   | 8.0.25         |
          | group_replication_applier | 1bf7df25-0898-11ec-9dd5-0242ac1b0004 | mgr3        |        3306 | ONLINE       | SECONDARY   | 8.0.25         |
          +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
          3 rows in set (0.01 sec)

          PIG 微服務(wù)接入

          • 只需要修改原有 pig-mysql 的 hosts 映射關(guān)系即可完成接入到 greatSQL

          • 目前經(jīng)過筆者測試 最新的 PIG master(3.3) 完全兼容 8.0.25-15 GreatSQL

          總結(jié)

          目前 PIG[5] 微服務(wù)平臺經(jīng)過兼容性測試企業(yè)級分布式數(shù)據(jù)庫支持如下:

          • GreatSQL 8.0.25-15

          • TIDB 4.x

          • OceanBase 3.1

          參考資料

          [1]

          SpringCloud: https://spring.io/projects/spring-cloud

          [2]

          Service Mesh: https://istio.io/latest/about/service-mesh

          [3]

          Codis: https://github.com/CodisLabs/codis

          [4]

          GreatSQL 背景介紹來源: https://www.greatdb.com

          [5]

          PIG: https://pig4cloud.com


          瀏覽 37
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天草天天干天天射 | 午夜成人中文字幕 | 黄色成人网站在线免费观看 | 美女被艹视频网站 | 中文字幕1页 |