带着新人学springboot的应用12(springboot+Dubbo+Zookeeper 下)
上半节已经下载好了Zookeeper,以及新建了两个应用provider和consumer,这一节我们就结合dubbo来测试一下分布式可不可以用。
现在就来简单用一下,注意:这里只是涉及最简单的部分,新手入门用的,详细的内容要学习的可以自己查一查资料;然后再说说用Zookeeper当作注册中心的一个特点。
话说注册中心是一个类似第三方软件的东西,那么我们能不能用Dubbo+其他注册中心呢?其实也是可以的,比如redis,有兴趣的可以查查资料自己试试,原理都差不多。
1.导入依赖
两个模块都要导入这两个依赖(这两个依赖千万要正确,我就是因为自己导入依赖导错了,愣是找了好几个小时最后才发现是依赖的问题,我导入的组id是com.alibaba.spring.boot,太像了....细节细节!!!)

这里有一些版本问题,我去官方文档截了一下图,版本问题我也碰到了,还是官方文档靠谱!还有具体的版本对应我也截图了,可以看看。


2.provider模块新建一个服务
说是创建一个服务,其实就是新建一个service层的接口,写个实现
目录结构以及接口+实现



配置文件稍微配置一下,其实就是配置自己服务在哪里,还有Zookeeper的位置及端口(Zookeeper可以是在其他电脑或者虚拟机里),其实还能配置很多东西,这里列举最简单最实用的几个;

可以尝试启动一下,没报错说明服务提供者完成!(那个Zookeeper服务端一定要开着)
3.consumer模块消费服务
说是消费服务,其实就是写个controller,注入service接口,调用方法
看看consumer的目录结构和controller内容



简单配置一下配置文件:

4.测试
首先保证Zookeeper服务端一直开着,然后运行服务提供者应用,然后再运行服务消费者应用,再到浏览器输入url,结果如下:(应该打印服务提供者才对,消息方面的东西看多了都打错字了,问题不大,嘿嘿!)

