随着spring的发展我们发现spring提供了越来越多的项目来帮我们简化框架的搭建,使我们站在巨人的肩膀行走,让我们更关注于开发我们的逻辑。随着技术的更替,我们的新项目也逐渐使用了springboot来构建他们,对于老项目来说,有时候现有的架构越来越沉重,慢慢我们就会使用这些新技术慢慢来重构它,它可以帮我们省去很多配置,让我们更迅捷的开发。我们这篇文章讲解的是springcloud,但为什么要先提到springboot呢,因为它是基于springboot的一个项目,它包含了多个子项目,这些子项目融合了现在很多成熟的开源框架,来帮助我们完成我们的设计需要。在开始spring cloud之前我先说一下我遇到的场景。spring boot跟spring cloud这两个项目在我印象中两年前就很火了,然而那时候我们大部分小公司可能用的还是springmvc,spring,mybatis,我们做项目也是采用分布式的方式,通过dubbo跟zookeeper完成服务的注册与发现,随着技术的换代,我们新项目的项目决定使用spring boot来快速构建,项目中不同的业务采用微服务的架构风格使用spring cloud来进行通信调用,当时对于spring boot跟spring cloud的学习也没有应用,在使用新技术搭建项目的过程中萌生了写这篇文章的想法,巩固并记录,虽然有很多这种文章,但也希望我的文章也对你们有一点点的帮助。

  在网上或者一些技术群里经常能看到几个词,soa、分布式、微服务,好多人也会问这些有什么区别。我对于他们的理接,soa是一种面向服务架构的方式,分布式是多个项目分布在不同的物理机上解决单体机构压力过大等一系列问题,微服务强调的是是一种架构风格,早在很早Martin Fowler就发表过一篇关于微服务的博客,他主要强调微服务是一种架构风格,他们之间采用http的轻量级通信,我在网上看到一个中文翻译过的https://www.jianshu.com/p/4821a29fa998,原文https://martinfowler.com/articles/microservices.html。它们之间也不能说完全有区别,但与不能说他们就是一个东西,它们强调的地方不同。这里话不多说,我们来开始使用spring cloud。

  在使用spring cloud的时候我们发现他又很多版本,它不像其他spring的项目版本的命名,它的版本顺序从网上一搜很多介绍,我就不复制过来,还有m、sr等版本就不去介绍了。开始demo之前我们需要先了解一下spring cloud提供的相关组件,Eureka(百度百科):

  由百度百科可以知道Eureka,他是netflix的一个服务发现框架,他被spring cloud整合到自己的项目里,他可以帮助我们完成服务的注册与发现,spring cloud还提供了其他的组建consul,因为spring将他们封装我们只需要添加一个注解将pom文件引入启动器就可以使用,这里我们使用Eureka来写demo,我们先来创建项目,我们可以通过https://start.spring.io/来创建项目导入编辑器,这里我们使用工具直接快速创建,原理还是去访问前面的地址帮我们创建项目:

  打开idea,file-->new-->project

  

  

  

  在我们的主启动类添加注解

  @EnableEurekaServer注解意思代表我们使用Eureka作为服务注册中心,默认情况它会把自己当作服务注册到注册中心,我们需要在配置文件禁用该功能
  
  然后我们启动项目,访问项目地址localhost:8881
  

  访问项目发现现在还没有服务注册在上面,接下来我们创建一个服务的提供者并注册,按照上面的步骤继续创建项目,在主程序添加注解@EnableDiscoveryClient,这个注解的意思是让注册中心发现

  

  配置文件

  

  然后我们编写一个简单的求和方法

  

  这里注意我们写的方法一定是放在主程序包下的,否则访问不到会提示404

  

  启动项目发现服务的提供者已经注册上去了

  

  现在服务的注册中心跟提供者都有了,我们需要在创建一个消费者,消费者调用我们写好的方法,输出结果。这篇文章会介绍几种服务的消费者,先以LoadBalancerClient为例写一个例子,创建一个新项目再主程序上添加注解@EnableDiscoveryClient,并添加文件:

  配置文件:

  

  再创建一个调用的controller

   

  启动访问项目地址:

  

  为什么这么写,这么用先不做介绍,后面的文章会分享为什么这么用,spring cloud做了什么。继续,现在把消费者换成Ribbon

  

  

  

  访问项目

  

  与上面的不同之处在于我们再RestTemplate上添加@LoadBalanced注解,controller只需要写服务的名字就可以调用到服务的提供者,这里简单说一下,我们把RestTemplate添加到容器中的是因为我们要使用spring cloud给我们提供的自动配置,spring boot的很多自动配置类都是***AutoConfiguration,原因在这,我们还是简单说一下,后面的文章再详细介绍,包括我们调用服务只写了服务的名字是因为拦截器帮我们把名称替换成了IP地址加上端口号的形式,它是怎么加上的这些这里先不做解释。下面继续介绍Feign,Feigin也可以帮我们完成我们的功能,当然他还整合了更多的更多功能,我们先来试一下Feign的使用

  配置文件:

  

  主程序:

  创建一个controller跟service

 

  

  访问项目

  

  发现这样写就跟我们用dubbo差不多,通过注入服务的方法就能调用,这里面要注意的地方是你写的这个接口里的方法里面传的参数一定要指定参数名,否则启动项目会报一个错误

  

  如果不指定参数也会报错

  

  关于spring cloud服务的发现注册的使用就简单讲到这里,文章可以帮助没有了解spring cloud的新手上路,让你简单了解他如何使用,集中组件在写demo的时候你会发现什么样的更适合你,实际应用还需要更深入的了解我们所使用的组件。对于技术的学习我个人的习惯是先简单使用,再深化。文章只是对spring cloud组件的简单使用,在写过的demo中会发现spring cloud提供了很多组件来帮我们完成同样的事情,在我们实际应用中应该如何选择,这就是我们逐渐对组件深化的过程,然后看一下spring cloud做了什么,为什么需要我们这么使用,这就是我在了解一个技术的过程。文章的最后还是想说,虽然文章很简单,但也会存在很多不足的地方,希望大家不吝指教。

