1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xycm-zkClient4Swift

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Простой клиент Apache Zookeeper для языка программирования Swift

zkClient4Swift — это простой клиент Zookeeper, написанный на Swift2. Поэтому, требуется Xcode 7 для компиляции.

Swift уже открыт для использования, и поддерживает работу на Linux. В будущем Swift может использоваться не только для создания приложений iOS, но также для других back-end приложений и даже серверных приложений. А Zookeeper является необходимым фундаментом в распределённых системах обслуживания, такими как Codis и Kafka. Поэтому требуется соединение с Zookeeper, а после того как я просмотрел интернет, пока нет доступного клиента Zookeeper на Swift. Поэтому я реализовал свой собственный, хотя он ещё может быть незавершённым.

Возможности

  • Соединение с сервером Zookeeper - OK
  • Базовые операции над узлами - OK
  • Наблюдение за изменениями узлов - OK
  • Автоматическое восстановление соединения при отключении и повторная попытка при кратковременной потери связи - автоматическое восстановление соединения - OK, повторная попытка при кратковременной потере связи - TODO
  • Создание framework для Mac версии локального клиента Zookeeper. Сейчас все используют ZooInspector.jar - TODO

Проблемы

  • На macOS требуется установить время истечения сессии Zookeeper более чем 20 секунд. Потому что поток сердцебиения иногда замедляется примерно на 11 секунд... Оказалось, что проблема связана с sleep(1), причины пока не найдены. Однако на iOS такой проблемы не наблюдается...# Блог: Персональный блог SunXiang

Использование API

Создание клиента

//Создание zkClient для подключения к 127.0.0.1 порт  Yöntem: 2181
//TODO не поддерживается кластер Zookeeper
let zkClient = ZkClient(serverstring: "127.0.0.1:2181")

Подключение к Zookeeper

zkClient.connect()

Получение дочерних узлов

let children = zkClient.getChildren("/hello")
for child in  children! {
    print("дочерний узел:\(child)")
}

Проверка существования узла

print("проверка наличия узла:\(zkClient.exists("/aaaaaaa"))")

Удаление узла

print("удаление успешно:\(zkClient.delete("/Hello/delete"))")

Создание узла

//Создание узла с режимом CreateMode.PERSISTENT
try zkClient.create("/Hello/create2", model: CreateMode.PERSISTENT)

//Создание узла с режимом CreateMode.PERSISTENT и созданием родителей
try zkClient.create("/Hello2/create2",model: CreateMode.PERSISTENT,createParents:true)

//Создание узла с режимом CreateMode.PERSISTENT и данными
try zkClient.create("/Hello/create", data: "Попробуйте использовать кириллицу", model: CreateMode.PERSISTENT)

Чтение данных узла

//по умолчанию тип является String
zkClient.readData("/Hello/create")

Запись данных в узел

//запись строки в узел
try zkClient.writeData("/Hello/create2", data: "试一试写入数据")

Подписка на изменения дочерних узлов

zkClient.subscribeChildChanges("/Hello", listenerName: "HelloChildChanges") { (path, children) -> Void in
            print("Путь:\(path) дочерние узлы изменились:")
            if let cc = children {
                for c in cc {
                    print("\(c)")
                }
            }
        }

Подписка на изменения данных узла```swift

zkClient.subscribeDataChanges("/Hello/Byte", listenerName: "ByteNodeDataChanges") { (path, data) -> Void in print("Путь:(path) данные узла изменились, новые данные:(data)") }


### Подписка на удаление узла

```swift
zkClient.subscribeDataDelete("/Hello/Byte", listenerName: "ByteNodeDelete") { (path) -> Void in
            print("Узел по пути:\(path) был удален")
        }

Отмена подписки на изменения дочерних узлов

zkClient.unsubscribeChildChanges("/Hello", listenerName: "HelloChildChanges")

Отмена подписки на изменения данных узла

zkClient.unsubscribeDataChanges("/Hello", listenerName: "HelloChildChanges")

Отмена подписки на удаление узла

zkClient.unsubscribeDataDelete("/Hello/Byte", listenerName: "ByteNodeDelete")

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Свифт-написанный zookeeper-клиент. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xycm-zkClient4Swift.git
git@api.gitlife.ru:oschina-mirror/xycm-zkClient4Swift.git
oschina-mirror
xycm-zkClient4Swift
xycm-zkClient4Swift
master