dobbu,zookeeper,webservice,数据库的主从备份读写分离。通俗解释

本文介绍了分布式开发的概念及其在大型项目中的应用。通过将不同的业务层拆分成独立的服务,可以实现快速迭代和灵活部署。文章还探讨了如何利用dubbo进行服务间的调用以及zookeeper在服务发现和负载均衡中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

往常 dao层、service层、pojo、controller 都是在一个项目里的,项目大了以后,每做一次修改,就要重启服务器,很耽误时间。所以有了分布式开发。每一层 都提取出来 单独作为一个项目。然后通过maven的项目依赖,最终服务器只需要部署一个项目就可以了。

网站一般都有用户页面和管理员页面,这两个页面实际上操作的是同一个数据库表,所以说controller项目有两个,一个是负责用户部分的页面,一个负责管理员部分的页面。但他们操作的其实是相同的表,所以一般是公用service项目和dao项目的。

但是为了解耦合,不通过controller项目在maven中依赖service项目从而掉service的方法。这时我们可以使用dobbu,dobbu说白了就是 一个项目调 另一个项目的方法的。

这里多说一嘴,比如项目A想获取项目B的一个方法返回来的数据,如果你用dobbu,实际上不是项目A自己去调用项目B的方法,而是项目A通知项目B,让项目B自己去调用自己的方法,然后将返回值给A。而webService是它自己通过url去调用的。

当项目大的时候,会有很多个service项目,每一个service又有集群,所以又需要负载均衡,提到负载均衡我们可能会想到nginx,但是由于有很多个service,也就要存在很多个nginx,显然这种方法行不通,这时我们就需要用到zookeeper,zookeeper是一个注册中心,可以把它想象成中介,项目B通过 暴露接口 来告诉zookeeper 我的哪个service接口中的方法可以被别人调用,项目A 通过 接口 来 告诉zookeeper 他需要调用 哪个 service接口中的方法。 我这里 说的这两个接口是同一个,只是对于 项目A 和 B的意义不同。 zookeeper得知 了这两个项目 信息,当项目A去找zookeeper的时候,他会告诉项目A ,项目B可以满足你的需求,并告诉项目A去 哪里找项目B,然后项目A 就去找项目B了, 如果没找到,项目A 会继续找zookeeper,zookeeper会再告诉项目A另外一个可以满足它需求的项目。然后项目A再去找另外一个。

zookeeper实际上是个数据库。 它满足CAP原则(高可用性、一致性、分区容错性)中的一致性和分区容错性。这个和mysql的主从备份,读写分离不太一样。 

zookeeper它 保证了 主数据库和从数据库中的数据一致,当我们往数据库中写入数据的时候,会先写入主数据库,然后从数据库会根据日志文件也进行写入,当我们从数据库中读取数据的时候,是从 从数据库中读的,但是如果我们处于向从数据库中写入数据的过程当中,这期间是不允许进行查询操作的。 而mysql是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值