搭建简单的Eurake服务学习笔记

搭建简单的Eurake服务学习笔记搭建简单的Eureka服务简单介绍Eureka原理:Eureka集群主要有三个部分Eureka服务器,服务提供者,服务调用者简单的来说就是服务提供者将服务注册到Eureka服务器,服务调用者对其服务进行查找调用。搭建三个项目:创建三个SpringStarterProject类型的项目:[外链图片转存失败(img-aVuiN1EV-1563345334382)(file://…

大家好,又见面了,我是你们的朋友全栈君。

搭建简单的Eureka服务

简单介绍Eureka原理:

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

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

搭建三个项目:

  • 创建三个Spring Starter Project类型的项目:

在这里插入图片描述

  • 搭建Eurake服务器:

这个项目用来提供给服务提供者和服务调用者注册的地方。

对于服务注册中心,我们需要引入EurakeServer组件,在pom.xml中就需要有以下依赖:

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

然后我们还需要进行下面的配置,虽然我们已经引入了EurakeServer 组件,但我们还需要启用它,编写服务启动类的时候(也就是main方法启动spring boot)要通过@EnableEurekaServer去启用Eurake(后面很多组件也需要类似的方式去启用):

package com.example.demoeureka1;

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

@SpringBootApplication
@EnableEurekaServer //启动服务注册中心
public class DemoEureka1Application {

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

接下来在resources/application.yml中添加如下配置,设置服务器端口以及相关信息:

#更改端口为8761
server:
  port: 8761      
eureka:
  client:
 #该应用为注册中心,是否将自己注册到注册中心,默认为true,false代表不向注册中心注册自己
    register-with-eureka: false
     #设置与EurekaServer 交互的地址,查询服务和注册服务都依赖这个地址    
    service-url:
       defaultZone: http://localhost:8761/eureka
 #表示是否从EurekaServer获取注册信息,默认为true,表示需要从其他server同步信息
    fetch-registry: false

现在,一个简单的Eurake服务器已经写好了~ 启动服务,打开http://localhost:8761/ 我们能看见Eurake服务器控制台, 但还没有服务注册进来:
在这里插入图片描述

  • 搭建Eurake服务提供者:

这个项目用来编写和提供一个个的应用服务组件给服务调用者调用,它需要在上边的注册中心注册。

对于服务提供者,将服务器的spring-cloud-starter-eureka-server依赖改为spring-cloud-starter-eureka即可:

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

然后编写启动类,main方法启动和服务器的一样 new SpringApplicationBuilder(XXX(启动类类名).class).web(true).run(args),服务提供者同样要在启动类上边加上@EnableEurekaClient注解:

@SpringBootApplication
@EnableEurekaClient
public class DemoEureka1TwoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoEureka1TwoApplication.class, args);
	}
}

下面再编写一个实体类police和PoliceController,有人报警则派出一个警察,相当于警察局:

@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);
    }
}

在resources/application.yml中添加如下相应的配置,需要将服务提供者注册到Eureka服务器上,服务器的端口设置的8761:

#应用端口号为8080
server:
  port: 8080
  #服务名称
spring:
  application:
    name: first-police 
#注册到注册中心
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
  • 搭建Eurake服务调用者:

这个项目用来调用服务提供者的服务组件,它也是需要在注册中心注册。

对于服务调用者,需要在服务提供者的基础上再加入负载均衡相关的依赖:

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

先编写启动类,除了类名,这里写的跟上边服务提供者的启动类一模一样。

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

@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);
    }
}

同样在resources/application.yml中添加如下相应的配置,也需要注册到服务器。上面的服务提供者设置端口是8080(不设置的话默认就是8080),现在将调用者端口设置8081,否则启动会出错:

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

依次启动项目:

依次启动服务注册中心,服务提提供者和服务调用者。访问Eureka控制台就可以看到注册进去的first-police(服务提供者)和first-person(服务调用者),表示两个已经在注册中心注册成功:
在这里插入图片描述
最后访问http://localhost:8081/call/id,页面就会返回某个police的josn信息:

服务调用者。访问Eureka控制台就可以看到注册进去的first-police(服务提供者)和first-person(服务调用者),表示两个已经在注册中心注册成功:

[外链图片转存中…(img-H1UohP8T-1563345334382)]

最后访问http://localhost:8081/call/id,页面就会返回某个police的josn信息:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141896.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 低延迟视频传输_网络延时

    低延迟视频传输_网络延时微信后台如何应对像跨年,特殊时刻(比如2022年2月22日22时22分22秒)这样的朋友圈突发流量,可做如下策略(只是比如):优先让发一张图片的成功。九宫格只成功一部分,剩余的强有损压缩。朋友多的优先成功。(也可以反过来)设置三天可见的优先成功。(也可以反过来)年轻女性优先成功。(这个没毛病)历史点赞多的优先成功。(也可以反过来)头像穿西装打领带的经理统统失败。…在不影响P99用户体验的前提下,提供有损服务,保证核心可用性,这就是柔性。但数据传输的思维定势并不认可柔性。受TCP的影

  • 我用Python采集了班花的空间数据集,除了美照竟然再一次发现了她另外的秘密![通俗易懂]

    大家好,我是辣条。室友知道了我上次给班花修过电脑,追了我三条街,嘴里大骂我不当人子,怪我这种事情没带他。最后又舔着脸求我支招,这货竟然想追班花!辣条我为了兄弟两(收)肋(钱)插(办)刀(事),毫不犹豫的答应了。但是我只有班花的QQ和微信怎么办呢,那就从她平时发的动态着手,于是就有了这篇文章,不过最后我又发现了她的另一秘密!采集数据目标网址:QQ空间工具使用开发环境:win10、python3.7开发工具:pycharm、Chrome工具包:selenium,re,time.

  • 1677个高频单词_3500高频词汇表

    1677个高频单词_3500高频词汇表给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 “i” 在 “love” 之前。 示例 2:输入: [“the”, “day”, “is

  • 矩阵秩和伴随矩阵秩的关系「建议收藏」

    矩阵秩和伴随矩阵秩的关系「建议收藏」

  • pycharm创建python虚拟环境好处_pycharm虚拟环境与本地环境区别

    pycharm创建python虚拟环境好处_pycharm虚拟环境与本地环境区别提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、虚拟环境的作用二、虚拟环境的创建、查看以及删除1.虚拟环境的创建2.虚拟环境的查看3.虚拟环境的激活4.虚拟环境的删除总结前言网上的大多数教程都是通过使用第三方模块来创建和删除虚拟环境,对新手很不友好,在这里分享一下我使用Pycharm创建虚拟环境的过程。一、虚拟环境的作用每个虚拟环境中安装的第三方模块不会与其它环境中同名的第三方模块发生版本冲突,每个虚拟环境之间互不影响。通过为每个项目创建单独的虚拟环境

    2022年10月26日
  • 2019年日历假期添加

    2019年日历假期添加

    2021年11月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号