前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud-Eureka【服务案例】

SpringCloud-Eureka【服务案例】

作者头像
用户4919348
发布2019-05-30 08:31:42
5300
发布2019-05-30 08:31:42
举报
文章被收录于专栏:波波烤鸭波波烤鸭波波烤鸭

  上篇文章我们介绍了Eureka的集群环境搭建,本文我们来通过Eureka作为注册中心来实现一个案例,案例结构如下

在这里插入图片描述
在这里插入图片描述

一、启动Eureka服务

  在我们部署的Eureka几点上分别指向如下命令,启动Eureka服务

./server.sh start
在这里插入图片描述
在这里插入图片描述

二、构建Provider服务

1.创建SpringBoot项目

在这里插入图片描述
在这里插入图片描述

2.修改pom文件

  添加相关依赖,注意此处添加的Eureka的依赖不需要加"-server"

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>1.4.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3.修改启动类

  在启动类的头部开启Eureka客户端的主键

在这里插入图片描述
在这里插入图片描述

4.添加配置信息

  在application.properties中添加如下的信息

spring.application.name=eureka-provider
server.port=9090

# 设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

注意eureka1和eureka2我们需要在hosts文件中配置映射如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.添加服务

创建pojo

package com.dpb.springcloud_eureka_provider.pojo;

/**
 * @program: springcloud-eureka-provider
 * @description: UserBean
 * @author: 波波烤鸭
 * @create: 2019-05-28 17:31
 */
public class User {
    private int userid;
    private String username;
    private int userage;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getUserage() {
        return userage;
    }

    public void setUserage(int userage) {
        this.userage = userage;
    }

    public User(int userid, String username, int userage) {
        this.userid = userid;
        this.username = username;
        this.userage = userage;
    }

    public User() {
    }
}

创建控制器

/**
 * @program: springcloud-eureka-provider
 * @description: 服务提供者
 * @author: 波波烤鸭
 * @create: 2019-05-28 17:30
 */
@RestController
public class UserController {

    @RequestMapping("/user")
    public List<User> getUsers(){
        List<User> list = new ArrayList<>();
        list.add(new User(1,"zhangsan",20));
        list.add(new User(2,"lisi",22));
        list.add(new User(3,"wangwu",20));
        return list;
    }
}

6.启动服务

  启动服务,在注册中心我们可以看到我们的服务提供者

在这里插入图片描述
在这里插入图片描述

三、构建Consumer服务

  创建服务的消费者,和提供者差不多。

1.创建项目

在这里插入图片描述
在这里插入图片描述

2.pom依赖

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>1.4.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3.启动类

在这里插入图片描述
在这里插入图片描述

4.配置文件

spring.application.name=eureka-consumer
server.port=9091
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

5.完成服务调用

  消费者完成服务端服务的调用

在这里插入图片描述
在这里插入图片描述

service中代码

/**
 * @program: springcloud-eureka-consumer
 * @description: 用户的业务处理
 * @author: 波波烤鸭
 * @create: 2019-05-28 17:43
 */
@Service
public class UserService {

    /**
     * ribbon 负载均衡
     *    LoadBalancerClient 通过服务名称可以获取对应的服务的相关信息 ip port等
     */
    @Autowired
   private LoadBalancerClient loadBalancerClient;

    public List<User> getUsers(){
        // ServiceInstance 封装的有服务的基本信息  IP和端口等
        ServiceInstance si = this.loadBalancerClient.choose("eureka-provider");
        StringBuilder sb = new StringBuilder();
        sb.append("http://")
                .append(si.getHost())
                .append(":")
                .append(si.getPort())
                .append("/user");
        // SpringMVC RestTemplate
        RestTemplate rt = new RestTemplate();
        ParameterizedTypeReference<List<User>> type = new ParameterizedTypeReference<List<User>>() {};
        // ResponseEntity:封装了返回值的信息
        ResponseEntity<List<User>> response = rt.exchange(sb.toString(), HttpMethod.GET,null,type);
        List<User> list = response.getBody();
        return list;
    }
}

接口

说明

LoadBalancerClient

负载均衡器,根据服务名称可以获取对应服务的ip和host等信息

RestTemplate

Rest服务模板,可以完成服务的调用

控制器代码

/**
 * @program: springcloud-eureka-consumer
 * @description: 用户控制器
 * @author: 波波烤鸭
 * @create: 2019-05-28 17:40
 */
@RestController
public class UserController {

    @Autowired
    private UserService userService;
    @RequestMapping("/consumer")
    public List<User> getUsers(){
        return this.userService.getUsers();
    }
}

6.启动服务

  启动服务后我们在eureka注册中心可以发现服务。

在这里插入图片描述
在这里插入图片描述

请求消费者的接口来获取服务提供者提供的数据。

在这里插入图片描述
在这里插入图片描述

案例成功~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、启动Eureka服务
  • 二、构建Provider服务
    • 1.创建SpringBoot项目
      • 2.修改pom文件
        • 3.修改启动类
          • 4.添加配置信息
            • 5.添加服务
              • 6.启动服务
              • 三、构建Consumer服务
                • 1.创建项目
                  • 2.pom依赖
                    • 3.启动类
                      • 4.配置文件
                        • 5.完成服务调用
                          • 6.启动服务
                          相关产品与服务
                          微服务引擎 TSE
                          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档