什么是Eureka

  • Eureka服务发现
    • 拓扑图
  • 入门Demo
    • microservice-eureka-server
    • 配置
    • 启动类
    • 效果
    • microservice-provider-user
    • 依赖
    • 配置
    • 实体类
    • 服务层
    • 控制层
    • 启动类
    • 效果
    • microservice-consumer-user
    • 配置
    • 实体类
    • 控制层
    • 启动类
    • 效果

Eureka服务发现

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

拓扑图

入门Demo

microservice-eureka-server

<spring-cloud.version>Hoxton.SR1</spring-cloud.version>

配置

server:port: 8761
eureka:client:
#要不要去注册中心获取其他服务的地址fetch-registry: false
#自己就是注册中心,不用注册自己register-with-eureka: false

启动类

package com.xxx.proj.eurekaserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}}

效果

microservice-provider-user

依赖

springboot的版本号
<version>2.2.4.RELEASE</version>
springcloud的版本号
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>

配置

server:port: 8000
spring:application:name: microservice-provider-userjpa:show-sql: truedatasource:url: jdbc:mysql:///test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMTdriver-class-name: com.mysql.jdbc.Driverusername: rootpassword:
eureka:instance:prefer-ip-address: true

实体类

package com.xxx.proj.eurekaprovider.entity;import lombok.Getter;
import lombok.Setter;
import lombok.ToString;import javax.persistence.*;@Entity
@Table(name = "tb_user")
@Getter
@Setter
@ToString
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;private String username;private String password;
}

服务层

package com.xxx.proj.eurekaprovider.dao;import com.xxx.proj.eurekaprovider.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;public interface UserDao extends JpaRepository<User, Integer> {}

控制层

package com.xxx.proj.eurekaprovider.controller;import com.xxx.proj.eurekaprovider.dao.UserDao;
import com.xxx.proj.eurekaprovider.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Optional;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserDao dao;@RequestMapping("/findById/{id}")public User findById(@PathVariable("id") Integer id) {Optional<User> optional = dao.findById(id);if (optional.isPresent()) return optional.get();else return null;}
}

启动类

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

效果

microservice-consumer-user

配置

server:port: 8010
spring:application:name: micro-consumer-user
eureka:instance:prefer-ip-address: true

实体类

package com.xxx.proj.eurekaconsumer.entity;import lombok.Getter;
import lombok.Setter;
import lombok.ToString;@ToString
@Getter
@Setter
public class User {private Integer id;private String username;private String password;
}

控制层

package com.xxx.proj.eurekaconsumer.controller;import com.xxx.proj.eurekaconsumer.entity.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/{id}")public User getOne(@PathVariable("id") Integer id) {RestTemplate restTemplate = new RestTemplate();return restTemplate.getForObject("http://localhost:8000/user/findById/" + id, User.class);}
}

启动类

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

效果

Eureke服务入门就这一篇就够了相关推荐

  1. Docker入门实战看这篇就够了(最新详细以及踩过的坑)

    Docker入门实战看这篇就够了 前言 初识 是什么 容器与虚拟机 能干什么 去哪玩 安装 先决条件 查看自己的内核 安装所需的软件包(支持devicemapper存储类型) 设置镜像的仓库 设置yu ...

  2. Spring入门,看这篇就够了

    Spring入门,看这篇就够了 文章目录 Spring入门,看这篇就够了 一. 初识Spring 二.Spring Framework系统架构 三.核心概念 1.IoC(inversion of co ...

  3. docker入门,这一篇就够了。

    Docker入门,这一篇就够了. Docker容器虚拟化平台. 前言 接触docker很长时间了,但是工作中也没有用到,所以总是学了忘,忘了学.不过这次,我打算跟大家分享一下我的学习历程,也算是我的独 ...

  4. Git【入门】这一篇就够了

    前言 Git[入门]这一篇就够了 欢迎关注公众号,白嫖原创PDF,也可以催更,微信搜:JavaPub,回复:[666] Git 在生产工作中是使用频率很高的工具,但我发现很多文章只是对它做了简单的提交 ...

  5. Spring Cloud入门,看这篇就够了!

    点击▲关注 "中生代技术"   给公众号标星置顶 更多精彩 第一时间直达 概述 首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟. 什 ...

  6. Java SE加强篇——超详细,Java入门,这一篇就够了

    建议先阅读 JavaSE基础篇 第一天:面向对象进阶一 一.static静态 关键字 1.static是什么? static是静态的意思,可以修饰成员变量和成员方法 static修饰成员变量表示该成员 ...

  7. Spring Boot 教学 学习 讲义笔记 【入门到精通一篇就够了】(上)

    目录 初识Spring Boot Spring boot 入门 系统要求 Maven配置文件 HelloWorld项目 创建maven工程 引入依赖 创建主程序 编写业务 运行&测试 设置配置 ...

  8. Docker_入门?只要这篇就够了!(纯干货适合0基础小白)

    与sgy一起开启你的Docker之路 关键词: Docker; mac; Docker中使用gdb无法进入断点,无法调试; 更新1: 看起来之前那一版博文中参考资料部分引用的外站链接太多,被系统自动屏 ...

  9. 干货 | 目标检测入门,看这篇就够了(下)

    作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾早期的经典工作,并对较新的趋势做一个全景 ...

最新文章

  1. 2. Oracle 数据库实例启动关闭过程
  2. android到顶部,Android recyclerview滚动到顶部
  3. javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
  4. c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)
  5. Python入门记录
  6. element表格图片放大_图片在表格中,鼠标经过图片上方,图片有放大预览效果 (vue+element )...
  7. 实现flex LinkBar 组件 动态切换ico图标
  8. Linux升级openssh一次成功版本
  9. 读写自旋锁详解,第 3 部分(来自IBM)
  10. c语言乘号字母,c语言中如何输入间接运算符和乘号,包括如何转换
  11. 如果你正处于迷茫期,那就来做这份工作吧!
  12. tnsnames.ora 监听配置文件详解
  13. Thread函数的参数传递和线程所有权转移(2.2)--std::move()
  14. 反转链表与分组反转链表
  15. iOS 本地通知基本使用
  16. win7 电脑MAC地址修改
  17. 机器人讯息合集:3D打印“元机器人”、水陆两用微机器人、会游泳的机械狗、“香蕉”软体机器人、无线两栖机器人
  18. 阿里云ID2物联网设备身份认证系统
  19. 深度学习论文:Deep Residual Learning for Image Recognition
  20. C#:正经了这么久,来个恶搞吧,大家竟然开始“兽语”交流

热门文章

  1. 有感于那个拣了两年馒头的女生~~
  2. linux自动输入sudo密码_用大写字母输入 Linux 命令,实现以 sudo 用户权限运行
  3. 贪心算法—建立雷达(POJ 1328)
  4. c语言1000行代码,【图片】【标题党】论我是如何一分钟写1000行代码的【c语言吧】_百度贴吧...
  5. 2021江津二中高考成绩查询入口,重庆江津第二中学2021年录取分数线
  6. linux 磁盘监控,9个在Linux中监视Linux磁盘分区和用法的工具
  7. 直播预告丨 Oracle 12C~19C统计信息的最佳实践
  8. Shutdown Abort :亚马逊成功迁移物流业务中最后一个Oracle数据库
  9. 【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
  10. STM32移植freemodbusRTU(hal库)从机