Moebius for SQL Server
Moebius(莫比斯)介绍
Moebius数据库多活集群是格瑞趋势为SQL Server数据库研发的能够同时满足可用性、数据安全、容灾、读写分离、负载均衡的一站式多活集群。集群的名字取自Moebius环,寓意无限扩展。
Moebius采用“share nothing”架构,每个节点的SQL Server服务独立安装,使用每个服务器自己存储介质内的数据库文件。不基于共享存储设备,也不基于磁盘镜像等功能,通过SQL Server的日志同步技术实现各节点中数据的一致性。在主节点写入数据时会产生日志,Moebius捕获并传输日志到其他节点,并通过REDO技术把日志转换成数据。因此每个节点的SQL Server服务都是启动的,数据都是“活”的。Moebius有实时和准实时两种同步方式,不同的节点可以使用不同的同步方式。
Moebius 通过“网络心跳”及“仲裁机制”实现故障监控,当侦测到某节点发生故障并经过仲裁后,将此节点剥离出集群,如果故障节点是主节点,则会进行自动故障转移,重新选择健康的节点作为主节点。节点故障恢复后会自动从主节点同步差异数据,同步完成后加入到集群中。
Moebius的调度引擎支持连接级和SQL语句级两种调度方式,通过规则的配置,在不改动或者少改动应用程序的前提下,透明的实现读写分离、负载均衡。

Moebius集群的架构
Moebius集群采用无共享磁盘架构
Moebius集群由一组数据库服务器组成,每个服务器上安装相同的数据库,集群支持无共享磁盘架构,各机器可以不连接一个共享设备,数据可以存储在每个机器自己的存储介质中。
无共享磁盘架构,使得存储不再是单点,系统可用性提高,同时还可以充分利用集群中每个机器的CPU、I/O等硬件来实现集群的高性能。
无需价格高昂的共享磁盘柜,只要使用2台服务器即可轻松构筑低成本的集群。

Moebius集群架构的分类
依据数据是否分区,Moebius集群架构分为标准架构和高级架构:
标准架构:每个节点中具有完全相同的数据,每个节点都拥有数据全集。
高级架构:每个节点中数据是不同的,每个节点只拥有数据全集的一部分。
Moebius For SQL Server标准架构
Moebius集群是一组相互独立的服务器,通过相互协作形成一个统一的整体。集群中多个节点相互连接,这样冗余的硬件架构不但可以避免单点故障而且提供了杰出的故障恢复能力。一旦发生系统失败,Moebius集群对用户保证最高的可用性,保障关键是业务数据不丢失。
Moebius 集群标准架构
一个集群数据库可以看作是一个被多个应用实例访问的单一数据库。在Moebius集群中,每个SQL Server实例在各自的服务器上运行。随着应用的增加,当需要添加额外的资源时,可以在不停机的情况下很容易地增加节点。
标准架构中间件工作原理
中间件驻留在每个机器的数据库中,监测数据库内数据的变化,并将变化的数据同步到其它数据库中。数据同步完成后客户端才会得到响应,同步过程是并发完成的,因此同步到多个数据库和同步到一个数据库的时间基本相等;另外同步过程是在事务环境下完成的,保证了多份数据的数据一致性。
正因为中间件宿主在数据库中,所以中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能地采取不同的数据同步策略以保证数据同步成本的最小化:
1. 数据条数很少,数据内容也不大,则直接同步数据。
2. 数据条数很少,但是里面包含大数据类型,比如文本,二进制数据等, 则先对数据进行压缩然后再
同步,从而减少网络带宽的占用和传输所用的时间。
3. 数据条数很多,此时中间件会获取造成数据变化的SQL语句, 然后对SQL语句进行解析,分析其
执行计划和执行成本,并选择是同步数据还是同步SQL语句到其他的数据库中。在对表结构进行调整
或者批量更改数据的时候,这种同步策略非常有用。
Moebius For SQL Server高级架构
在高级架构中,采用数据分区技术,依据某种规则把数据分散到多个数据库中。
数据为什么分区?
1.当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影
响最终用户的体验。
2.在大数据量下对数据库的装载与导出,备份与恢复,结构的调整,索引的调整等都会让数据库停止服
务或者高负荷运转很长时间,影响数据库的可用性和易管理性。
3.面对这样的应用环境,仅仅依靠提升服务器的硬件配置是起不到作用的,比较好的办法是通过数据分
区,把数据分成更小的部分来提高数据库的可用性和易管理性。
4.分区把各部分数据放到不同的机器中,每次查询可以由多个机器上的CPU、I/O来共同负载,通过
各节点并行处理数据来提高性能。

