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

需积分: 36 14 下载量 89 浏览量 更新于2024-07-17 收藏 6.86MB PDF 举报
分布式 KV 存储系统 Cellar 是美团点评基础架构部门开发的一种关键组件,该项目起源于2014年初,当时美团引入了阿里巴巴的Tair作为NoSQL存储解决方案。随着业务需求的增长,美团在2016年初基于开源版本自主研发了新一代的KV存储系统 Cellar,以解决Tair在中心化集群、可用性、性能和运维方面存在的问题。 Cellar项目的命名灵感来自于酒窖,寓意着数据存储的持久性和价值提升,随着系统的演进,Cellar的日请求量达到了万亿级别,成为美团点评的主要NoSQL存储服务。Cellar的设计和演进经历了以下几个关键阶段: 1. **起源与Tair架构**:初期,Cellar基于Tair架构,采用固定HASH算法将数据分片并分配到特定的存储节点。Tair的问题包括中心化集群可能导致的单点故障、可用性降低、性能瓶颈以及运维复杂性。 2. **架构升级与问题解决**: - **中心节点架构演进**:为了解决性能问题,Cellar改变了客户端获取路由表的方式,使其集中化,减少了网络延迟。同时,通过隔离中心节点和客户端,提升了系统的隔离性。 - **可扩展性和一致性**:新的设计允许路由查询能力线性扩展,增强了系统的可扩展性。为了应对主备脑裂和一致性问题,引入observer角色并与config模块协同工作。 3. **高可用和异地容灾**:Cellar重视节点的高可用性,通过优化实现跨地域的数据备份和恢复策略,确保在发生故障时能快速切换到其他节点,提供持续的服务。 4. **服务可用性提升**:针对Tair的可用性问题,Cellar进行了多方面的优化,如减少单点故障风险、提高服务的稳定性和可靠性。 5. **规划与未来发展**:Cellar的规划不仅关注当前的问题解决,还着眼于长期的演进,持续进行性能优化、可维护性改进和架构设计的迭代,以适应不断变化的业务需求。 Cellar作为美团点评的分布式KV存储系统,通过不断的技术演进和优化,成功地解决了早期引入的Tair问题,为美团的业务提供了强大而可靠的支撑,展示了分布式存储系统在大型互联网公司的实际应用和重要性。
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 上传