实例介绍
管理大型应用状态的难题是当前云计算中最困难的问题之一。FASTER项目提供了两个工具来帮助解决这个问题。
FASTER Log是一个高性能的并发持久化可恢复的日志、迭代器和随机读取库,使用C#实现。它支持低延迟的频繁提交操作,并且可以快速饱和磁盘带宽。它支持同步和异步接口,处理磁盘错误,并支持校验和。
FASTER KV是一个并发的键值存储 缓存(在C#和C 中可用),专为点查找和大量更新而设计。FASTER通过利用快速的外部存储(本地或云端)支持大于内存的数据。它还支持使用快速的非阻塞检查点技术进行一致性恢复,从而让应用程序可以在性能和提交延迟之间进行权衡。
【实例截图】

【核心代码】
文件清单
└── FASTER-e9e56ed4229759ed092e7baccb9dfe27a75fd80f
├── azure-pipelines-full.yml
├── azure-pipelines.yml
├── cc
│ ├── benchmark-dir
│ │ ├── benchmark.cc
│ │ ├── benchmark.vcxproj
│ │ ├── benchmark.vcxproj.filters
│ │ ├── CMakeLists.txt
│ │ ├── file.h
│ │ ├── process_ycsb.cc
│ │ └── README.md
│ ├── CMakeLists.txt
│ ├── CMakeLists.txt.in
│ ├── playground
│ │ ├── CMakeLists.txt
│ │ └── sum_store-dir
│ │ ├── CMakeLists.txt
│ │ ├── concurrent_recovery_test.h
│ │ ├── single_threaded_recovery_test.h
│ │ ├── sum_store.cc
│ │ └── sum_store.h
│ ├── README.md
│ ├── scripts
│ │ └── linux
│ │ └── azure
│ │ └── blob.sh
│ ├── src
│ │ ├── CMakeLists.txt
│ │ ├── common
│ │ │ └── log.h
│ │ ├── core
│ │ │ ├── address.cc
│ │ │ ├── address.h
│ │ │ ├── alloc.h
│ │ │ ├── async.h
│ │ │ ├── async_result_types.h
│ │ │ ├── auto_ptr.h
│ │ │ ├── checkpoint_locks.h
│ │ │ ├── checkpoint_state.h
│ │ │ ├── compact.h
│ │ │ ├── constants.h
│ │ │ ├── faster.h
│ │ │ ├── gc_state.h
│ │ │ ├── grow_state.h
│ │ │ ├── guid.h
│ │ │ ├── hash_bucket.h
│ │ │ ├── hash_table.h
│ │ │ ├── internal_contexts.h
│ │ │ ├── key_hash.h
│ │ │ ├── light_epoch.h
│ │ │ ├── log_scan.h
│ │ │ ├── lss_allocator.cc
│ │ │ ├── lss_allocator.h
│ │ │ ├── malloc_fixed_page_size.h
│ │ │ ├── native_buffer_pool.h
│ │ │ ├── persistent_memory_malloc.h
│ │ │ ├── phase.h
│ │ │ ├── record.h
│ │ │ ├── recovery_status.h
│ │ │ ├── state_transitions.h
│ │ │ ├── status.h
│ │ │ ├── thread.cc
│ │ │ ├── thread.h
│ │ │ └── utility.h
│ │ ├── device
│ │ │ ├── azure.h
│ │ │ ├── file_system_disk.h
│ │ │ ├── null_disk.h
│ │ │ └── storage.h
│ │ └── environment
│ │ ├── file_common.h
│ │ ├── file.h
│ │ ├── file_linux.cc
│ │ ├── file_linux.h
│ │ ├── file_windows.cc
│ │ └── file_windows.h
│ └── test
│ ├── blobs
│ │ ├── azure_test.cc
│ │ ├── CMakeLists.txt
│ │ ├── faster_blobs_example.cc
│ │ └── storage_test.cc
│ ├── CMakeLists.txt
│ ├── compact_test.cc
│ ├── in_memory_test.cc
│ ├── malloc_fixed_page_size_test.cc
│ ├── paging_queue_test.cc
│ ├── paging_test.h
│ ├── paging_threadpool_test.cc
│ ├── paging_uring_test.cc
│ ├── recovery_queue_test.cc
│ ├── recovery_test.h
│ ├── recovery_threadpool_test.cc
│ ├── recovery_uring_test.cc
│ ├── scan_test.cc
│ ├── test_types.h
│ └── utility_test.cc
├── CONTRIBUTING.md
├── cs
│ ├── benchmark
│ │ ├── App.config
│ │ ├── ConcurrentDictionaryBenchmark.cs
│ │ ├── FASTER.benchmark.csproj
│ │ ├── FasterSpanByteYcsbBenchmark.cs
│ │ ├── FasterYcsbBenchmark.cs
│ │ ├── Functions.cs
│ │ ├── FunctionsSB.cs
│ │ ├── Input.cs
│ │ ├── Key.cs
│ │ ├── KeySpanByte.cs
│ │ ├── Options.cs
│ │ ├── Output.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── RandomGenerator.cs
│ │ ├── scripts
│ │ │ ├── compare_runs.ps1
│ │ │ └── run_benchmark.ps1
│ │ ├── TestLoader.cs
│ │ ├── TestStats.cs
│ │ ├── Value.cs
│ │ ├── YcsbConstants.cs
│ │ └── ZipfGenerator.cs
│ ├── FASTER.sln
│ ├── FASTER.snk
│ ├── performance
│ │ └── BenchmarkDotNet
│ │ ├── BenchmarkDotNetTestsApp.cs
│ │ ├── BenchmarkDotNetTests.csproj
│ │ ├── InliningTests.cs
│ │ ├── LightEpochTests.cs
│ │ ├── README.md
│ │ └── SyncVsAsyncTests.cs
│ ├── playground
│ │ ├── AsyncStress
│ │ │ ├── AsyncStress.csproj
│ │ │ ├── FasterWrapper.cs
│ │ │ ├── IFasterWrapper.cs
│ │ │ ├── Program.cs
│ │ │ ├── SerializedFasterWrapper.cs
│ │ │ └── SerializedUpdaters.cs
│ │ ├── CacheStoreConcurrent
│ │ │ ├── CacheStoreConcurrent.csproj
│ │ │ ├── Program.cs
│ │ │ └── Types.cs
│ │ ├── ClassRecoveryDurability
│ │ │ ├── ClassRecoveryDurability.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Storedb.cs
│ │ │ └── Types.cs
│ │ ├── FasterLogMLSDTest
│ │ │ ├── FasterLogStress.csproj
│ │ │ └── Program.cs
│ │ ├── MemoryDb
│ │ │ ├── MemoryDb.csproj
│ │ │ └── Program.cs
│ │ ├── SumStore
│ │ │ ├── App.config
│ │ │ ├── ConcurrencyTest.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ ├── AssemblyInfo.cs
│ │ │ │ └── launchSettings.json
│ │ │ ├── README.md
│ │ │ ├── RecoveryTest.cs
│ │ │ ├── SumStore.csproj
│ │ │ └── SumStoreTypes.cs
│ │ └── TstRunner
│ │ ├── Program.cs
│ │ └── TstRunner.csproj
│ ├── README.md
│ ├── remote
│ │ ├── benchmark
│ │ │ └── FASTER.benchmark
│ │ │ ├── FASTER.benchmark.csproj
│ │ │ ├── FasterYcsbBenchmark.cs
│ │ │ ├── Native32.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ ├── RandomGenerator.cs
│ │ │ └── Types.cs
│ │ ├── FASTER.client.nuspec
│ │ ├── FASTER.remote.sln
│ │ ├── FASTER.server.nuspec
│ │ ├── README.md
│ │ ├── samples
│ │ │ ├── FixedLenClient
│ │ │ │ ├── FixedLenClient.csproj
│ │ │ │ ├── Functions.cs
│ │ │ │ └── Program.cs
│ │ │ ├── FixedLenServer
│ │ │ │ ├── FixedLenServer.csproj
│ │ │ │ ├── Program.cs
│ │ │ │ └── Types.cs
│ │ │ ├── VarLenClient
│ │ │ │ ├── CustomType.cs
│ │ │ │ ├── CustomTypeFunctions.cs
│ │ │ │ ├── CustomTypeSamples.cs
│ │ │ │ ├── MemoryBenchmark.cs
│ │ │ │ ├── MemoryFunctions.cs
│ │ │ │ ├── MemorySamples.cs
│ │ │ │ ├── Program.cs
│ │ │ │ └── VarLenClient.csproj
│ │ │ ├── VarLenServer
│ │ │ │ ├── Options.cs
│ │ │ │ ├── Program.cs
│ │ │ │ └── VarLenServer.csproj
│ │ │ └── WebClient
│ │ │ ├── FASTERFunctions.js
│ │ │ └── WebClient.html
│ │ ├── src
│ │ │ ├── FASTER.client
│ │ │ │ ├── CallbackFunctionsBase.cs
│ │ │ │ ├── ClientNetworkSession.cs
│ │ │ │ ├── ClientSessionAsync.cs
│ │ │ │ ├── ClientSession.cs
│ │ │ │ ├── FASTER.client.csproj
│ │ │ │ ├── FasterKVClient.cs
│ │ │ │ ├── FixedLenSerializer.cs
│ │ │ │ ├── ICallbackFunctions.cs
│ │ │ │ ├── JavascriptClient
│ │ │ │ │ ├── BatchHeader.js
│ │ │ │ │ ├── CallbackFunctionsBase.js
│ │ │ │ │ ├── ClientNetworkSession.js
│ │ │ │ │ ├── ClientSession.js
│ │ │ │ │ ├── ParameterSerializer.js
│ │ │ │ │ ├── Queue.js
│ │ │ │ │ └── Utils.js
│ │ │ │ ├── MemoryFunctionsBase.cs
│ │ │ │ ├── MemoryParameterSerializer.cs
│ │ │ │ ├── StatusCode.cs
│ │ │ │ └── Status.cs
│ │ │ ├── FASTER.common
│ │ │ │ ├── BatchHeader.cs
│ │ │ │ ├── BufferSizeUtils.cs
│ │ │ │ ├── ElasticCircularBuffer.cs
│ │ │ │ ├── FASTER.common.csproj
│ │ │ │ ├── HeaderReaderWriter.cs
│ │ │ │ ├── IClientSerializer.cs
│ │ │ │ ├── IKeyInputSerializer.cs
│ │ │ │ ├── IKeySerializer.cs
│ │ │ │ ├── IMessageConsumer.cs
│ │ │ │ ├── INetworkSender.cs
│ │ │ │ ├── IServerSerializer.cs
│ │ │ │ ├── LightConcurrentStack.cs
│ │ │ │ ├── MaxSizeSettings.cs
│ │ │ │ ├── MessageType.cs
│ │ │ │ ├── NetworkSenderBase.cs
│ │ │ │ ├── SeaaBuffer.cs
│ │ │ │ ├── SimpleObjectPool.cs
│ │ │ │ ├── TcpNetworkSender.cs
│ │ │ │ └── WireFormat.cs
│ │ │ └── FASTER.server
│ │ │ ├── BinaryServerSession.cs
│ │ │ ├── ByteArrayComparer.cs
│ │ │ ├── ConnectionArgs.cs
│ │ │ ├── FasterKVServerSessionBase.cs
│ │ │ ├── FASTER.server.csproj
│ │ │ ├── FixedLenSerializer.cs
│ │ │ ├── ISessionProvider.cs
│ │ │ ├── Providers
│ │ │ │ ├── FasterKVProviderBase.cs
│ │ │ │ ├── FasterKVProvider.cs
│ │ │ │ └── SpanByteFasterKVProvider.cs
│ │ │ ├── PubSub
│ │ │ │ ├── FixedLenKeySerializer.cs
│ │ │ │ ├── GlobUtils.cs
│ │ │ │ ├── SpanByteKeySerializer.cs
│ │ │ │ ├── SubscribeBroker.cs
│ │ │ │ └── SubscribeKVBroker.cs
│ │ │ ├── ServerKVFunctions.cs
│ │ │ ├── Servers
│ │ │ │ ├── FasterServerBase.cs
│ │ │ │ ├── FasterServerTcp.cs
│ │ │ │ ├── FixedLenServer.cs
│ │ │ │ ├── GenericServer.cs
│ │ │ │ ├── IFasterServer.cs
│ │ │ │ ├── ServerOptions.cs
│ │ │ │ └── VarLenServer.cs
│ │ │ ├── ServerSessionBase.cs
│ │ │ ├── SpanByteClientSerializer.cs
│ │ │ ├── SpanByteFunctionsForServer.cs
│ │ │ ├── SpanByteServerSerializer.cs
│ │ │ └── WebsocketServerSession.cs
│ │ └── test
│ │ └── FASTER.remote.test
│ │ ├── FASTER.remote.test.csproj
│ │ ├── FixedLenBinaryPubSubTests.cs
│ │ ├── FixedLenBinaryTests.cs
│ │ ├── FixedLenClient.cs
│ │ ├── TestUtils.cs
│ │ ├── VarLenBinaryPubSubTests.cs
│ │ ├── VarLenBinaryTests.cs
│ │ └── VarLenMemoryClient.cs
│ ├── samples
│ │ ├── AzureBackedStore
│ │ │ ├── App.config
│ │ │ ├── AzureBackedStore.csproj
│ │ │ ├── Functions.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── Types.cs
│ │ ├── CacheStore
│ │ │ ├── CacheStore.csproj
│ │ │ ├── Program.cs
│ │ │ └── Types.cs
│ │ ├── EpvsSample
│ │ │ ├── EpvsBench.cs
│ │ │ ├── EpvsSample.csproj
│ │ │ ├── ListExample.cs
│ │ │ └── Program.cs
│ │ ├── FasterLogPubSub
│ │ │ ├── App.config
│ │ │ ├── FasterLogPubSub.csproj
│ │ │ ├── Program.cs
│ │ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── FasterLogSample
│ │ │ ├── App.config
│ │ │ ├── FasterLogSample.csproj
│ │ │ ├── Program.cs
│ │ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── HelloWorld
│ │ │ ├── App.config
│ │ │ ├── HelloWorld.csproj
│ │ │ ├── Program.cs
│ │ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── ReadAddress
│ │ │ ├── Types.cs
│ │ │ ├── VersionedReadApp.cs
│ │ │ └── VersionedRead.csproj
│ │ ├── ResizableCacheStore
│ │ │ ├── CacheSizeTracker.cs
│ │ │ ├── ISizeTracker.cs
│ │ │ ├── LogSizeTracker.cs
│ │ │ ├── Program.cs
│ │ │ ├── ResizableCacheStore.csproj
│ │ │ ├── Types.cs
│ │ │ └── ZipfGenerator.cs
│ │ ├── SecondaryReaderStore
│ │ │ ├── Program.cs
│ │ │ └── SecondaryReaderStore.csproj
│ │ ├── StoreAsyncApi
│ │ │ ├── App.config
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── StoreAsyncApi.csproj
│ │ │ └── Types.cs
│ │ ├── StoreCheckpointRecover
│ │ │ ├── App.config
│ │ │ ├── Functions.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── StoreCheckpointRecover.csproj
│ │ │ └── Types.cs
│ │ ├── StoreCustomTypes
│ │ │ ├── App.config
│ │ │ ├── Functions.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── StoreCustomTypes.csproj
│ │ │ └── Types.cs
│ │ ├── StoreDiskReadBenchmark
│ │ │ ├── App.config
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── StoreDiskReadBenchmark.csproj
│ │ │ └── Types.cs
│ │ ├── StoreLogCompaction
│ │ │ ├── Program.cs
│ │ │ ├── StoreLogCompaction.csproj
│ │ │ └── Types.cs
│ │ └── StoreVarLenTypes
│ │ ├── App.config
│ │ ├── AsciiSumSample.cs
│ │ ├── AsciiSumSpanByteFunctions.cs
│ │ ├── CustomMemoryFunctions.cs
│ │ ├── CustomSpanByteFunctions.cs
│ │ ├── MemoryByteSample.cs
│ │ ├── MemoryIntSample.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── SpanByteSample.cs
│ │ ├── StoreVarLenTypes.csproj
│ │ └── Utils.cs
│ ├── src
│ │ ├── core
│ │ │ ├── Allocator
│ │ │ │ ├── AllocatorBase.cs
│ │ │ │ ├── AsyncIOContext.cs
│ │ │ │ ├── AtomicOwner.cs
│ │ │ │ ├── BlittableAllocator.cs
│ │ │ │ ├── BlittableFrame.cs
│ │ │ │ ├── BlittableScanIterator.cs
│ │ │ │ ├── ErrorList.cs
│ │ │ │ ├── GenericAllocator.cs
│ │ │ │ ├── GenericFrame.cs
│ │ │ │ ├── GenericScanIterator.cs
│ │ │ │ ├── IFasterScanIterator.cs
│ │ │ │ ├── IScanIteratorFunctions.cs
│ │ │ │ ├── MallocFixedPageSize.cs
│ │ │ │ ├── MemoryPageScanIterator.cs
│ │ │ │ ├── PageUnit.cs
│ │ │ │ ├── PendingFlushList.cs
│ │ │ │ ├── ScanIteratorBase.cs
│ │ │ │ ├── VarLenBlittableAllocator.cs
│ │ │ │ ├── VarLenBlittableScanIterator.cs
│ │ │ │ ├── WorkQueueFIFO.cs
│ │ │ │ └── WorkQueueLIFO.cs
│ │ │ ├── Async
│ │ │ │ ├── AsyncOperationInternal.cs
│ │ │ │ ├── CompletePendingAsync.cs
│ │ │ │ ├── DeleteAsync.cs
│ │ │ │ ├── ReadAsync.cs
│ │ │ │ ├── RMWAsync.cs
│ │ │ │ └── UpsertAsync.cs
│ │ │ ├── ClientSession
│ │ │ │ ├── BasicContext.cs
│ │ │ │ ├── ClientSession.cs
│ │ │ │ ├── FASTERClientSession.cs
│ │ │ │ ├── IClientSession.cs
│ │ │ │ ├── IFasterContext.cs
│ │ │ │ ├── ILockableContext.cs
│ │ │ │ ├── IUnsafeContext.cs
│ │ │ │ ├── LockableContext.cs
│ │ │ │ ├── LockableUnsafeContext.cs
│ │ │ │ └── UnsafeContext.cs
│ │ │ ├── Compaction
│ │ │ │ ├── CompactionType.cs
│ │ │ │ ├── FASTERCompaction.cs
│ │ │ │ ├── ICompactionFunctions.cs
│ │ │ │ └── LogCompactionFunctions.cs
│ │ │ ├── Device
│ │ │ │ ├── AsyncPool.cs
│ │ │ │ ├── Devices.cs
│ │ │ │ ├── IDevice.cs
│ │ │ │ ├── LocalMemoryDevice.cs
│ │ │ │ ├── LocalStorageDevice.cs
│ │ │ │ ├── ManagedLocalStorageDevice.cs
│ │ │ │ ├── NullDevice.cs
│ │ │ │ ├── ShardedStorageDevice.cs
│ │ │ │ ├── StorageDeviceBase.cs
│ │ │ │ └── TieredStorageDevice.cs
│ │ │ ├── Epochs
│ │ │ │ ├── EpochProtectedVersionScheme.cs
│ │ │ │ ├── FastThreadLocal.cs
│ │ │ │ └── LightEpoch.cs
│ │ │ ├── FASTER.core.csproj
│ │ │ ├── FASTER.core.nuspec
│ │ │ ├── FasterLog
│ │ │ │ ├── CommitFailureException.cs
│ │ │ │ ├── CommitInfo.cs
│ │ │ │ ├── FasterLog.cs
│ │ │ │ ├── FasterLogIterator.cs
│ │ │ │ ├── FasterLogRecoveryInfo.cs
│ │ │ │ ├── FasterLogSettings.cs
│ │ │ │ ├── ILogCommitManager.cs
│ │ │ │ ├── ILogEnqueueEntry.cs
│ │ │ │ ├── ILogEntryConsumer.cs
│ │ │ │ ├── IReadOnlySpanBatch.cs
│ │ │ │ └── LogCommitPolicy.cs
│ │ │ ├── Index
│ │ │ │ ├── CheckpointManagement
│ │ │ │ │ ├── DefaultCheckpointNamingScheme.cs
│ │ │ │ │ ├── DeviceLogCommitCheckpointManager.cs
│ │ │ │ │ ├── ICheckpointNamingScheme.cs
│ │ │ │ │ ├── INamedDeviceFactory.cs
│ │ │ │ │ ├── LocalStorageNamedDeviceFactory.cs
│ │ │ │ │ └── NullNamedDeviceFactory.cs
│ │ │ │ ├── Common
│ │ │ │ │ ├── AddressInfo.cs
│ │ │ │ │ ├── CheckpointSettings.cs
│ │ │ │ │ ├── CompletedOutput.cs
│ │ │ │ │ ├── Contexts.cs
│ │ │ │ │ ├── FasterKVSettings.cs
│ │ │ │ │ ├── HeapContainer.cs
│ │ │ │ │ ├── LogSettings.cs
│ │ │ │ │ ├── OperationOptions.cs
│ │ │ │ │ ├── RecordInfo.cs
│ │ │ │ │ └── RecordMetadata.cs
│ │ │ │ ├── FASTER
│ │ │ │ │ ├── Extensions.cs
│ │ │ │ │ ├── FASTERBase.cs
│ │ │ │ │ ├── FASTER.cs
│ │ │ │ │ ├── FASTERIterator.cs
│ │ │ │ │ ├── FASTERThread.cs
│ │ │ │ │ ├── Implementation
│ │ │ │ │ │ ├── BlockAllocate.cs
│ │ │ │ │ │ ├── ConditionalCopyToTail.cs
│ │ │ │ │ │ ├── ContainsKeyInMemory.cs
│ │ │ │ │ │ ├── ContinuePending.cs
│ │ │ │ │ │ ├── EpochOperations.cs
│ │ │ │ │ │ ├── FindRecord.cs
│ │ │ │ │ │ ├── HandleOperationStatus.cs
│ │ │ │ │ │ ├── HashEntryInfo.cs
│ │ │ │ │ │ ├── Helpers.cs
│ │ │ │ │ │ ├── InternalDelete.cs
│ │ │ │ │ │ ├── InternalLock.cs
│ │ │ │ │ │ ├── InternalRead.cs
│ │ │ │ │ │ ├── InternalRMW.cs
│ │ │ │ │ │ ├── InternalUpsert.cs
│ │ │ │ │ │ ├── Locking
│ │ │ │ │ │ │ ├── ILockTable.cs
│ │ │ │ │ │ │ ├── OverflowBucketLockTable.cs
│ │ │ │ │ │ │ └── TransientLocking.cs
│ │ │ │ │ │ ├── ModifiedBitOperation.cs
│ │ │ │ │ │ ├── OperationStackContext.cs
│ │ │ │ │ │ ├── ReadCache.cs
│ │ │ │ │ │ ├── RecordSource.cs
│ │ │ │ │ │ ├── SplitIndex.cs
│ │ │ │ │ │ ├── TryCopyToReadCache.cs
│ │ │ │ │ │ └── TryCopyToTail.cs
│ │ │ │ │ ├── LogAccessor.cs
│ │ │ │ │ └── WriteReason.cs
│ │ │ │ ├── Interfaces
│ │ │ │ │ ├── CallbackInfos.cs
│ │ │ │ │ ├── DataContractObjectSerializer.cs
│ │ │ │ │ ├── FasterEqualityComparer.cs
│ │ │ │ │ ├── FunctionsBase.cs
│ │ │ │ │ ├── IFasterEqualityComparer.cs
│ │ │ │ │ ├── IFasterKV.cs
│ │ │ │ │ ├── IFasterSession.cs
│ │ │ │ │ ├── IFunctions.cs
│ │ │ │ │ ├── IObjectSerializer.cs
│ │ │ │ │ ├── NullFasterSession.cs
│ │ │ │ │ ├── ObjectSerializer.cs
│ │ │ │ │ └── TryAddFunctions.cs
│ │ │ │ ├── Recovery
│ │ │ │ │ ├── Checkpoint.cs
│ │ │ │ │ ├── DeltaLog.cs
│ │ │ │ │ ├── DirectoryConfiguration.cs
│ │ │ │ │ ├── FileDescriptor.cs
│ │ │ │ │ ├── ICheckpointManager.cs
│ │ │ │ │ ├── IndexCheckpoint.cs
│ │ │ │ │ ├── IndexRecovery.cs
│ │ │ │ │ └── Recovery.cs
│ │ │ │ └── Synchronization
│ │ │ │ ├── FasterStateMachine.cs
│ │ │ │ ├── FullCheckpointStateMachine.cs
│ │ │ │ ├── HybridLogCheckpointTask.cs
│ │ │ │ ├── IndexResizeStateMachine.cs
│ │ │ │ ├── IndexSnapshotStateMachine.cs
│ │ │ │ ├── IStateMachineCallback.cs
│ │ │ │ ├── ISynchronizationStateMachine.cs
│ │ │ │ ├── StateTransitions.cs
│ │ │ │ └── VersionChangeStateMachine.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Utilities
│ │ │ │ ├── AsyncCountDown.cs
│ │ │ │ ├── AsyncQueue.cs
│ │ │ │ ├── AsyncResultTypes.cs
│ │ │ │ ├── BufferPool.cs
│ │ │ │ ├── CompletionEvent.cs
│ │ │ │ ├── FasterException.cs
│ │ │ │ ├── LockType.cs
│ │ │ │ ├── Native32.cs
│ │ │ │ ├── OverflowPool.cs
│ │ │ │ ├── PageAsyncResultTypes.cs
│ │ │ │ ├── SafeConcurrentDictionary.cs
│ │ │ │ ├── StatusCode.cs
│ │ │ │ ├── Status.cs
│ │ │ │ └── Utility.cs
│ │ │ └── VarLen
│ │ │ ├── DefaultVariableLengthStruct.cs
│ │ │ ├── FixedLengthStruct.cs
│ │ │ ├── IHeapConvertible.cs
│ │ │ ├── IVariableLengthStruct.cs
│ │ │ ├── MemoryComparer.cs
│ │ │ ├── MemoryFunctions.cs
│ │ │ ├── MemoryVarLenStruct.cs
│ │ │ ├── ReadOnlyMemoryVarLenStruct.cs
│ │ │ ├── SessionVariableLengthStructSettings.cs
│ │ │ ├── SpanByteAndMemory.cs
│ │ │ ├── SpanByteComparer.cs
│ │ │ ├── SpanByte.cs
│ │ │ ├── SpanByteExtensions.cs
│ │ │ ├── SpanByteFunctions.cs
│ │ │ ├── SpanByteVarLenStruct.cs
│ │ │ ├── UnmanagedMemoryManager.cs
│ │ │ ├── UnsafeLogMemoryExtensions.cs
│ │ │ ├── VariableLengthStructSettings.cs
│ │ │ └── VarLenHeapContainer.cs
│ │ └── devices
│ │ └── AzureStorageDevice
│ │ ├── AzureStorageDevice.cs
│ │ ├── AzureStorageNamedDeviceFactory.cs
│ │ ├── BlobEntry.cs
│ │ ├── BlobManager.cs
│ │ ├── BlobUtils.cs
│ │ ├── BlobUtilsV12.cs
│ │ ├── FASTER.devices.AzureStorageDevice.csproj
│ │ ├── FASTER.devices.AzureStorageDevice.nuspec
│ │ ├── FasterTraceHelper.cs
│ │ ├── IBlobManager.cs
│ │ ├── IStorageErrorHandler.cs
│ │ ├── LeaseTimer.cs
│ │ ├── StorageErrorHandler.cs
│ │ ├── StorageOperations.cs
│ │ ├── TrackedThreads.cs
│ │ └── Utils.cs
│ ├── stress
│ │ ├── FASTER.stress.csproj
│ │ ├── IKeyTester.cs
│ │ ├── IValueTester.cs
│ │ ├── LongKeyTester.cs
│ │ ├── LongValueTester.cs
│ │ ├── NonSpanByteValueFunctions.cs
│ │ ├── Options.cs
│ │ ├── SessionWrapper.cs
│ │ ├── SpanByteKeyTester.cs
│ │ ├── SpanByteValueFunctions.cs
│ │ ├── SpanByteValueTester.cs
│ │ ├── StressApp.cs
│ │ ├── StringKeyTester.cs
│ │ ├── StringValueTester.cs
│ │ └── TestLoader.cs
│ └── test
│ ├── AdvancedLockTests.cs
│ ├── app.config
│ ├── AsyncLargeObjectTests.cs
│ ├── AsyncTests.cs
│ ├── BasicDiskFASTERTests.cs
│ ├── BasicFASTERTests.cs
│ ├── BasicLockTests.cs
│ ├── BlittableIterationTests.cs
│ ├── BlittableLogCompactionTests.cs
│ ├── BlittableLogScanTests.cs
│ ├── CancellationTests.cs
│ ├── CheckpointManagerTests.cs
│ ├── CompletePendingTests.cs
│ ├── ComponentRecoveryTests.cs
│ ├── DeltaLogTests.cs
│ ├── DeviceFasterLogTests.cs
│ ├── DisposeTests.cs
│ ├── EnqueueAndWaitForCommit.cs
│ ├── EnqueueTests.cs
│ ├── EphemeralLockingTests.cs
│ ├── ExpirationTests.cs
│ ├── FasterLogAndDeviceConfigTests.cs
│ ├── FasterLogFastCommitTests.cs
│ ├── FasterLogRecoverReadOnlyTests.cs
│ ├── FasterLogResumeTests.cs
│ ├── FasterLogScanTests.cs
│ ├── FasterLogTests.cs
│ ├── FASTER.test.csproj
│ ├── FlakyDeviceTests.cs
│ ├── FunctionPerSessionTests.cs
│ ├── GenericByteArrayTests.cs
│ ├── GenericDiskDeleteTests.cs
│ ├── GenericIterationTests.cs
│ ├── GenericLogCompactionTests.cs
│ ├── GenericLogScanTests.cs
│ ├── GenericStringTests.cs
│ ├── InputOutputParameterTests.cs
│ ├── LargeObjectTests.cs
│ ├── LockableUnsafeContextTests.cs
│ ├── LogFormatter.cs
│ ├── LogReadAsyncTests.cs
│ ├── LogShiftTailStressTest.cs
│ ├── LowMemAsyncTests.cs
│ ├── MallocFixedPageSizeTests.cs
│ ├── ManagedLocalStorageTests.cs
│ ├── MemoryLogCompactionTests.cs
│ ├── MiscFASTERTests.cs
│ ├── ModifiedBitTests.cs
│ ├── MoreLogCompactionTests.cs
│ ├── NameValidator.cs
│ ├── NativeReadCacheTests.cs
│ ├── NeedCopyUpdateTests.cs
│ ├── NUnitLoggerProvider.cs
│ ├── ObjectFASTERTests.cs
│ ├── ObjectReadCacheTests.cs
│ ├── ObjectRecoveryTest2.cs
│ ├── ObjectRecoveryTest3.cs
│ ├── ObjectRecoveryTest.cs
│ ├── ObjectRecoveryTestTypes.cs
│ ├── ObjectTestTypes.cs
│ ├── OverflowBucketLockTableTests.cs
│ ├── PostOperationsTests.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── ReadAddressTests.cs
│ ├── ReadCacheChainTests.cs
│ ├── RecoverContinueTests.cs
│ ├── RecoverReadOnlyTest.cs
│ ├── RecoveryChecks.cs
│ ├── RecoveryTests.cs
│ ├── RecoveryTestTypes.cs
│ ├── ReproReadCacheTest.cs
│ ├── SessionFASTERTests.cs
│ ├── SharedDirectoryTests.cs
│ ├── SimpleAsyncTests.cs
│ ├── SimpleRecoveryTest.cs
│ ├── SimpleTests.cs
│ ├── SimpleVersionSchemeTest.cs
│ ├── SimulatedFlakyDevice.cs
│ ├── SingleWriterTests.cs
│ ├── SpanByteLogScanTests.cs
│ ├── SpanByteTests.cs
│ ├── StateMachineBarrierTests.cs
│ ├── StateMachineTests.cs
│ ├── TestTypes.cs
│ ├── TestUtils.cs
│ ├── ThreadSession.cs
│ ├── TryEnqueueBasicTests.cs
│ ├── UnsafeContextTests.cs
│ ├── VariableLengthIteratorTests.cs
│ ├── VariableLengthStructFASTERTests.cs
│ ├── VarLenBlittableIterationTests.cs
│ ├── VLTestTypes.cs
│ └── WaitForCommit.cs
├── docs
│ ├── assets
│ │ ├── css
│ │ │ └── main.scss
│ │ └── images
│ │ ├── faster-banner.png
│ │ └── faster-logo.png
│ ├── _config.yml
│ ├── _data
│ │ └── navigation.yml
│ ├── _docs
│ │ ├── 01-quick-start-guide.md
│ │ ├── 02-faqs.md
│ │ ├── 20-fasterkv-basics.md
│ │ ├── 23-fasterkv-tuning.md
│ │ ├── 25-fasterkv-recovery.md
│ │ ├── 26-fasterkv-samples.md
│ │ ├── 29-fasterkv-cpp.md
│ │ ├── 30-fasterkv-record-locking.md
│ │ ├── 40-fasterlog-basics.md
│ │ ├── 43-fasterlog-tuning.md
│ │ ├── 46-fasterlog-samples.md
│ │ ├── 50-remote-basics.md
│ │ ├── 51-remote-pubsub.md
│ │ ├── 80-build-and-test.md
│ │ ├── 82-code-structure.md
│ │ ├── 84-roadmap.md
│ │ ├── 90-td-introduction.md
│ │ ├── 95-research-papers.md
│ │ └── 96-slides-videos.md
│ ├── Gemfile
│ ├── _includes
│ │ ├── feature_row_small
│ │ └── footer.html
│ ├── _layouts
│ │ └── default.html
│ ├── _pages
│ │ └── home.md
│ ├── README.md
│ └── _sass
│ └── minimal-mistakes
│ └── skins
│ └── _air.scss
├── img
│ ├── bechmark-machine-specs.png
│ ├── big-0reads-int64cd.png
│ ├── big-0reads-logscale.png
│ ├── big-0reads.png
│ ├── big-100reads-int64cd.png
│ ├── big-100reads-logscale.png
│ ├── big-100reads.png
│ ├── big-50reads-int64cd.png
│ ├── big-50reads-logscale.png
│ ├── big-50reads.png
│ ├── big-loading.png
│ ├── big-readpercent.png
│ ├── scan-uncommitted.png
│ ├── small-0reads.png
│ ├── small-100reads.png
│ └── small-50reads.png
├── LICENSE
├── README.md
└── SECURITY.md
114 directories, 672 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论