系统结构
Moebius For SQL Server高级架构在结构上分访问层数据库和数据层数据库两部分。
访问层:访问层数据库只有原来数据库的结构没有数据,处理提交上来的SQL语句并调度执行。访问层数
据库可以由多个机器来负载均衡。
数据层:数据层数据库就是原来的数据库,但是可以有多个冗余对查询进行负载均衡,以提高整个系统
的性能,Moebius For SQL Server保证多个数据库的一致性;数据层数据库不暴露给用户和业务程序,用户和业务程序面对的是访问层数据库。
通过访问层和数据层构建出一个网格集群来实现集群的高可用性和负载均衡,访问层和数据层的数据库是可以扩展的。(每列中各节点的数据是相同的,每行构成数据的全集;图中数据数据层设计为5×2矩阵,在实际应用中要依据业务的特点来划分)。
如何分区?
Moebius For SQL Server支持两种分区方式:Hash分区和线性分区。
Hash分区:是将表按某一字段的值均匀地分布到若干个指定分区中的一种分区方法。
优点:每个分区内分配的数据比较平均,承载的压力也就比较平均,机器能够得到充分的利用。
缺点:不易扩展,如果扩展新的分区会涉及到数据的重新分配,因此在设计的时候要提前规划好。
Moebius For SQL Server支持把多个分区数据放在一个机器上然后再根据压力逐个的拆到新机器中去,这样既可以保证了分区的规划又不浪费机器,实现了线性扩展。
线性分区:即范围分区,将表按某一字段的取值范围进行分区,如按时间,每个月的数据在一个分区中。
优点:扩展性能比较好,因为数据的增长是有一定规律的。
缺点:每个分区内数据的压力不是很平均,大部分业务都存在这种现象,越老的数据被访问的频率越低,从而导致各机器面临的压力也不同,因此使机器的利用率不高。
Moebius For SQL Server支持把多个分区数据放在一个机器上,所以可以通过新老分区的交替使用来提高机器的利用率。
分区操作在管理工具中很容易配置,首先设置分区,接下来给每个表选择分区并设置分区字段.
这样中间件在解析、处理SQL语句的时候就会根据配置把数据分配到相应分区所在的机器中去或者从相应分区中读取数据。和其他一些集群不同的是Moebius For SQL Server的分区是经过抽象的,是完全透明的。
高级架构中间件工作原理
1.中间件解析到查询的SQL语句后,首先分析该语句要查找的表,根据所要查找表的分区配置和SQL语句的WHERE条件计算出要从一个分区中还是多个分区中去取数据,取完数据后在访问层合并后再返回给应用程序。这里要重点说明的是中间件通过分析SQL语句,能够对分区范围进行动态缩小或者放大。SELECT * FROM dbo.UserInfo WHERE UserID = 1,因为UserID是分区字段,所以中间件只会从一个分区中查找;SELECT * FROM dbo.UserInfo WHERE UserID IN(3, 4)则会从两个分区中查找;SELECT * FROM dbo.UserInfo WHERE Username = ‘wangzhongtao’,没有使用分区字段作为查询的条件,中间件就会从每个分区列数据库进行查找。对于多个分区列数据进行查询的操作是并行的从而保证总体响应时间的最小化。
2.中间件解析到更新的SQL语句后,首先分析要更新的表,根据要更新表的分区配置和更新语句的SQL语法来计算出要更新一个或者多个分区中的数据。例如INSERT dbo.UserInfo(UserID, Username) VALUES(1, ‘wangzhongtao’),中间件会解析到UserID = 1,然后根据表的分区配置把数据插入到第一个分区中去。中间件解析到一个更新的SQL语句后,会同时更新同一列中的数据库。第一:更新操作是并行的,整个操作的响应时间和更新一个数据库的响应时间基本相同;第二:整个操作是在事务的环境下完成的,保证了多个数据库中数据是一致的,实现了真正的冗余。
3.中间件解析到一个更新数据库结构的DDL语句,会把该语句同步到其他访问层数据库和所有的数据层数据库中。这样用户就像在使用一个数据库去维护表、索引、存储过程等等,大大降低了用户的管理成本,也降低了出错的机率。这是Moebius For SQL Server 的亮点。

