服务端(接口提供方)

创建项目

注意: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. navicat连接mysql报错1251解决方案

    感谢原文作者:XDMFC 原文链接:https://blog.csdn.net/xdmfc/article/details/80263215 问题描述 今天下了个 MySQL8.0,发现Navicat ...

  2. springcloud+gateway微服务整合swagger

    单一的微服务集成swagger: maven: <dependency> <groupId>io.springfox</groupId> <artifactI ...

  3. 【BZOJ5492】校园旅行(图论 搜索优化)

    题目链接 大意 给出\(N\)个点,\(M\)条边的一张图,其中每个点都有一个0或1的颜色. 再给出\(Q\)个询问,每次询问查询两个点之间是否存在一条路径,使得路径上的颜色组成的01字符串是一个回文 ...

  4. Linux 源码安装Ansible 参考篇

    Ansible 源码搭建配置 近期在学习自动化运维相关技术,文章主要模拟内网情况下对Ansible的安装演示,源码安装较为繁琐.枯燥,尤其是在实际安装过程中可能出现各式各样的问题,所有在安装过程中尽量 ...

  5. Solution -「多校联训」行列式

    \(\mathcal{Description}\)   Link.   给定 \(x,\{d_i\}_{i=1}^n,\{p_i\}_{i=2}^n,\{b_i\}_{i=2}^n,\{c_i\}_{ ...

  6. FutureTask类的get方法如何实现线程同步等待

    接上篇JDK中线程中实现同步等待闭环的一种方式 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com),为什么使用了FutureTask中的get方法就可以实现线程的同步等待?这就将重点讲述下F ...

  7. 【一天一个小知识10/20】Unity安卓获取麦克风并录音保存。

    2021-10-20 10:42:16 #region 模块信息 // **************************************************************** ...

  8. 自创Web框架之过度Django框架

    目录 自创Web框架之过度Django框架 软件开发架构 HTTP协议 Web框架之"撸起袖子加油干" Web框架之通过wsgiref加油干 封装优化处理 动静网页 jinjia2 ...

  9. Consul安装启动

    1.安装 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp ...

  10. 『无为则无心』Python面向对象 — 56、Python多态

    目录 1.Python中的多态 (1)多态的定义 (2)多态的好处 (3)多态实现步骤 2.体验多态 1.Python中的多态 (1)多态的定义 多态是一种使用对象的方式,子类重写父类方法,不同的子类 ...