搭建一个简单的Eureka程序

Eureka集群主要有三个部分Eureka服务器,服务提供者,服务调用者

简单的来说就是服务提供者将服务注册到Eureka服务器,服务调用者对其服务进行查找调用。

Eureka服务程序的搭建可参考官方文档:http://cloud.spring.io/spring-cloud-static/Dalston.SR5/multi/multi_spring-cloud.html

Eureka架构图:

使用IDEA分模块搭建三个工程Eureka服务器(server),服务提供者(police),服务调用者(person)

一.搭建服务器

1.引入maven依赖,使用官方文档中的依赖的结果还是启动不起来,缺少日志相关的依赖,另外自己添加了几个依赖后就OK了

 <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>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.persistence</groupId>
      <artifactId>persistence-api</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <artifactId>slf4j-api</artifactId>
      <groupId>org.slf4j</groupId>
      <version>1.7.10</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
      <exclusions>
        <exclusion>
          <artifactId>slf4j-api</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>

  </dependencies>

因为Spring cloud集成了很多项目。所以引入spring-cloud-starter-eureka-server就相当于引入了spring-boot-starter-web等,就具有了web容器的功能了。

2.配置yml文件:设置服务器端口以及相关信息(在文档中都可以找到相关配置)

server:
  port: 8761 #更改端口为8761
eureka:
  client:
    register-with-eureka: false #服务器不用注册到其他服务器
    fetch-registry: false #服务器不用去服务器抓取注册信息

3.编写服务启动类,也就是main方法启动spring boot,注意使用@EnableEurekaServer注解

package com.nijunyang;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class ServerApp {
    public static void main(String[] args){
        new SpringApplicationBuilder(ServerApp.class).web(true).run(args);
    }
}

启动之后访问http://localhost:8761/就可以看到Eureka服务器控制台。

二.服务提供者(警察局)

1.maven依赖将服务器的spring-cloud-starter-eureka-server依赖改为spring-cloud-starter-eureka即可

2.yml配置文件:需要将服务提供者注册到Eureka服务器上,服务器的端口设置的8761

server:
  port: 8080
spring:
  application:
    name: first-police  #服务提供者名字
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/  #注册到服务器

3.编写一个实体类police和PoliceController,有人报警则派出一个警察

package com.nijunyang;

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PoliceController {
    @RequestMapping(value = "/call/{id}",method = RequestMethod.GET,
    produces = MediaType.APPLICATION_JSON_VALUE)
    public Police call(@PathVariable Integer id){
        Police police = new Police();
        police.setId(id);
        police.setName("zhangsan");
        return police;
    }
}

4.该模块的启动类,main方法启动和服务器的一样  new SpringApplicationBuilder(XXX(启动类类名).class).web(true).run(args);

三.服务调用者(报警)

1.maveny依赖:在服务提供者的基础上再加入负载均衡(后续了解)相关的依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>

2.yml配置:同样需要注册到服务器,上面的服务提供者由于没有设置端口所以默认是8080,现在将调用者端口设置8081,否则启动会出错

server:
  port: 8081 #更改端口为8081
spring:
  application:
    name: first-person
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/  #注册到服务器

3.编写PersonController,需要新加@Configuration注解,以及配置RestTemplate,RestTemplate本来是spring-web下面的类用来调用REST服务。本身不具备调用分布式服务的能力,但是被@LoadBalanced修饰后就具有访问分布式服务的能力了(具体涉及负载均衡,后续深入了解)。因为是注册到Eureka服务器的,所以我在内部请求的时候只需要转到相应的服务提供者就可以了:http://first-police/xxx

package com.nijunyang;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;

@Controller
@Configuration
public class PersonController {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
    @GetMapping(value = "/call/{id}")
    @ResponseBody
    public String call(@PathVariable Integer id){
        RestTemplate restTemplate = getRestTemplate();
        return restTemplate.getForObject("http://first-police/call/" + id ,String.class);
    }
}

4.不多说,启动类编写

依次启动服务,服务提提供者和服务调用者。访问Eureka控制台就可以看到注册进去的first-police和first-person

访问http://localhost:8081/call/id,页面就会返回某个police的josn信息

原文地址:https://www.cnblogs.com/nijunyang/p/9119687.html

时间: 2024-10-24 18:49:09

搭建一个简单的Eureka程序的相关文章

使用 Nodejs 搭建一个简单的Web服务器

使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向问题,下面我们就简单讲一下如何来搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容 3.显示图片资源 4.自动下载以.apk/.

【转】使用webmagic搭建一个简单的爬虫

[转]使用webmagic搭建一个简单的爬虫 刚刚接触爬虫,听说webmagic很不错,于是就了解了一下. webmagic的是一个无须配置.便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫. 这句话说的真的一点都不假,像我这样什么都不懂的人直接下载部署,看了看可以调用的方法,马上就写出了第一个爬虫小程序. 以下是我学习的过程: 首先需要下载jar:http://webmagic.io/download.html 部署好后就建一个class继承PageProcesso

利用JSP编程技术实现一个简单的购物车程序

实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP中数据库编程方法: 二.实验要求 : 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息. (2)编写一个JSP程序来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,采用J

一个简单的Qt程序分析

本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNA

通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与

一个简单的Java程序

一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之旅吧! 建立一个Java项目,建立一个属于自己的包,然后就开始自己的Java之旅... 创建的时候勾上这个生成main方法的选项,这个好像类似与我们.Net程序里控制台程序有木有.... 创建完成后就是这么一个样子,可以看到我们的包,还有给我们创建好自己的类,并且带了一个静态的main方法咋看就像.

理解计算机的工作方式——通过汇编一个简单的C程序并分析汇编代码

Author: 翁超平 Notice:原创作品转载请注明出处 See also:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  本文通过汇编一个简单的C程序,并分析汇编代码,来理解计算机是如何工作的.整个过程都在实验楼上完成,感兴趣的读者可以通过上面给出的课程链接自行动手学习.以下是实验过程和结果. 一.操作步骤 1.首先在通过vim程序建立main.c文件.代码如下: 图1 2.使用如下命令将main.c编

用nodejs搭建一个简单的服务器

使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安装成功 [常用命令] 切换盘符 d:进入文件夹 cd nodejs返回上一级目录 cd..清屏 cls展示目录 dir复制文件名 选中右键--复制历史操作 上箭头 执行文件 node 文件名(在文件文件夹目录中)停止命令行 ctrl+c nodejs可以使用的ECMAScript.读写文件.数据库操

1.一个简单的OpenGL程序

一.OpenGL介绍 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的. 如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单. 2.强大的可移植性. 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机). 而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机.各种专