
Титан Единый Сервер

$ wget http://s3.thinkaurelius.com/downloads/titan/titan-cassandra-0.3.0.zip $ unzip titan-cassandra-0.3.0.zip $ cd titan-cassandra-0.3.0 $ sudo bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties 13/03/27 12:40:32 INFO service.CassandraDaemon: JVM vendor/version: Java HotSpot(TM) 64-Bit Server VM/1.7.0_12-ea 13/03/27 12:40:32 INFO service.CassandraDaemon: Heap size: 40566784/477233152 13/03/27 12:40:32 INFO config.DatabaseDescriptor: Loading settings from file:/Users/marko/software/aurelius/titan/config/cassandra.yaml 13/03/27 12:40:32 INFO config.DatabaseDescriptor: Global memtable threshold is enabled at 151MB 13/03/27 12:40:32 INFO service.CacheService: Initializing key cache with capacity of 2 MBs. 13/03/27 12:40:35 INFO server.RexProRexsterServer: RexPro serving on port: [8184] 13/03/27 12:40:35 INFO server.HttpRexsterServer: Rexster Server running on: [http://localhost:8182] 13/03/27 12:40:35 INFO server.ShutdownManager: Bound shutdown socket to /127.0.0.1:8183. Starting listener thread for shutdown requests. ...
Users without wget can use curl -O or download from the Titan download page.
Приведенная выше последовательность из 4 команд оболочки загружает и запускает сервер Titan на localhost. Сервер Titan встраивает Cassandra и (облегченную версию) Rexster в одну и ту же JVM . Titan Server предоставляет разработчикам следующие не зависящие от языка конечные точки для взаимодействия с графом:
- RESTful конечных точек доступна на
http://localhost:8182/graphs.
- RexPro двоичный протокол оконечным доступный порт
8184.
- Произвольно сложные операции чтения / записи Gremlin могут выполняться через MessagePack .
Сервер Titan настраивается через два основных файла: titan-server-rexster.xml(показано ниже) и cassandra.yaml(обсуждается в следующем разделе). Эти файлы находятся в config/каталоге titan-cassandra-x.y.zдистрибутива.
<rexster>
<http>
<server-port>8182</server-port>
<server-host>0.0.0.0</server-host>
<base-uri>http://localhost</base-uri>
<character-set>UTF-8</character-set>
<enable-jmx>false</enable-jmx>
<max-post-size>2097152</max-post-size>
<max-header-size>8192</max-header-size>
<upload-timeout-millis>30000</upload-timeout-millis>
<thread-pool>
<worker>
<core-size>8</core-size>
<max-size>8</max-size>
</worker>
<kernal>
<core-size>4</core-size>
<max-size>4</max-size>
</kernal>
</thread-pool>
<io-strategy>leader-follower</io-strategy>
</http>
<rexpro>
<server-port>8184</server-port>
<server-host>0.0.0.0</server-host>
<session-max-idle>1790000</session-max-idle>
<session-check-interval>3000000</session-check-interval>
<connection-max-idle>180000</connection-max-idle>
<connection-check-interval>3000000</connection-check-interval>
<enable-jmx>false</enable-jmx>
<thread-pool>
<worker>
<core-size>8</core-size>
<max-size>8</max-size>
</worker>
<kernal>
<core-size>4</core-size>
<max-size>4</max-size>
</kernal>
</thread-pool>
<io-strategy>leader-follower</io-strategy>
</rexpro>
<security>
<authentication>
<type>none</type>
</authentication>
</security>
<shutdown-port>8183</shutdown-port>
<shutdown-host>127.0.0.1</shutdown-host>
</rexster>
ПРИМЕЧАНИЕ . Наряду с вышеуказанными конечными точками Titan Server также предоставляет собственный интерфейс сериализации JVM, который может использоваться языками JVM. Этот интерфейс, например, является средством взаимодействия Faunus / Hadoop с Titan Server для глобальной аналитики графов. Для получения дополнительной информации об этой конечной точке см. Использование Cassandra .
Титан Высоко Доступен
Генеалогическое приложение показало перспективность в качестве однопользовательской системы для изучения генетической истории римского народа и богов. Благодаря положительному ответу Август и Тиберий решают, что многопользовательский онлайн-сервис по генеалогии будет успешным продуктом.
how many siblings did jupiter have?
g.V('name','jupiter').out('brother','sister').count()
// who is caesar's grandmother?
g.V('name','caesar').out('mother').out('mother').name
// who are marcus' children's in-laws?
g.V('name','marcus').in('father').has('gender','M').out('married').out('father','mother').name
В настоящее время набор генеалогических данных составляет приблизительно 1 миллиард ребер. Поэтому его можно хранить и обрабатывать на одном компьютере. В качестве однопользовательского приложения достаточно одного сервера Titan. Однако при наличии нескольких пользователей важно, чтобы система была надежной и могла обслуживать множество одновременных запросов. Если приложение поддерживается только одним сервером, то если этот сервер отключается, приложение становится непригодным для использования. Чтобы обеспечить 1) отсутствие единой точки отказа и 2) поддержку большего количества транзакций в секунду, Август и Тиберий развертывают 3 машины, на каждой из которых установлен сервер Titan.

