美团点评Cellar:分布式KV存储的演进与挑战

需积分: 0 0 下载量 88 浏览量 更新于2024-06-21 收藏 6.81MB PDF 举报
《藏经阁-分布式KV存储Cellar演进之路》是一篇由美团点评·基础架构部的存储研发团队负责人齐泽斌撰写的文章,分享了美团点评公司从引入阿里Tair作为NoSQL存储系统,到自主研发分布式键值存储服务Cellar的发展历程。文章首先介绍了Cellar项目的命名寓意,将之比喻为酒窖,象征着随着时间的推移,数据价值会不断增长。 在文章中,作者详细阐述了Cellar的起源。起初,美团在2014年初引入了Tair作为主要的非关系型数据库,随着业务规模的扩大,他们在2016年初基于开源版本开发了新一代KV存储系统Cellar,以解决Tair在中心化集群、可用性、性能和运维方面的问题。Cellar在设计上着重考虑了以下几个关键点: 1. **中心节点架构演进**:为了改善性能和提高隔离性,文章指出早期的Cellar面临客户端集中获取路由表导致的性能瓶颈和中心节点直接暴露给客户端可能带来的隔离性问题。通过改进,中心节点被设计成独立模块,提供路由查询能力,能够线性扩展,同时保证客户端与中心节点的完全隔离。 2. **节点高可用和异地容灾**:文章提到了如何通过设计实现节点的高可用性,以及如何通过异地容灾策略来保证服务的连续性,即使在某一区域发生故障时,也能快速切换到其他区域继续服务。 3. **服务可用性提升**:通过优化一致性机制,如主备脑裂问题的处理,以及observer与config组件的设计,文章强调了服务可用性的改进,确保在各种情况下系统的稳定运行。 4. **规划与未来方向**:最后,文章概述了Cellar的规划,包括对现有架构的持续优化,以及对未来的设想,预示着Cellar将会是一个不断演进和适应业务需求的分布式KV存储解决方案。 《藏经阁-分布式KV存储Cellar演进之路》提供了深入理解美团点评在分布式存储技术上如何从挑战中学习、成长并实现技术迭代的过程,展现了分布式存储系统在实际场景中的应用和发展策略。

“ bundler: failed to load command: pod (/opt/homebrew/Cellar/fastlane/2.211.0/libexec/bin/pod)RubyGems Environment:- RUBYGEMS VERSION: 3.0.3.1- RUBY VERSION: 2.6.10 (2022-04-12 patchlevel 210) [universal.arm64e-darwin22]- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.6.0- USER INSTALLATION DIRECTORY: /Users/e125866/.gem/ruby/2.6.0- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby- GIT EXECUTABLE: /usr/local/bin/git- EXECUTABLE DIRECTORY: /usr/local/bin- SPEC CACHE DIRECTORY: /Users/e125866/.gem/specs- SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site- RUBYGEMS PLATFORMS:- ruby- universal-darwin-22- GEM PATHS:- /Library/Ruby/Gems/2.6.0- /Users/e125866/.gem/ruby/2.6.0- /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0- GEM CONFIGURATION:- :update_sources => true- :verbose => true- :backtrace => false- :bulk_threshold => 1000- :sources => ["https://gems.ruby-china.com/"]- :concurrent_downloads => 8- REMOTE SOURCES:- https://gems.ruby-china.com/- SHELL PATH:- /opt/apache-maven-3.8.6/bin- /opt/homebrew/bin- /opt/homebrew/sbin- /usr/local/bin- /System/Cryptexes/App/usr/bin- /usr/bin- /bin- /usr/sbin- /sbin- /usr/local/sbin- /Library/Apple/usr/bin- /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin- /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin- /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin- /Users/e125866/.rvm/bin”这个有问题吗?

2023-06-09 上传
2023-05-11 上传

下面是我 运行终端代码后的返回,请帮我解释下:shenhaibo@bogon webAssembly % emcc add.c -s WASM=1 -o add.wasm wasm-ld: error: /opt/homebrew/Cellar/emscripten/3.1.40/libexec/cache/sysroot/lib/wasm32-emscripten/libstandalonewasm-nocatch.a(__main_void.o): undefined symbol: main emcc: error: '/opt/homebrew/Cellar/emscripten/3.1.40/libexec/llvm/bin/wasm-ld -o add.wasm /var/folders/hd/zkctfvz128366gcjfw9pgslr0000gn/T/emscripten_temp_0gmz58hs/add_0.o -L/opt/homebrew/Cellar/emscripten/3.1.40/libexec/cache/sysroot/lib/wasm32-emscripten /opt/homebrew/Cellar/emscripten/3.1.40/libexec/cache/sysroot/lib/wasm32-emscripten/crt1.o -lGL -lal -lhtml5 -lstandalonewasm-nocatch -lstubs-debug -lc-debug -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /var/folders/hd/zkctfvz128366gcjfw9pgslr0000gn/T/tmp6m8wb6r0libemscripten_js_symbols.so --strip-debug --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export-table -z stack-size=65536 --initial-memory=16777216 --max-memory=16777216 --stack-first' failed (returned 1) shenhaibo@bogon webAssembly %

2023-06-07 上传