带着新人学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简单用用分布式系统,入门一下!

原文地址:https://www.cnblogs.com/wyq1995/p/10093877.html

时间: 2024-11-04 01:32:41

带着新人学springboot的应用12(springboot+Dubbo+Zookeeper 下)的相关文章

带着新人学springboot的应用07(springboot+RabbitMQ 下)

说一两句废话,强烈推荐各位小伙伴空闲时候也可以写写自己的博客!不管水平高低,不管写的怎么样,不要觉得写不好或者水平不够就不写了(咳,我以前就是这样的想法...自我反省!). 但是开始写博客之后,你会发现很多你以为自己会的东西其实你并不会,然后你会经常在头脑中不断的搜索有关的片段,或者去别的大神博客里到处找有关的资料,最后领悟了属于自己的东西!然后再写出来和别人分享,别人也会给你点意见,你也会慢慢的改进.这不就是学习+复习+巩固+创新+分享+改进的这么的一个过程吗? 以前看过曹雪芹的红楼梦,让我印

带着新人学springboot的应用01(springboot+mybatis+缓存 中)

继续接着上一节,大家应该知道驼峰命名法吧!就是我们javabean中属性一般命名是lastName,userName这种类型的,而数据库中列名一般都是last_name,user_name这种的,要让对应起来,在springboot中可以设置 另外大家可以看看我们用了mybatis依赖之后,导入了一些什么jar包,比较关键的是那个autoconfigure,其实内部就跟之前我们手写的那个starter原理差不多 我们也可以用xxxCustomizer来定制功能,以上面的驼峰命名为例,就可以使用这

带着新人学springboot的应用01(springboot+mybatis+缓存 下)

springboot+mybatis+缓存,基本的用法想必是会了,现在说一说内部大概的原理. 稍微提一下mybatis,只要导入了mybatis的依赖,那么有个自动配置类就会生效,你可以去mybatis的jar包里面的META-INF/spring.factories中看到这个xxxAutoConfiguration,就如下图所示,这个应该很熟悉了,所以我们要看看mybatis的配置,肯定要看这个类. 开这个类,看到这里 看了看,其他的没什么说的,要看看在yml给mybatis可以配置哪些参数,

带着新人学springboot的应用05(springboot+RabbitMQ 上)

这次就来说说RabbitMQ,这个应该不陌生了,随便一查就知道这个是用来做消息队列的.(注意:这一节很多都是概念的东西,需要操作的比较少) 至于AMQP协议(Advanced Message Queuing Protocol),专业名称叫做高级消息队列协议,就是只要你遵守这个协议,那么做出来的产品就能跨平台,跨语言,很牛的一个协议,具体多么牛可以自己百度一下. 而RabbitMQ就是基于这个协议的!很多语言都可以用RabbitMQ,例如python,C语言,PHP,Java等语言,而且windo

带着新人学springboot的应用06(springboot+RabbitMQ 中)

上一节说了这么多废话,看也看烦了,现在我们就来用鼠标点点点,来简单玩一下这个RabbitMQ. 注意:这一节还是不用敲什么代码,因为上一节我们设置了那个可视化工具,我们先用用可视化工具熟悉一下流程. 打开可视化页面,http://localhost:15672 顺便说一下RabbitMQ中的持持久化:这里持久化分为三种:消息持久化,交换器持久化,队列持久化... 举个例子,就简单说说交换器持久化,其实就是为了防止将消息发到交换器了,但是RabbitMQ服务器突然暴毙,没用了,那数据不就丧失了么?

带着新人学springboot的应用09(springboot+异步任务)

本来想说说检索的,不过不知道什么鬼,下载ElasticSearch太慢了,还是放一下,后面有机会再补上!今天就说个简单的东西,来说说任务. 什么叫做任务呢?其实就是类中实现了一个什么功能的方法.常见的任务就是异步任务,定时任务,发邮件. 异步任务:其实就是一个很特别的方法,这个方法没有返回值(也可以有返回值,后面会说的),但是方法内部的逻辑会耗费很多时间!例如,用户请求每次到controller,要执行到这个异步方法的时候,我们只需要命令一个空闲状态的线程去执行它即可,由于没有返回值不影响后续代

带着新人学springboot的应用13(springboot+热部署)

spring cloud我想做成一个系列,所以spring cloud+eureka后面会慢慢说到的,有兴趣的小伙伴可以关注后续! 这一节就简单说说springboot的热部署了(我一直想不通为什么叫做热部署,看到这名字就吓退了我继续学习的欲望!),但是实际上可以把这个看成是一个小技巧. 就是导入一个依赖,要用的时候,就是快捷键操作:Ctrl+F9 有什么用呢?就是避免你每次对springboot修改一点东西,就要重新启动springboot应用,贼麻烦!而且对于电脑性能不怎么样的小伙伴来说(咳

私营公司所得税新优惠明确:低于12万减半征收

合肥市政工作人员昨日发布消息称,今年起将享受减半征收公司所得税优惠政策的小型微利公司范围由年应纳税所得额低于12万元(含12万元)扩大到20万元(含20万元),享受所得减按60%计入应纳税所得额,按20%的税率缴纳公司所得税的优惠政策. 同日,在博鳌亚洲论坛2014年年会上发布的<私营金融发展报告2014>指出,仅63.1%的参访公司表示享受到私营公司税收优惠政策,也就是去年8月1日起推行的私营公司中月销售额不超过2万元的增值税小规模纳税人和营业税纳税人,可以享受暂免征收增值税和营业税的政策福

springboot系列一、springboot产生背景及介绍

一.为什么用Springboot 长期以来 Java 的开发一直让人所诟病: ·Java 项目开发复杂度极其高: · Java 项目的维护非常困难: · 在云时代如何实现项目的快速部署以及快速启动: · 即便使用了大量的开发框架,发现我们的开发也没少多少: · 当所有的人认为 Spring 不在前进的时候,Spring 推出了微架构实现的两个重要开发框架:SpringBoot.SpringCloud. 但是如果要想在 Spring 之中整合 RabbitMQ.Kafka.ActiveMQ.MyS