常见问题
虚拟化\超融合平台下还有做Moebius的必要吗?
虚拟化或者超融合虽然能够保障可用性和数据安全,但本质上提供的是一个单数据库服务器。如果有在SQL Server层面的容灾或者读写分离、负载均衡的需求,就是有必要的。
Moebius兼容虚拟化\超融合平台吗?
兼容,Moebius的节点可以是物理机,也可以是虚拟机,或者是两者的组合。
做了Moebius后还有必要做存储双活吗?
如果存储设备只是为了数据库服务器提供的,那么是没有必要再做双活的,因为Moebius的数据就是多份的,既能保障数据安全,又可以随时验证数据的一致性。可以让每个Moebius节点各接一个独立的存储设备,这样既节省了双活模块的成本,又提升了磁盘空间的利用率。
北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台高级合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。
Moebius for SQL Server的更多相关文章
- 大数据时代下的SQL Server第三方负载均衡方案----Moebius测试
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...
- (转)大数据时代下的SQL Server第三方负载均衡方案----Moebius测试
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...
- SQL Server 负载均衡集群方案之Moebius
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...
- sql server 分布式查询 和 主从服务器搭建
1. 8K 对应的SQL语句限制 select * from openquery (recei 连接服务器名称 执行的sql 语句放在 SELECT @@SERVERNAME 在本地 ...
- SQL Server数据库大型应用解决方案总结(转载)
转载地址:http://hb.qq.com/a/20120111/000216.htm 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至 ...
- SQL Server数据库大型应用解决方案总结
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题. 一 ...
- SQL Server 2008之数据库大型应用解决方案总结
着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题. 一. ...
- SQL Server数据库大型应用解决方案总结【转】
[IT168 技术]随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造 ...
- SQL Server数据库大型应用解决方案总结(转)
出处:http://tech.it168.com/a2012/0110/1300/000001300144.shtml [IT168 技术]随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计 ...
- sql server第三方产品
sql server第三方产商工具 双活: 1. Moebius for SQL Server :http://www.grqsh.com/Subpage/product_MoebiusDA.html ...
随机推荐
- containerd:配置https私有镜像仓库的最新方法
随着containerd应用越来越广泛,我们必须紧跟官网的节奏. 之前配置https私有镜像仓库的方法比较繁琐,并且不易梳理,下边介绍一下目前最新的配置方法. 配置https私有镜像仓库 我假设你现在 ...
- 在 windows 上部署 django
环境 Django 4.1.7 python 3.11.2 Apache 2.4.46 1:安装配置 Apache 1.1:下载 Apache Apache官方下载链接 按照系统版本选择对应的,以下是 ...
- 微前端实践MicroApp
微前端实践 本文主要是关于microApp的实践过程记录 本文主要内容如下: 什么是MicroApp? MicroApp的父子通讯方式以及路由介绍 如何部署相关应用? 安装 npm i @micro- ...
- Angular 17+ 高级教程 – Routing 路由 (功能篇)
前言 这篇只讲功能不讲原理.没有循序渐进,没有由浅入深,一个主题讲到底. Route 目录 上一篇 Angular 17+ 高级教程 – Routing 路由 (原理篇) 下一篇 Angular 17 ...
- Figma 学习笔记 – Scroll and Position Fixed
Scroll Scroll 属于 prototype 的一部分. 当一个 Frame 的内容超出 Frame 的高度或宽度时, Frame 就具备了 scroll 的能力. 通过 uncheck cl ...
- 网络服务性能优化:Wrktcp与Perf工具详解
wrktcp安装 码云地址:https://gitee.com/icesky1stm/wrktcp 直接下载,cd wrktcp-master && make,会生成wrktcp,就o ...
- vivo 全链路多版本开发测试环境落地实践
作者:来自 vivo 互联网研发效能团队- Wang Kang 测试环境全链路多版本部署,解决多测试环境资源争抢等问题. 一.背景介绍 软件系统中全链路指的是从用户请求发起,到最终返回响应的整个过程中 ...
- request和response请求包中的各项解释
Request Response
- 无人值守的IDC机房动环综合运维方案
企业数字化转型以及5G.物联网.云计算.人工智能等新业态带动了数据中心的发展,在国家一体化大数据中心及"东数西算"节点布局的推动下,数据中心机房已成为各大企事业单位维持业务正常 ...
- Java使用snmp协议采集服务器信息
Java使用snmp协议采集服务器信息 一.snmp简介 SNMP是专门设计用于在 IP 网络管理网络节点(服务器.工作站.路由器.交换机及Hubs等)的一种标准协议,它是一种应用层协议. ...