每天10分钟学会OceanBase(Day 2)系列:架构解剖,告别分库分表焦虑 昨天我们通过Docker快速体验了OceanBase今天我们要稍微深入一点看看它到底是怎么做到“既能扛住双十一海量并发又能保证数据绝对不丢”的。别被“分布式”三个字吓到其实它的核心架构逻辑非常清晰。核心概念Zone与OBServer在OceanBase的世界里没有传统的“主从节点”之分而是采用了Shared-Nothing的对等架构。OBServer你可以把它理解为数据库的“工作进程”。一个物理服务器上可以运行一个OBServer它负责处理SQL请求、存储数据。Zone可用区通常对应一个机房。为了保证高可用生产环境通常会部署至少3个Zone。数据是怎么存的三副本与Paxos协议传统数据库怕宕机所以搞主从复制OceanBase不怕因为它天生就是多副本的。当你写入一条数据时OceanBase会通过Multi-Paxos协议将这条数据同步写入到3个不同Zone的副本中。只有当至少2个副本确认写入成功才会返回给客户端“成功”。这意味着哪怕其中一个机房突然断电你的数据不仅不会丢业务也能在几秒内自动切换到其他存活的节点RPO0RTO30秒。多租户一台机器多个“虚拟数据库”这是OceanBase最迷人的特性之一。传统架构下业务A和业务B可能需要两套独立的MySQL集群资源无法共享。而在OceanBase中你可以创建一个集群然后划分出多个“租户”。每个租户都有自己独立的CPU、内存配额互不干扰。这就好比在一栋大楼里划分出不同的办公室大家共用大楼的基础设施但关起门来各干各的既省了硬件成本又提高了资源利用率。10分钟实操查看集群状态如果你昨天启动了Docker容器现在可以进入容器内部看看单节点集群的“五脏六腑”# 进入OceanBase容器 docker exec -it oceanbase-ce bash # 使用内置的obclient连接数据库 obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A # 查看当前集群的Zone和Server状态 SELECT * FROM oceanbase.DBA_OB_SERVERS;你会看到返回的结果中包含了IP、端口、所属Zone以及状态ACTIVE。这就是你当前集群的“体检报告”。今日小结今天我们认识了OceanBase的“三驾马车”OBServer、Zone和多租户。它通过Paxos协议解决了分布式环境下的数据一致性难题又通过多租户架构解决了资源隔离与共享的问题。 课后思考既然OceanBase支持多租户如果我想把现有的MySQL业务迁移过来是直接建一个MySQL模式的租户还是建一个Oracle模式的租户这两种模式在兼容性上有什么区别欢迎在评论区讨论明天我们直接上手建租户