Git Product home page Git Product logo

configurationserver's Introduction

Конфигурационный сервер

Общее описание

Конфигурационный сервер - приложение для обмена информацией между компонентами распределенной системы. Позволяет считывать и изменять информацию о текущих настройках и состоянии каждого из компонентов. Включает:

  • серверное приложение
  • протокол обмена данными
  • тестовое клиентское приложение

Требования

Модель доступа к данным:

  • доступ к данным представлен в виде дерева
  • каждый элемент дерева имеет свое строковое имя
  • имя уникально в рамках одного уровня иерархии
  • имя не может содержать символ /
  • имя не может быть пустым, кроме корня всего дерева
  • каждый элемент может иметь дочерние элементы
  • элементы адресуются ключом
  • ключ элементов верхнего уровня дерева представлен в виде /node_name
  • ключ вложенных элементов состоит из имен всех элементов от корневого до конечного: /parent/child/param1
  • каждый элемент может хранить значение в виде строки
  • значение всегда присутствует. При установке значения null значение устанавливается в “”

Поддерживаемые методы

Все операции атомарны: либо выполняются успешно, либо данные остаются неизменными + возвращается ошибка

create(string key) создать элемент с ключом key и пустым значением

remove(string key) удалить элемент с ключом key если указанный элемент отсутствует - выбрасывается исключение при удалении элемента все его дочерние элементы также удаляются

bool exists(string key) проверить, существует ли элемент с ключом key

string get(string key) считать значение по ключу key если указанный элемент отсутствует - выбрасывается исключение

set(string key, string value) установить значение элемента по ключу key в value если указанный элемент отсутствует - выбрасывается исключение

list children(string key) получить список имен дочерних элементов с ключом key, упорядоченных по имени ключа если указанный элемент отсутствует - выбрасывается исключение

Технические параметры

  • работа в высококонкурентной среде
  • многопоточное обслуживание запросов
  • время отклика одиночного запроса (< 5 мс)
  • число одновременных подключений: (до 500)
  • сетевой протокол (Thrift)
  • язык реализации: (java)
  • целевая платформа: (любые поддерживаемые JVM)
  • среда сборки (maven)
  • журналирование
  • конфигурируемый пул соединений/потоков
  • покрытие тестами:
    • юнит тесты
    • нагрузочные тесты

Дополнительные требования:

  • сохранение состояния между запусками (JSON)
  • временный элемент: исчезает автоматически, если значение было установлено более N мс назад (Timer?)
  • упорядоченность: все запросы от одного клиента применяются в том порядке, в каком они были вызваны (TimeStamp)
  • интерфейс просмотра данных (REST, встроенный Web-сервер)
  • оповещения при изменении элемента: Thrift + клиентская библиотека (шаблон Observer)
  • работа в кластере + репликация данных между экземплярами

configurationserver's People

Contributors

osake avatar pkaramishev avatar

Watchers

 avatar

Forkers

osake

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.