springcloud使用之服务的注册发现与消费的更多相关文章

  1. SpringCloud服务的注册发现--------Eureka

    1,什么叫做服务的注册与发现 服务的注册与发现基于注册中心,注册中心本身是一个服务,也相当于一个载体,其他服务的注册需要注册到这个注册中心上. 注册:当服务器启动的时候,会将自己的服务器信息,通过别名 ...

  2. SpringCloud服务的注册发现--------zookeeper实现服务与发现 + Ribbon实现客户端负载均衡

    1,Eureka 闭源了,但是我们可以通过zookeeper实现注册中心的功能. zookeeper 是一个分布式协调工具,可以实现服务的注册和发现,配置中心,注册中心,消息中间件的功能 2,工具准备 ...

  3. SpringCloud服务的注册发现--------Eureka自我保护机制

    1,Eureka 自我保护机制 Eureka注册中心,一些服务会注册到Eureka 服务器上,例如之前的member服务,order服务. 在网络不通的情况下,如果一个bmember 挂了,但是Eur ...

  4. SpringCloud服务的注册发现--------Eureka实现高可用

    1,Eureka作为注册中心,掌管者服务治理的功能,十分重要,如果注册中心的服务一旦宕机,所有的服务就会挂了,为此,实现注册中心的集群(高可用)就显得十分必要了 2,Eureka 搭建集群 实现原理就 ...

  5. 使用Apache Mesos和Consul实现服务的注册发现

    为保证基于Docker应用程序和服务都具有高性能和可用性,设计出一种具有服务发现,高可用性和容错能力的解决方案非常重要. 我们使用Apache Mesos 和Mesosphere的 Marathon实 ...

  6. SpringCloud服务的注册发现--------consul实现服务与发现

    1,consul也可以替代Eureka实现注册和发现的功能,即注册中心. 之前在linux环境通过consul + upsync + nginx 实现nginx 的动态负载均衡 https://www ...

  7. Nacos配置中心和服务的注册发现

    在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用.Nacos既可以做配置中心,也可以做注册中心.我们先来看看在项目中如何使用Nacos做配置中心. Nac ...

  8. springcloud如何实现服务的注册?

    1.服务发布时,指定对应的服务名,将服务注册到 注册中心(eureka zookeeper)2.注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然 ...

  9. SpringCloud教程 | 第一篇: 服务的注册与发现

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

随机推荐

  1. yii2 oracle 原生sql分页

    $sql_list = "SELECT ID, FID, INSID, FLIGHTNO, DEPNAME, ARRNAME, to_char(DEPDATE,'yyyy-MM-dd HH2 ...

  2. 基于C+OpenCV4.0的LineSegmentDetector算法实现

    简单记录LSD算法的实现过程,当做备忘录用,如有问题欢迎指出和讨论 LSD的基本实现流程是计算出图像的梯度和场方向,然后对梯度进行排序,然后从大到小进行区域增长,之后对增长得到的区域求最小外接矩形,如 ...

  3. B/S大附件上传,支持断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  4. P1071 潜伏者

    //Pro:NOIP2009 T1 P1071 潜伏者 #include<iostream> #include<cstdio> #include<cstring> ...

  5. 59、Spark Streaming与Spark SQL结合使用之top3热门商品实时统计案例

    一.top3热门商品实时统计案例 1.概述 Spark Streaming最强大的地方在于,可以与Spark Core.Spark SQL整合使用,之前已经通过transform.foreachRDD ...

  6. 去除空格JS

    $(document).ready(function (){//通用方法去输入框前后空格 $("form").on("change",function () { ...

  7. DIV块中 元素垂直居中

    1 DIV块中 元素垂直居中 作者:知乎用户链接:https://www.zhihu.com/question/20543196/answer/99429177来源:知乎著作权归作者所有.商业转载请联 ...

  8. 微信小程序之数据缓存

    关于缓存,举个示例,假定我不是通过微信授权登录的方式,小程序又是如何识别我登录后的身份呢???效果图: 这个功能我是通过缓存实现的. 关键核心代码如下: wx.setStorage({ key: 'u ...

  9. Vue简单归纳

    目录 Vue.JS Vue.JS介绍 概述 MVVM模式 示例图 快速入门 事件绑定 什么是事件 单击事件绑定 键盘事件 按键修饰符 鼠标事件 事件修饰符 数据绑定 插值 v-text v-bind ...

  10. 解决'python -m pip install --upgrade pip' 报错问题

    再安装包的时候提示 You are using pip version 9.0.3, however version 10.0.1 is available.You should consider u ...