5.简要说说Zookeeper作为注册中心的特点
服务注册中心在分布式系统会大量运用,是分布式系统不可或缺的组件。
有需求就有利益,有利益就会有动力!正是因为服务注册中心这么重要,所以很多公司都注重这方面的研发,咳,比如rocketmq的NameServer,hdfs的Namenode,dubbo的Zookeeper,spring cloud的eureka,Consul等等。。
其中,对于这两个:dubbo的Zookeeper,spring cloud的eureka之间,以及Dubbo和Spring Cloud之间哪种比较好的各种争论,可谓是太多太多,各有各的说法,每个人都能举出一大堆理论,对于我们来说,其实无所谓的,跟我们关系不大;就像问你hibernate和mybatis哪个好啊?只能说各有利弊吧!
不扯这么远了,说一个分布式系统的原理CAP:
绝大部分的分布式系统都会满足一个叫做CAP理论的东西(当然也有很多争议,暂且不提)
C(Consistency):数据一致性,例如多台服务器中对于存的同一用户的数据要一致
A(Availability):可用性,无论怎么了你都能访问这个系统;例如其中一台或几台服务器挂掉了,你还是能够正常使用,服务器会响应成功(可能响应的是更新之前的数据),而不是一直在阻塞,这点比较关键
P(Partition Tolerance):分区容错性,就是当用户在一台服务器修改了自己的数据,但是由于网络等问题,还没有来得及同步到其他的服务器,于是就产生了分区;怎样解决分区问题是分布式系统不可避免的问题。
而我们说的Zookeeper选的是CP,而spring cloud的eureka选的是AP,那么,到底是选CP好还是AP好呢?
不好说,只能是看什么需求;
选P:选了这个才能支持分布式,才能进行横向扩展。
选C:注重一致性,那就是要在多台服务器上数据要一致,假如服务器同步数据的时候断网了,那么你就要一直等待了,直至同步成功;典型的是银行转账系统,这对数据的一致性是十分苛刻的,一点都不能让步,如果出错,宁可停止服务;
选A:注重可用性,例如你更新自己的数据,然后服务器之间同步数据的时候断网了;那么你再查询,查询的可能还是原来更新之前的数据,等待服务器数据同步完成你才会查询到最新数据; 互联网公司用这个比较多,即使向用户响应更新之前的数据也总比让用户一直等待要好得多。
可见,没有什么好不好,只有适不适合你的需求。
现在有个大概的了解就好,而且后面我可能会慢慢说说这两个分布式框架Dubbo和Spring Cloud,话说这两个分布式框架的争论随便查一下都有很多,千万不要陷入其中,重要的我们学到了什么东西!
Dubbo是阿里巴巴内部开发并使用,然后开源的一个很厉害的分布式框架,再加上很多阿里的人出来在其他公司工作推行了Dubbo的使用,虽然停止更新一段时间17年又恢复更新了,但是在国内估计还是基于Dubbo的分布式系统占主流吧!(是不是主流我也不知道是不是,道听途说而已)。
而Spring Cloud是Spring家族的一个分布式框架,里面功能十分健全,可以说是一站式框架了,在国外的话估计名气比Dubbo高。
要使用Dubbo还是Spring Cloud,看需要吧!孰好孰坏也不是我们该担心的,ok,就到这里吧!
下一节说说Spring Cloud + eureka简单用用分布式系统,入门一下!
带着新人学springboot的应用12(springboot+Dubbo+Zookeeper 下)的更多相关文章
- 带着新人学springboot的应用01(springboot+mybatis+缓存 上)
上一篇结束,第一次做一个这么长的系列,很多东西我也是没有说到,也许是还没有想到,哈哈哈,不过基本的东西还是说的差不多了的.假如以后碰到了不会的,随便查查资料配置一下就ok. 咳,还有大家如果把我前面的 ...
- 带着新人学springboot的应用04(springboot+mybatis+redis 完)
对于缓存也说了比较多了,大家对下图这一堆配置类现在应该有些很粗略的认识了(因为我也就很粗略的认识了一下,哈哈!),咳,那么我们怎么切换这个缓存呢?(就是不用springboot提供的默认的Simple ...
- 带着新人学springboot的应用07(springboot+RabbitMQ 下)
说一两句废话,强烈推荐各位小伙伴空闲时候也可以写写自己的博客!不管水平高低,不管写的怎么样,不要觉得写不好或者水平不够就不写了(咳,我以前就是这样的想法...自我反省!). 但是开始写博客之后,你会发 ...
- 带着新人学springboot的应用13(springboot+热部署)
spring cloud我想做成一个系列,所以spring cloud+eureka后面会慢慢说到的,有兴趣的小伙伴可以关注后续! 这一节就简单说说springboot的热部署了(我一直想不通为什么叫 ...
- 带着新人学springboot的应用11(springboot+Dubbo+Zookeeper 上)
这次说个在大型项目比较常见的东西,就是分布式,分布式到底是个什么东西呢?概念太大,不好说,就像刚学javaee的人问你,什么是web啊,什么是spring啊等等,你可能觉得,这个东西我好像知道,但是用 ...
- 带着新人学springboot的应用10(springboot+定时任务+发邮件)
接上一节,环境一样,这次来说另外两个任务,一个是定时任务,一个是发邮件. 1.定时任务 定时任务可以设置精确到秒的准确时间去自动执行方法. 我要一个程序每一秒钟说一句:java小新人最帅 于是,我就写 ...
- 带着新人学springboot的应用09(springboot+异步任务)
本来想说说检索的,不过不知道什么鬼,下载ElasticSearch太慢了,还是放一下,后面有机会再补上!今天就说个简单的东西,来说说任务. 什么叫做任务呢?其实就是类中实现了一个什么功能的方法.常见的 ...
- 带着新人学springboot的应用08(springboot+jpa的整合)
这一节的内容比较简单,是springboot和jpa的简单整合,jpa默认使用hibernate,所以本质就是springboot和hibernate的整合. 说实话,听别人都说spring data ...
- 带着新人学springboot的应用06(springboot+RabbitMQ 中)
上一节说了这么多废话,看也看烦了,现在我们就来用鼠标点点点,来简单玩一下这个RabbitMQ. 注意:这一节还是不用敲什么代码,因为上一节我们设置了那个可视化工具,我们先用用可视化工具熟悉一下流程. ...
随机推荐
- Metasploit中aggregator插件无法使用
Metasploit中aggregator插件无法使用 aggregator是Metasploit自带的一个插件,用来管理会话Session.该插件使用metasploit-aggreator库. ...
- 页面跳转之session
题意:设主页为index.jsp 通过session将index.jsp中的信息传送给结果页面result.jsp.(其实,session的生命周期是整个服务器开启过程,具体不做详细介绍).这个 其实 ...
- WebBrowser加载一个URL被多次调用DocumentCompleted 的问题解决方案<转>
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况. 1.Web ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习8
#include <iostream> #include <fstream> #include <cstdlib> const int SIZE=20; using ...
- Oracle事务与锁 知识点摘记
事务:事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功要么全部失败. 说明:一组SQL,一个逻辑工作单位,执行整体修改或者整体回退. 事务的相关概念: 1.事务的提 ...
- Tomcat手动部署Web项目详细步骤
阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...
- 常见的UI框架
移动端框架 1.Admui 管理系统快速开发框架--http://docs.admui.com/ 为什么选择Admui?代码开源--开放所有源码,不存在任何加密混淆代码,安全全程可控,开箱即用--包含 ...
- [LeetCode] Shifting Letters 漂移字母
We have a string S of lowercase letters, and an integer array shifts. Call the shift of a letter, th ...
- python Ajax
Ajax一.准备知识JSON1.什么是json JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSO ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
还是先上图吧,无图无真相 别以为真懂Openstack!先别着急骂我,我也没有说我真懂Openstack 我其实很想弄懂Openstack,然而从哪里下手呢?作为程序员,第一个想法当然是代码,Code ...