架构师之路(十八)Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

架构师之路(十八)

作为一名软件开发人员,成为架构师是追求之一。系统架构师的能力不仅仅体现在书写业务代码上,更重要的是系统的结构和性能,是否具有可拓展性、高并发性和稳定性。


  垂直拆分
  垂直拆分就是要把表按模块划分到不同 数据库  表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。 当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求。其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表,淘宝在架构不断演变过程,最重要的一环就是服务化改造,把用户、交易、店铺、宝贝这些核心的概念抽取成独立的服务,也非常有利于进行局部的优化和治理,保障核心模块的稳定性
  垂直拆分:单表大数据量依然存在性能瓶颈
   水平拆分
  上面谈到垂直切分只是把表按模块划分到不同数据库,但没有解决单表大数据量的问题,而水平切分就是要把一个表按照某种规则把数据划分到不同表或数据库里。例如像计费系统,通过按时间来划分表就比较合适,因为系统都是处理某一时间段的数据。而像SaaS应用,通过按用户维度来划分数据比较合适,因为用户与用户之间的隔离的,一般不存在处理多个用户数据的情况,简单的按user_id范围来水平切分
  通俗理解: 水平拆分行,行数据拆分到不同表中, 垂直拆分列,表数据拆分到不同表中
   垂直与水平联合切分
  由上面可知垂直切分能更清晰化模块划分,区分治理,水平切分能解决大数据量性能瓶颈问题,因此常常就会把两者结合使用,这在大型网站里是种常见的策略
  案例:
  以mysql为例,简单购物系统暂设涉及如下表:
  1.产品表(数据量10w,稳定)
  2.订单表(数据量200w,且有增长趋势)
  3.用户表 (数据量100w,且有增长趋势)
  以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万
   垂直拆分:
  解决问题:
  表与表之间的io竞争
  不解决问题:
  单表中数据量增长出现的压力
  方案:
  把产品表和用户表放到一个 server 
  订单表单独放到一个server上
   水平拆分:
  解决问题:
  单表中数据量增长出现的压力
  不解决问题:
  表与表之间的io争夺
  方案:
  用户表通过性别拆分为男用户表和女用户表
  订单表通过已完成和完成中拆分为已完成订单和未完成订单
  产品表 未完成订单放一个server上
  已完成订单表和男用户表放一个server上
  女用户表放一个server上(女的爱购物)





个人总结:
             数据库的垂直切分,也就是按模块、功能进行数据库的切分。根据功能模块,比如说权限模块、产品模块、用户模块、监控模块、绑定模块等等,这些可以放在不同的数据库server里面,这样的优势是之前的表和表之间存在io竞争,现在放在不同的数据库里面,这样可以对表数据进行解耦,提高数据库的访问速度,解决表与表之间的io竞争。
              数据库的水平切分,表示同一个模块,会根据同一张表里面的数据,按照表逻辑规则,进行拆分,比如说按照订单号的单双来进行分库。




阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Dubbo是一种高性能的Java RPC框架,用于构建分布式服务架构。它提供了服务注册与发现、负载均衡容错、动态代理等功能,可以帮助开发者轻松构建可扩展的分布式系统。 Zookeeper是一个开源的分布式协调服务框架,它提供了高可用性、高性能和可靠性的分布式协调功能。在Dubbo中,Zookeeper通常用于服务注册与发现。它为分布式系统提供了一个一致性的命名空间,并提供了强大的监控和通知机制,使得服务能够动态地注册和发现。 具体使用DubboZookeeper的步骤如下: 1. 配置Zookeeper:首先需要安装和配置Zookeeper服务器,并确保其正常运行。 2. 引入Dubbo依赖:在项目的构建配置文件中,引入Dubbo相关的依赖。 3. 配置Dubbo:在应用程序的配置文件中,配置Dubbo相关的参数,如注册中心地址、端口等。 4. 编写服务接口:定义需要暴露的服务接口。 5. 编写服务实现:实现服务接口,并使用Dubbo的注解来标识服务的相关信息。 6. 启动Dubbo服务:在应用程序中启动Dubbo服务提供者,将服务注册到Zookeeper上。 7. 调用Dubbo服务:在应用程序中使用Dubbo的引用注解来引用需要调用的服务。 8. 配置消费者:在消费者端的配置文件中,配置消费者相关的参数,如注册中心地址、端口等。 9. 启动消费者:在应用程序中启动Dubbo服务消费者,通过Dubbo的引用注解来调用远程服务。 通过以上步骤,你可以使用DubboZookeeper搭建起一个分布式服务架构,并实现服务的注册、发现和调用。希望对你有所帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满龙林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值