Skip to content

Commit

Permalink
Fix readme links
Browse files Browse the repository at this point in the history
  • Loading branch information
danielealbano committed Jul 6, 2022
1 parent d437631 commit 9bea127
Showing 1 changed file with 24 additions and 24 deletions.
48 changes: 24 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,37 +21,37 @@ Benchmarked on an AMD EPYC 7502P, cachegrand is able to scale linearly if enough
system to process the network data

Key features:
- [Modular](https://github.com/danielealbano/cachegrand/docs/architecture/modules.md) architecture to support widely used protocols, e.g.
[Redis](https://github.com/danielealbano/cachegrand/docs/architecture/modules/redis.md),
- [Time-series database](https://github.com/danielealbano/cachegrand/docs/architecture/timeseries-db.md) for fast data writes and retrieval with
- [Modular](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/modules.md) architecture to support widely used protocols, e.g.
[Redis](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/modules/redis.md),
- [Time-series database](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/timeseries-db.md) for fast data writes and retrieval with
primitives built to handle different data types (e.g. small strings, large blobs, jsons, etc.);
- [Hashtable](https://github.com/danielealbano/cachegrand/docs/architecture/hashtable.md) GET Lock-free and Wait-free operations, SET and DELETE use
- [Hashtable](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/hashtable.md) GET Lock-free and Wait-free operations, SET and DELETE use
localized spinlocks, the implementation is capable to digest 2.1 billion records per second on a 1x AMD EPYC 7502 (see
[benches](https://github.com/danielealbano/cachegrand/docs/benchmarks/hashtable.md));
- An ad-hoc [SLAB Allocator](https://github.com/danielealbano/cachegrand/docs/architecture/slab-allocator.md) (memory allocator) capable of allocating and free memory in O(1);
[benches](https://github.com/danielealbano/cachegrand/blob/main/docs/benchmarks/hashtable.md));
- An ad-hoc [SLAB Allocator](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/slab-allocator.md) (memory allocator) capable of allocating and free memory in O(1);
- Linear vertical scalability when using the in-memory database, 2x cpus means 2x requests (see
[benches](https://github.com/danielealbano/cachegrand/docs/benchmarks/linear-vertical-scalability.md));
[benches](https://github.com/danielealbano/cachegrand/blob/main/docs/benchmarks/linear-vertical-scalability.md));

Planned Key Features:
- More modules for additional platforms compatibility, e.g. [Memcache](https://github.com/danielealbano/cachegrand/docs/architecture/modules/memcache.md),
etc., or to add support for monitoring, e.g. [Prometheus](https://github.com/danielealbano/cachegrand/docs/architecture/modules/prometheus.md),
[DataDog](https://github.com/danielealbano/cachegrand/docs/architecture/modules/datadog.md), etc.;
- More modules for additional platforms compatibility, e.g. [Memcache](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/modules/memcache.md),
etc., or to add support for monitoring, e.g. [Prometheus](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/modules/prometheus.md),
[DataDog](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/modules/datadog.md), etc.;
- Ad ad-hoc network stack based on DPDK / Linux XDP (eXpress Data Path) and the FreeBSD network stack;
- [Built for flash memories](https://github.com/danielealbano/cachegrand/docs/architecture/timeseries-db.md#flash-memories) to be able to efficiently saturate the
- [Built for flash memories](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/timeseries-db.md#flash-memories) to be able to efficiently saturate the
available IOPS in modern DC NVMEs and SSDs;
- [WebAssembly](https://github.com/danielealbano/cachegrand/docs/architecture/webassembly.md) to provide AOT-compiled
[User Defined Functions](https://github.com/danielealbano/cachegrand/docs/architecture/webassembly/user-defined-functions.md),
[event hooks](https://github.com/danielealbano/cachegrand/docs/architecture/webassembly/event-hooks.md), implement
[modules](https://github.com/danielealbano/cachegrand/docs/architecture/webassembly.md#modules), you can use your preferred language to perform operations
- [WebAssembly](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/webassembly.md) to provide AOT-compiled
[User Defined Functions](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/webassembly/user-defined-functions.md),
[event hooks](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/webassembly/event-hooks.md), implement
[modules](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/webassembly.md#modules), you can use your preferred language to perform operations
server side;
- [Replication groups](https://github.com/danielealbano/cachegrand/docs/architecture/clustering-and-replication.md#replication-groups) and
[replica tags](https://github.com/danielealbano/cachegrand/docs/architecture/clustering-and-replication.md#replica-tags), tag data client side or use
- [Replication groups](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/clustering-and-replication.md#replication-groups) and
[replica tags](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/clustering-and-replication.md#replica-tags), tag data client side or use
server side events to tag the data and determine how they will be replicated;
- [Active-Active](https://github.com/danielealbano/cachegrand/docs/architecture/clustering-and-replication.md#active-active)
[last-write-wins](https://github.com/danielealbano/cachegrand/docs/architecture/clustering-and-replication.md#last-write-wins) data replication, it's a
- [Active-Active](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/clustering-and-replication.md#active-active)
[last-write-wins](https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/clustering-and-replication.md#last-write-wins) data replication, it's a
cache, write to any node of a replication group to which the replication tags are assigned, no need to think worry it;

It's possible to find more information in the [docs](https://github.com/danielealbano/cachegrand/docs/) folder.
It's possible to find more information in the [docs](https://github.com/danielealbano/cachegrand/blob/main/docs/) folder.

The platform is written in C, validated via unit tests, Valgrind and integration tests, it's also built with a set of
compiler options to fortify the builds ([#85](https://github.com/danielealbano/cachegrand/issues/85)).
Expand All @@ -77,7 +77,7 @@ knows nothing of your own compiled binaries.
### Performances

The platform is regularly benchmarked as part of the development process to ensure that no regressions slip through,
it's possibile to find more details in the [documentation](https://github.com/danielealbano/cachegrand/docs/benchmarks.md).
it's possibile to find more details in the [documentation](https://github.com/danielealbano/cachegrand/blob/main/docs/benchmarks.md).

### How to install

Expand All @@ -88,20 +88,20 @@ Packages are currently not available, they are planned to be created for the v0.
#### Build from source

Instructions on how to build cachegrand from the sources are available in the
[documentation](https://github.com/danielealbano/cachegrand/docs/build-from-source.md)
[documentation](https://github.com/danielealbano/cachegrand/blob/main/docs/build-from-source.md)

### Configuration

cachegrand comes with a default configuration but for production use please review the
[documentation](https://github.com/danielealbano/cachegrand/docs/configuration.md) to ensure an optimal deployment.
[documentation](https://github.com/danielealbano/cachegrand/blob/main/docs/configuration.md) to ensure an optimal deployment.

### Running cachegrand

cachegrand doesn't need to run as root but please review the configuration section to ensure that enough lockable memory
has been allowed, enough files can be opened and that the slab allocator has been enabled and enough huge pages have been provided

Before trying to start cachegrand, take a look to the
[performance tips](https://github.com/danielealbano/cachegrand/docs/performance-tips.md) available in the docs section
[performance tips](https://github.com/danielealbano/cachegrand/blob/main/docs/performance-tips.md) available in the docs section
as they might provide a valuable help!

#### Help
Expand Down

0 comments on commit 9bea127

Please sign in to comment.