fengzf的gravatar头像
fengzf2018-01-11 12:09:38

Spring Cloud微服务架构服务注册与消费实例

运行环境:jdk1.7

    Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

一、创建服务注册中心

创建一个基础的Spring Boot工程,命名为eureka-server,创建步骤请看:

http://www.zuidaima.com/blog/3715921047374848.htm

并在pom.xml中引入需要的依赖内容:

Spring Cloud微服务架构服务注册与消费实例Spring Cloud微服务架构服务注册与消费实例通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的Spring Boot应用中添加这个注解就能开启此功能

Spring Cloud微服务架构服务注册与消费实例在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties配置文件中增加如下信息:

Spring Cloud微服务架构服务注册与消费实例为了与后续要进行注册的服务区分,这里将服务注册中心的端口通过server.port属性设置为1001。启动工程后(直接执行Application中的main方法就行,这里没有tomcat什么事),访问:http://localhost:1001/,可以看到下面的页面,其中还没有发现任何服务。

Spring Cloud微服务架构服务注册与消费实例

二、创建服务提供方

   创建提供服务的客户端,并向服务注册中心注册自己。提供一个接口来获取当前所有的服务信息。

    首先,创建一个基本的Spring Boot应用。命名为eureka-client,在pom.xml中,加入如下配置这里没法一次展示,具体看源码:

Spring Cloud微服务架构服务注册与消费实例其次,实现/dc请求处理接口,通过DiscoveryClient对象,在日志中打印出服务实例的相关内容。

Spring Cloud微服务架构服务注册与消费实例最后在应用主类中通过加上@EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现,这样才能实现Controller中对服务信息的输出。

Spring Cloud微服务架构服务注册与消费实例

application.properties做一些配置工作

Spring Cloud微服务架构服务注册与消费实例通过spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。为了在本机上测试区分服务提供方和服务注册中心,使用server.port属性设置不同的端口。

启动该工程后,再次访问:http://localhost:1001/。

可以如下图内容,我们定义的服务被成功注册了。

Spring Cloud微服务架构服务注册与消费实例

访问:http://localhost:2001/dc,我们可以得到如下输出返回:

Spring Cloud微服务架构服务注册与消费实例Spring Cloud微服务架构服务注册与消费实例

eureka-client就是通过Spring Cloud定义的DiscoveryClient接口在eureka的实现中获取到的所有服务清单。

三、服务消费者

创建一个服务消费者工程,命名为:eureka-consumer。并在pom.xml中引入依赖

Spring Cloud微服务架构服务注册与消费实例配置application.properties,指定eureka注册中心的地址:

Spring Cloud微服务架构服务注册与消费实例创建应用主类。初始化RestTemplate,用来真正发起REST请求。@EnableDiscoveryClient注解用来将当前应用加入到服务治理体系中。Spring Cloud微服务架构服务注册与消费实例创建一个接口用来消费eureka-client提供的接口:Spring Cloud微服务架构服务注册与消费实例

注入了LoadBalancerClient和RestTemplate,并在/consumer接口的实现中,先通过loadBalancerClient的choose函数来负载均衡的选出一个eureka-client的服务实例,这个服务实例的基本信息存储在ServiceInstance中,然后通过这些对象中的信息拼接出访问/dc接口的详细地址,最后再利用RestTemplate对象实现对服务提供者接口的调用。

   在完成了上面你的代码编写之后,将eureka-server、eureka-client、eureka-consumer都启动起来,然后访问http://localhost:2101/consumer ,来跟踪观察eureka-consumer服务是如何消费eureka-client服务的/dc接口的。

Spring Cloud微服务架构服务注册与消费实例Spring Cloud微服务架构服务注册与消费实例

猜你喜欢

打赏

已有2人打赏

最代码伊成的gravatar头像最代码官方的gravatar头像

文件名:源码.rar,文件大小:301.012K下载
  • /
      • /eureka-server
        • /eureka-server/.gitignore
          • /eureka-server/.idea
            • /eureka-server/.idea/compiler.xml
            • /eureka-server/.idea/encodings.xml
              • /eureka-server/.idea/libraries
                • /eureka-server/.idea/libraries/Maven__antlr_antlr_2_7_7.xml
                • /eureka-server/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml
                • /eureka-server/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml
                • /eureka-server/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml
                • /eureka-server/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml
                • /eureka-server/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml
                • /eureka-server/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml
最代码最近下载分享源代码列表最近下载
liusansan1月13日
最代码贡献等级说明
chensha_guo1月13日
暂无贡献等级
Samuel_Soong1月12日
最代码贡献等级说明
yuwenbo1月11日
暂无贡献等级
最代码官方 LV41月11日
最代码贡献等级说明
最代码最近浏览分享源代码列表最近浏览
暂无贡献等级
lobizuidaima8小时前
暂无贡献等级
gvin00111小时前
最代码贡献等级说明
暂无贡献等级
wchq77昨天
暂无贡献等级
LANXICat前天
暂无贡献等级
Knightjie前天
暂无贡献等级
MikuMiku1月21日
最代码贡献等级说明
java_user1月19日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友