首页 > 网站建设 >

怎样进行大型网站建设数据集群伸缩性设计?

发布时间:2018-11-09 作者:深圳网站建设

大型网站建设对于数据存储服务器集群的伸缩性设计
  深圳网站建设公司提醒您,数据存储服务器集群的伸缩性设计和缓存服务器集群的伸缩性设计不同,数据存储服务器集群的伸缩性对数据的持久性和可用性提出了更高的要求。缓存的目的是加速数据读取的速度并减轻数据存储服务器的负载压力,因此部分缓存数据的丢失不影响业务的正常处理,因为数据还可以从数据库等存储服务器上获取。
  而数据存储服务器必须保证数据的可靠存储,任何情况下都必须保证数据的可用性和正确性。因此缓存服务器集群的伸缩性架构方案不能直接适用于数据库等存储服务器。存储服务器集群的伸缩性设计相对更复杂些,具体说来,又可分为关系数据库集群的伸缩性设计和NoSQL数据库的伸缩性设计。
一、大型网站建设之关系数据库集群的伸缩性设计
  关系数据库凭借其简单强大的SQL和众多成熟的商业数据库产品,占据了从企业应用到网站系统的大部分业务数据存储服务。市场上主要的关系数据部支持数据复制功能,使用这个功能可以对数据库进行简单伸缩。图6-14为使用数据复制的MySQL集群伸缩性方案。
大型网站建设数据库集群流程示意图6-14 MySQL集群伸缩性方案。
  在这种架构中,虽然多台服务器部署MySQL实例但是它们的角色有主从之分,数据写操作部在主服务器上,由主服务器将数据同步到集群中其他从服务器,数据读操作及数据分析等离线操作在从服务器上进行。除了数据库主从读写分离,前面提到的业务分割模式也可以用在数据库,不同业务数据表部署在不同的数据库集群上,即俗称的数据分库。这种方式的制约条件是跨库的表不能进行Joiu操作。
  在大型网站的实际应用中,即使进行了分库和主从复制,对些单表数据仍然很大的表,比如Facebook的用户数据库,淘宝的商品数据库,还需要进行分片,将一张表拆开分别存储在多个数据库中。
  目前网站在线业务应用中比较成熟的支持数据分片的分布式关系数据库产品主要有开源的Amoeba( http://sourceforgenet/projects/amoeba/)和Cobar(http://code. alibabat ech. com/wiki/displav/cobar/Home)。这两个产品有相似的架构设计以Cobar为例部署模型如图6-15所示。
大型网站建设数据库集群6-15 Cobar部署模型
  Cobar是一个分布式关系数据库访问代理,介于应用服务器和数据库服务器之间(Cobar也支持非独立部署,以lib的方式和应用程序部署在一起)。应用程序通过JDBC驱动访问Cobar集群,Cobar服务器根据SQL和分库规则分解SQL,分发到MySQL集群不同的数据库实例上执行(每个MySQL实例都部署为主/从结构,保证数据高可用)。
Cobar系统组件模型如图6-16所示
大型网站建设数据库集群流程示意6-16 Cobar系统组件模型
  前端通信模块负责和应用程序通信,接收到SQL请求(select{ from users where userid in  (12,22,23))后转交给SQL解析模块,SQL解析模块解析获得SQL中的路由规则查询条件(userid  in( 12,22,23))再转交给SQL路由模块,SQL路由模块根据路由规则配置(userid为偶数路由至数据库A,userid为奇数路由至数据库B)将应用程序提交的SQL分解成两条SQL (select{ from users where useridin  (12,22):select$ from users where userid in  (23);)转交给SQL执行代理模块,发送至数据库A和数据库B分别执行。
  数据库A和数据库B的执行结果返回至SQL执行模块,通过结果合并模块将两个返回结果集合并成个结果集,最终返回给应用程序,完成在分布式数据库中的次访问请求。那么Cohar如何做集群的伸缩呢?
Cobar的伸缩有两种:Cobar服务器集群的伸缩和MySQL服务器集群的伸缩。
Cobar服务器可以看作是无状态的应用服务器,因此其集群伸缩可以简单使用负载均衡的手段实现。而MySQL申存储着数据,要想保证集群扩容后数据致负载均衡,必须要做数据迁移,将集群中原来机器中的数据迁移到新添加的机器中,如图6-17所示。
大型网站建设数据库集成示意图6-17Cobar集群伸缩原理
  具体迁移哪些数据可以利用致性Hash算法(即路由模块使用一致性Hash算法进行路由),尽量使需要迁移的数据最少。但是迁移数据需要遍历数据库中每条记录(的索引),重新进行路由计算确定其是否需要迁移,这会对数据库访问造成定压力。并且需要解决迁移过程中数据的一致性、可访问性、迁移过程中服务器宕机时的可用性等诸多问题。
  实践中.Cobar利用了MySQL的数据同步功能进行数据迁移。数据迁移不是以数据为单位,而是以Schema为单位。在Cobar集群初始化时在每个MySQL实例创建多个Schema(根据业务远景规划未来集群规模,如集群最大规模为l000台数据库服务器,那么总的初始Schema数≥1000)。集群扩容的时候,从每个服务器中迁移部分Schema到新机器中.由于迁移以Schema为单位,迁移过程可以使用MySQL的同步机制如图6-18示。
  大型网站建设数据库图6-18利用MySQL同步机制实现cobar伸缩性集群
同步完成时,即新机器中Schenia数据和原机器中Schema数据致的时候,修改Cobar服务器的路由配置,将这些Schema的IP修改为新机器的IP.然后删除原机器中的相关Schema.完成MySQL集群扩容。
  在整个分布式关系数据库的访问请求过程中,Cobar服务器处理消耗的时间是很少的,时间花费主要还是在MySQL数据库端,因此应用程
序通过Cobar访问分布式关系数据库,性能基本和直接访问关系数据库相当,可以满足网站在线业务的实时处理需求。事实上由于Cobar代替
应用程序连接数据库,数据库只需要维护更少的连接,减少不必要的资源消耗,改善性能。但由于Cobar路由后只能在单数据库实例上处理查询请求,因此无法执行跨库的JOIN操作,当然更不能执行跨库的事务处理。
  相比关系数据库本身功能上的优雅强大,目前各类分布式关系数据库解决方案都显得非常简陋.限制了关系数据库某些功能的使用。但是当网站业务面临不停增长的海量业务数据存储压力时,又不得不利用分布式关系数据库的集群伸缩能力,这时就必须从业务上回避分布式关系数据库的各种缺点:避免事务或利用事务补偿机制代替数据库事务;分解数据访问逻辑避免JOIN操作等。
  除了上面提到的分布式数据库,还有类分布式数据库可以支持JOIN操作执行复杂的SQL查询,如GreenPlum。但是这类数据库的访问延迟比较大(可以想象,JOIN操作需要在服务器间传输大量的数据),因此一般使用在数据仓库等非实时业务中。好了,网站建设公司本文就分享到这里。谢谢关注,博纳网络编辑整理。
 
文章标题:怎样进行大型网站建设数据集群伸缩性设计?
本文地址:https://www.198bona.com/news/1685.html
如果您觉得案例还不错请帮忙分享:

网站建设

网络推广

解决方案

域名主机

建站行业资讯