[Santian Engine] Базовая архитектура Huawei Santian Engine, архитектура исходного кода, многопоточные сервисы, управление узлами данных и управление метаданными между несколькими узлами

Структура исходного кода движка Cantian

Содержание столбца :

  • Архитектура ядра Santian Engine
    . В этой статье мы поговорим об архитектуре ядра Santian Engine, а также о том, как добиться многократного чтения и многократной записи многомашинных узлов базы данных, отличии от традиционных активных и резервных MPP, анализа технических трудностей, синхронизация метаданных данных, мульти-мастер Поддержка восстановления после сбоев в случае узлов.

  • В этой колонке в основном рассказывается, как разработать рукописную базу данных toadb
    с нуля, этапы разработки, принципы, задействованные в процессе разработки, возникающие проблемы и т. д., чтобы каждый мог идти в ногу и развиваться вместе, чтобы каждый, кому это нужно, мог стать участником.
    Этот столбец будет регулярно обновляться, и соответствующий код также будет регулярно обновляться. Код на каждом этапе будет помечен тегами для облегчения обучения на каждом этапе.

Вклад открытого :

Персональная домашняя страница : Моя домашняя страница
Сообщество менеджеров : База данных с открытым исходным кодом
Девиз: Когда небо сильное, джентльмен стремится стремиться к самосовершенствованию; когда местность хорошая, джентльмен несет в себе великие добродетели.

Предисловие

Разработка отечественных баз данных идет полным ходом, и хорошие новости звучат на различных конференциях каждый год.В дополнение к различным технологическим разработкам самой базы данных, в этом году Huawei выпустила Shentian Engine, который является базовой формой базы данных. то есть все базы данных.База данных может быть построена на основе Santian Engine для формирования системы баз данных с распределенной архитектурой с несколькими хозяевами, поэтому ее называют движком.

В этой колонке будет подробно рассказано о внутренней архитектуре Santian Engine и о том, как адаптироваться к Santian Engine.

Обзор

Основной код движка cantian в основном имеет открытый исходный код, что побуждает энтузиастов с нетерпением его попробовать.Сегодня я поделюсь с вами структурой исходного кода движка cantian.

Адрес исходного кода

адрес проживания

Структура каталогов исходного кода

Исходный код в основном находится в каталоге pkg/src:

[senllang@hatch src]$ ll
total 44
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 cluster
-rw-r--r--.  1 senllang develops  792 Dec  9 14:03 CMakeLists.txt
drwxr-xr-x.  4 senllang develops   94 Dec  9 14:03 cmd
drwxr-xr-x.  4 senllang develops   56 Dec  9 14:03 cms
drwxr-xr-x.  3 senllang develops 8192 Dec  9 14:03 common
drwxr-xr-x.  3 senllang develops   39 Dec  9 14:03 driver
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 gstbox
drwxr-xr-x. 18 senllang develops 4096 Dec  9 14:03 kernel
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 mec
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 protocol
drwxr-xr-x.  2 senllang develops   66 Dec  9 14:03 rc
drwxr-xr-x.  3 senllang develops 4096 Dec  9 14:03 server
drwxr-xr-x.  4 senllang develops 4096 Dec  9 14:03 tse
drwxr-xr-x.  2 senllang develops   60 Dec  9 14:03 upgrade_check
drwxr-xr-x.  4 senllang develops   52 Dec  9 14:03 utils
drwxr-xr-x.  2 senllang develops   72 Dec  9 14:03 version

Как показано выше, вы можете увидеть каталог, названный в честь модуля.

Знакомство с основными модулями

Существует несколько основных модулей:

CantianLib

Он может существовать как отдельный узел, например узел данных или узел координации. Обычно используется в качестве узла данных, это хранилище данных управления. Он выполняет только функцию управления и координации. Узел CMS отвечает за реализацию данных и оборудования.

cantianlib — это мост между ядром базы данных и узлом CMS. Он обрабатывает запросы данных в различных сценариях выполнения SQL и записывает журналы транзакций.

Каталог исходного кода

Код cantianLib находится в
./pkg/src/server/.

структура системы

Вставьте сюда описание изображения

Он также реализован с многопоточной архитектурой.Его интерфейс представляет собой агент БД, который прослушивает от него сетевые запросы, такие как вход в базу данных, выполнение DDL, DML и т. д., и преобразует их в запросы данных. , а затем отправляет их в CMS. В основном он включает в себя несколько услуг:

  • Служба ядра в основном используется для обработки данных и запросов на блокировку и отвечает за управление буфером, управление метаданными каталога и т. д.;
  • Фоновая служба БД в основном обрабатывает запросы от агента БД и преобразует сценарии SQL в запросы данных; путем привязки сеансов к службам потоков она может обрабатывать одновременный доступ к данным;

Модуль CMS

CMS — это базовая служба, которая в основном планирует и управляет распределенными ресурсами, распределенными блокировками и устройствами хранения. Все это представляет собой многопоточную архитектуру, которая взаимодействует с внешним интерфейсом через сеть, отвечает на запросы ресурсов и получает их из файловой системы хранилища.

Каталог исходного кода

Исходный код модуля CMS находится в
./pkg/src/cms/cms.

структура системы

Структура его кода показана на рисунке ниже.
Вставьте сюда описание изображения

Модуль состоит из трех основных этапов:

  • Инициализация, включая загрузку и инициализацию конфигурации, инициализацию каждой службы и запуск потоков службы, устройств и сетей;
  • Фаза выполнения; в основном обрабатывает события из сообщений и процессов и отвечает на сообщения; здесь основными требованиями являются выделение различных ресурсов и блокировок;
  • Выход, при выходе cms очистить и загрузить данные;

Подведем итог

Вообще говоря, двигатель Santian разделен на три основные части.

  • Первый - это агент, который сочетается с вычислениями в базе данных. Здесь нет открытого исходного кода. Он в основном применяется к узлу данных для выпуска данных, необходимых во время вычислений в базе данных;
  • Второй — cantianLib, который является узлом данных. Эта часть поддерживает данные, связанные с базой данных, такие как кэш данных, метаданные базы данных и т. д., синхронизируется между несколькими узлами, а также имеет некоторые службы, которые должны координироваться несколькими узлами, например в качестве резервной копии, контрольной точки, отправки транзакции и т. д.;
  • Третья часть — CMS, которая является частью физического хранилища. Она распределяет строки данных по устройствам хранения, управляет распределением данных и может читать и записывать данные с физических устройств при запросе данных;

Разумеется, соответствующее физическое устройство хранения также считается четвертой частью, которая может соответствовать NFS или DBstor.Открытого исходного кода для оптимизации этой части не существует.

конец

Большое спасибо за вашу поддержку. Не забывайте оставлять свои ценные комментарии во время просмотра. Если вы считаете, что это достойно поощрения, пожалуйста, поставьте лайк и сохраните его. Я буду работать еще усерднее!

Электронная почта автора: [email protected].
Если есть какие-либо ошибки или упущения, пожалуйста, укажите на них и поучитесь друг у друга.

рекомендация

отblog.csdn.net/senllang/article/details/135075873