config/cassandra.yamlфайл по умолчанию для каждого сервера Titan, изменяя localhostзначение свойства на IP-адрес компьютера и добавляя начальный IP-адрес для обнаружения (см. Многоузловой кластер ). Затем они запускают каждый сервер Titan один за другим ( titan.sh). Чтобы обеспечить правильную кластеризацию серверов, они используют Cassandra nodetool.
apache-cassandra-1.2.3$ bin/nodetool ring
Datacenter: datacenter1
==========
Replicas: 1
Address Rack Status State Load Owns Token
57715295010532946864463892271081778854
10.223.14.57 rack1 Up Normal 93.06 KB 49.28% 141555886663081320436455748965948652071
10.174.123.131 rack1 Up Normal 59.73 KB 33.44% 28311611028231080169766921879398209884
10.196.0.207 rack1 Up Normal 9.43 KB 17.28% 57715295010532946864463892271081778854
Наконец, на одном из серверов cassandra-cliинструмент используется для обновления коэффициента репликации titan-keyspace.
apache-cassandra-1.2.3$ bin/cassandra-cli -h 10.174.123.131
[default@unknown] update keyspace titan with strategy_options = {replication_factor:3};
a3b7e1a3-4a88-3769-8c5e-90cda4fec0e1
[default@unknown] show schema titan;
create keyspace titan
with placement_strategy = 'SimpleStrategy'
and strategy_options = {replication_factor : 3}
and durable_writes = true;
При коэффициенте репликации 3 каждый из 3 серверов Titan является основным узлом приблизительно одной трети вершин в графе, в то же время каждый из них поддерживает реплику первичных данных двух других серверов. Таким образом, выполняется высокодоступная настройка мастер-мастер . У этой модели нет единой точки отказа. Если один из компьютеров базы данных выходит из строя, два других могут обслуживать первичные данные мертвой машины. Если две машины вышли из строя, оставшаяся машина может обслуживать данные — хотя и не с одинаковой пропускной способностью, возможной, когда все три машины доступны. При полной репликации мастер-мастер график дублируется, и каждый сервер может поддерживать как чтение, так и запись в график.
Титан Кластер


2^128на 9 частей ниже (см. Калькулятор Token Ring ).
0 18904575940052135809661593108510408704 37809151880104271619323186217020817408 56713727820156407428984779325531226112 75618303760208543238646372434041634816 94522879700260688493040931281842470912 113427455640312814857969558651062452224 132332031580364960112364117498863288320 151236607520417086477292744868083269632
Маркер каждого компьютера обновляется с помощью следующей nodetoolкоманды. Путем перераспределения токен-кольца 3 исходных сервера передают свои данные на вновь загруженные серверы, чтобы распределить загрузку данных в соответствии с их расположением в 128-битном пространстве токенов (каждая вершина хэшируется на конкретный 128-битный токен ).
apache-cassandra-1.2.3$ bin/nodetool -h 10.223.14.57 move 0 apache-cassandra-1.2.3$ bin/nodetool -h 10.174.123.131 move 18904575940052135809661593108510408704 apache-cassandra-1.2.3$ bin/nodetool -h 10.196.0.207 move 37809151880104271619323186217020817408 ... .. .
Если коэффициент репликации по-прежнему равен 3, каждый сервер не поддерживает полную копию графика. Вместо этого каждый сервер реплицирует только треть полного графика (3/9). На данный момент ни один сервер не имеет полной картины графика. Однако, поскольку существует больше серверов, можно обслуживать больше транзакций и сохранять больше данных. Augustus и Tiberius успешно превратили свое однопользовательское графическое приложение в распределенную систему, которая хранит и обрабатывает массивный генеалогический граф, представленный в кластере компьютеров Titan Server.
Вывод

Подтверждения
Стивен Маллетт и Блейк Эгглстон являются разработчиками Rexster RexPro . Их усилия были движущей силой развития Titan Server .

