• Stars
    star
    355
  • Rank 119,764 (Top 3 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Phalanx is a cloud-native distributed search engine that provides endpoints through gRPC and traditional RESTful API.

Phalanx

Phalanx is a cloud-native distributed search engine written in Go built on top of Bluge that provides endpoints through gRPC and traditional RESTful API.
Phalanx implements a cluster formation by hashicorp/memberlist and managing index metadata on etcd, so it is easy to bring up a fault-tolerant cluster.
Metrics for system operation can also be output in Prometheus exposition format, so that monitoring can be done immediately using Prometheus.
Phalanx is using object storage for the storage layer, it is only responsible for the computation layer, such as indexing and retrieval processes. Therefore, scaling is easy, and you can simply add new nodes to the cluster.
Currently, it is an alpha version and only supports Amazon S3 and MinIO as the storage layer, but in the future it will support Google Cloud Storage, and Azure Blob Storage.

Architecture

Phalanx is a master node-less distributed search engine that separates the computation layer for searching and indexing from the storage layer for persisting the index. The storage layer is designed to use object storage on public clouds such as Amazon S3, Google Cloud Storage, and Azure Blob Storage.

Phalanx makes it easy to bring up a distributed search engine cluster. A phalanx cluster simply adds nodes when its resources are run out. Of course, it can also simply shut down nodes that are not needed. Indexes are managed by object storage, so there is no need to worry about index placement. No complex operations are required. Clusters are very flexible and scalable.

Phalanx stores index metadata in etcd. The metadata stores the index and the path of the shards under that index. The nodes process the distributed index based on the metadata stored in etcd.

Phalanx also uses etcd as a distributed lock manager to ensure that updates to a single shard are not made on multiple nodes at the same time.

phalanx_architecture

Build

Building Phalanx as following:

% git clone https://github.com/mosuka/phalanx.git
% cd phalanx
% make build

You can see the binary file when build successful like so:

% ls ./bin
phalanx

Table of Contents

More Repositories

1

bayard

A full-text search and indexing server written in Rust.
Rust
1,855
star
2

blast

Blast is a full text search and indexing server, written in Go, built on top of Bleve.
Go
1,077
star
3

cete

Cete is a distributed key value store server written in Go built on top of BadgerDB.
Go
234
star
4

meteora

Distributed key-value store.
Rust
26
star
5

cockatrice

Cockatrice is a full text search and indexing server. It is written in Python built on top of Whoosh.
Python
17
star
6

kubernetes-solr

Kubernetes resource for Apache Solr.
16
star
7

solr-exporter

Apache Solr exporter for Prometheus.
Java
11
star
8

kubernetes-zookeeper

Kubernetes resource for Apache ZooKeeper.
4
star
9

fluent-plugin-filter-geoip

Ruby
4
star
10

solrj-example

Java
3
star
11

wikipedia-jsonl

wikipedia-jsonl is a CLI that converts Wikipedia dump XML to JSON Lines format.
Go
3
star
12

old-phalanx

Rust
3
star
13

docker-solr

Docker image for Apache Solr.
Shell
3
star
14

rendezvous

Weighted Rendezvous Hashing
Go
3
star
15

dynamodbstreams-subscriber

Go
3
star
16

bleve-example

Go
2
star
17

docker-banana

Docker image for Banana.
Shell
2
star
18

goclipse-test

Go
1
star
19

parabuteo

Rust
1
star
20

bayard-client-go

1
star
21

phalanx-datasource

Grafana Data Source Plugin for Phalanx
TypeScript
1
star
22

lucene-example

Java
1
star
23

zookeeper-cli

Java
1
star
24

fluent-plugin-output-solr

Fluent output plugin for sending data to Apache Solr. It supports standalone Solr and SolrCloud.
Ruby
1
star
25

logstash-output-solr

Ruby
1
star
26

lucene-cli

1
star
27

solr-suggest-sample-ui

This is a sample UI for Solr Suggester.
HTML
1
star
28

logutils

Go
1
star
29

pyexample

Python
1
star
30

fluent-plugin-kvp-parser

Ruby
1
star
31

bayard-proto

JavaScript
1
star