服务端(接口提供方)

创建项目

注意:springboot版本推荐使用2.3.3

导入Eureka客户端POM

        <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
# 注意此处导入的是spring-cloud-starter-netflix-eureka-client客户端

启动类添加注解

package com.project.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication
@EnableEurekaServer //这个
public class EurekaApplication { public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
} }

配置YML

server:
port: 8080
spring:
application:
name: service-project #对外暴露的名字,集群务必保证多实例名称一致,不可使用下划线
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册消息,默认为true,集群必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
serviceUrl:
defaultZone: http://192.168.1.2:8761/eureka/,http://192.168.1.111:8761/eureka/
# 有几台Eureka就写几个地址
instance: #此处选配
instance-id: consume.2 #注册后在Eureka管理页面中显示的名字
prefer-ip-address: true #是否在Eureka管理页面显示ip

暴漏接口

将上面Yml中的名称返回

@RestController
public class DemoController {
@Value("${eureka.instance.instance-id}")
private String instanceId; @GetMapping("getInstanceId")
public String getInstanceId(){
return instanceId;
}
}

启动服务

如看见下图则配置正常

集群

为方便区分,将yml中eureka.instance.instance-id名称修改(可不修改)

server:
port: 8080
spring:
application:
name: service-project #对外暴露的名字,集群务必保证多实例名称一致,不可使用下划线
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册消息,默认为true,集群必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
serviceUrl:
defaultZone: http://192.168.1.2:8761/eureka/,http://192.168.1.111:8761/eureka/
# 有几台Eureka就写几个地址
instance: #此处选配
instance-id: consume.111 #注册后在Eureka管理页面中显示的名字
prefer-ip-address: true #是否在Eureka管理页面显示ip

配置成功后页面如下

客户端(接口调用方)

整体创建流程与服务端一致,差异如下

修改Yml文件

修改点:

  1. spring.application.name
  2. eureka.instance.instance.id (可不修改)
  3. server.port
server:
port: 80
spring:
application:
name: client-project #不可使用下划线
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册消息,默认为true,集群必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
serviceUrl:
defaultZone: http://192.168.1.2:8761/eureka/,http://192.168.1.111:8761/eureka/
instance:
instance-id: client.2
prefer-ip-address: true

配置类

配置restTemplate

package com.project.client.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate; @Configuration
public class RestTemplateConf {
@Bean
@LoadBalanced //添加此注解默认开启默认轮训访问,例如Eureka服务端注册了三个服务ABC,在调用的时候会依次循环调用
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}

启动类添加注解

package com.project.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication
@EnableEurekaClient //这个
public class ClientApplication { public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
} }

服务端接口调用

此处请求地址是SERVICE-PROJECT,即上面服务端yml中配置的spring.application.name

package com.project.client.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; @RestController
public class DemoController {
@Autowired
private RestTemplate restTemplate; @GetMapping("getInstance")
public String getInstance(){
return restTemplate.getForObject("http://SERVICE-PROJECT/getInstanceId",String.class);
}
}

集群

为方便区分,将yml中eureka.instance.instance-id名称修改(可不修改)

server:
port: 80
spring:
application:
name: client-project #不可使用下划线
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册消息,默认为true,集群必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
serviceUrl:
defaultZone: http://192.168.1.2:8761/eureka/,http://192.168.1.111:8761/eureka/
instance:
instance-id: client.111
prefer-ip-address: true

配置成功后页面如下

测试

访问客户端地址192.168.1.2/getInstance,正常会出现

consume.2->consume.111->consume.2....轮询输出

服务端&客户端注册进Eureka的更多相关文章

  1. SpringCloud02 Eureka知识点、Eureka服务端和客户端的创建、Eureka服务端集群、Eureka客户端向集群的Eureka服务端注册

    1 Eureka知识点 按照功能划分: Eureka由Eureka服务端和Eureka客户端组成 按照角色划分: Eureka由Eureka Server.Service Provider.Servi ...

  2. TCP/IP网络编程之基于UDP的服务端/客户端

    理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...

  3. Netty服务端Channel注册Selector及绑定服务器端口

    当服务端Channel 创建并且初始化完成之后,会将其注册到 selector,通过语句config().group().register(channel)进行注册工作,该方法最终调用 Abstrac ...

  4. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...

  5. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...

  6. Netty 的基本简单实例【服务端-客户端通信】

    Netty是建立在NIO基础之上,Netty在NIO之上又提供了更高层次的抽象. 在Netty里面,Accept连接可以使用单独的线程池去处理,读写操作又是另外的线程池来处理. Accept连接和读写 ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  8. react服务端/客户端,同构代码心得

    FKP-REST是一套全栈javascript框架   react服务端/客户端,同构代码心得 作者:webkixi react服务端/客户端,同构代码心得 服务端,客户端同构一套代码,大前端的梦想, ...

  9. 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice

    一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...

随机推荐

  1. Halcon视觉入门芯片识别

    Halcon视觉入门芯片识别 需求 有如下图的一个摆盘,摆盘的方格中摆放芯片,一个格子中只放一个,我们需要知道每个方格中是否有芯片去指导我们将芯片放到空的方格中. 分析 通过图片分析得出 我们感兴趣的 ...

  2. 「JOISC 2014 Day1」巴士走读

    「JOISC 2014 Day1」巴士走读 将询问离线下来. 从终点出发到起点. 由于在每个点(除了终点)的时间被过来的边固定,因此如果一个点不被新的边更新,是不会发生变化的. 因此可以按照时间顺序, ...

  3. 关于C++ scanf的一个小知识

    关于C++的scanf,其实在使用时有一个注意的点. 我们来看一个简单的例子. 对于输入的一行,如果这一行的开头需要输入一个字符,例如这样的输入: A 10 20 B 30 A 3 50 ... 我们 ...

  4. AndroidStudio项目提交到github最详细步骤【转】

    感谢大佬:https://www.cnblogs.com/imqsl/p/6763133.html 在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方 ...

  5. java中的成员变量和局部变量的区别

    成员变量: 在类体里面定义的变量叫做成员变量: 如果在变量有static关键字修饰,就叫作静态变量或类变量: 如果该变量没有static关键字修饰,就叫作非静态变量或实例变量: 局部变量: 方法内定义 ...

  6. go基础——数值传递与值传递

    package main import "fmt" /* 1.值类型:存储的是数值本身,数据传递给其他变量时传递的是数据的副本. int,float,string,bool,arr ...

  7. MySQL高级篇笔记

    目录 MySQL体系结构 存储引擎特点 InnoDB底层文件 MyISAM底层文件 索引 慢查询日志 profile详情 explain执行计划 EXPLAIN 执行计划各字段含义: 索引使用 最左前 ...

  8. Linux用户配置文件、口令配置文件、组配置文件

    1.用户配置文件:保存用户信息 /etc/passwd 2.口令配置文件 /etc/shadow 每一行解释:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效 ...

  9. 年前最后一次2022.1.28_RP++

    T1同昨(我看到题目就粘上昨天的代码,结果题还没发我就A了hhhhhh) T2一开始想用深搜,结果T掉了...只好改广搜,就挺令人头大 点击查看宽广对比 #include<bits/stdc++ ...

  10. 使用VMware安装win10虚拟机

    (1)打开VMware: (2)打开左上角的文件,点击新建虚拟机: (3)选择典型,下一步: (4)选择稍后安装操作系统,下一步: (5)选择win10×64,下一步: (6)可随意修改虚拟机名称,位 ...