当前位置: 首页 > news >正文

demo(一)eureka----服务注册与提供

 下面写一个简单的demo验证下eureka,实现服务注册、服务发现。

一、单节点:

1、api:

封装其他组件需要共用的dto

2、eureka-service服务注册中心:

(1)pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo.cloud</groupId><artifactId>myspringcloud-eureka-server</artifactId><version>1.0-SNAPSHOT</version><!-- springBoot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Edgware.RELEASE</spring-cloud.version></properties><dependencies><!--eureka-server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

 (2)application.properties:在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以需要禁用它的客户端注册行为

server.port=1111
eureka.client.registerWithEureka=false  
eureka.client.fetchRegistry=false  
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

(3)启动类:

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

启动后,访问http://localhost:1111/:

就可以从后台监控服务了,(是不是比dubbo搭建zk注册中心方便多了) ,此时还没有服务注册过来,可以看到application下是空的。

3、eureka-client注册服务提供者:将原有的springboot工程改造,注册到eureka注册中心

(1)pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo.cloud</groupId><artifactId>myspringcloud-eureka-client</artifactId><version>1.0-SNAPSHOT</version><!-- springBoot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Edgware.RELEASE</spring-cloud.version></properties><dependencies><!--eureka-server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><dependency><groupId>com.demo.cloud.api</groupId><artifactId>myspringcloud-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.5</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

(2)application.properties:

server.port=2222
server.context-path=/myService
spring.application.name=my-service
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/#mybatis
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=wtyy
mybatis.mapper-locations=classpath*:Mapper/*Mapper.xml

(3)dao、service、Mapper:mybatis持久化部分,此处省略

(4)controller:

package com.demo.cloud.controller;import com.demo.cloud.dto.AuthorityDTO;
import com.demo.cloud.dto.UserDTO;
import com.demo.cloud.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RequestMapping("/user")
@RestController
public class UserApiController {@Autowiredprivate UserService userService;@Value("${server.port}")private String port;@RequestMapping("/findByUserName")public UserDTO findByUserName(String username){return userService.findByUserName(username);}@RequestMapping("/getAllUsers")public List<UserDTO> getAllUsers(){System.out.println(port);return userService.getAllUsers();}@RequestMapping("/getAuthortiesByUserId")public List<AuthorityDTO> getAuthortiesByUserId(Integer userId){return userService.getAuthortiesByUserId(userId);}@RequestMapping("/addUser")public void addUser1(@RequestBody UserDTO userDTO){userService.addUser(userDTO);}}

(5)启动类:

package com.demo.cloud;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.demo.cloud.dao")
public class MyEurekaClientApplication {public static void main(String args[]){SpringApplication.run(MyEurekaClientApplication.class,args);}
}

注意:这里使用的是@EnableEurekaClient注解,也可以使用@EnableDiscoveryClient注解, 

@EnableEurekaClient是Eureka特有的注解,用于启动Eureka客户端。当使用Eureka作为注册中心时,就推荐使用@EnableEurekaClient注解,应用启动后会自动注册到Eureka Server,并完成服务治理。
@EnableDiscoveryClient是Spring Cloud通用的注解,可以与Eureka、Consul等多种注册中心对接。当我们的微服务同时需要与多个注册中心集成时,就需要使用@EnableDiscoveryClient注解。
可以说,@EnableEurekaClient是@EnableDiscoveryClient的一个具体实现,如果项目中注册中心只使用Eureka,那么使用@EnableEurekaClient更加方便和简单。但如果要切换到其他的注册中心,改动较大。

启动项目,再浏览下http://localhost:1111/:

可以看到注册成功了。

二、高可用部署:

1、先部署eukera-service的高可用

2、再部署eureka-client的高可用:连接注册中心的配置项改为多个,以逗号分隔,然后将该组件部署多个节点即可

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/,http://xxx.xx.xxx:1111/eureka/

相关文章:

demo(一)eureka----服务注册与提供

下面写一个简单的demo验证下eureka&#xff0c;实现服务注册、服务发现。 一、单节点&#xff1a; 1、api&#xff1a; 封装其他组件需要共用的dto 2、eureka-service服务注册中心&#xff1a; &#xff08;1&#xff09;pom: <?xml version"1.0" encoding&q…...

core dump(介绍,status中的core dump标志,应用--调试),ulimit命令

目录 core dump(核心转储) 引入 介绍 core dump标志 引入 介绍 应用 -- gdb调试 注意点 ulimit命令 -a -c 示例 -- core file大小问题 core dump(核心转储) 引入 我们可以看到,不同的signal对应不同的编号和action:其中action主要分为term和coreterm就是终止的意…...

使用键盘管理器更改键盘快捷键,让键盘真正迎合你的使用习惯

如果默认快捷键不适合你&#xff0c;你肯定会想知道如何在Windows 11中更改键盘快捷键。 也许你已经习惯了macOS键盘&#xff0c;或者像我一样在Windows和Mac之间切换工作/游戏——如果是这样的话&#xff0c;重新配置默认的Windows快捷方式&#xff0c;使其与Mac上的快捷方式…...

putty保存登录账号和密码

putty作为一个免费的远程登录连接工具&#xff0c;其功能和性能还是很不错的&#xff0c;但是有一个很明显的缺点&#xff0c;就是无法保存用户名和密码。 在这里就针对这个问题&#xff0c;分享一种能够快速保存用户名和密码的方法。 1&#xff0c;创建一个桌面快捷方式。 …...

GRS认证是什么认证为何如此重要

在全球化日益盛行的今天&#xff0c;环保和可持续性成为了企业发展的关键词。其中&#xff0c;GRS认证作为企业实现可持续生产和全球环境保护的一个重要手段&#xff0c;越来越受到人们的关注。那么&#xff0c;GRS认证究竟是什么认证呢?   GRS&#xff0c;全称为Global Rec…...

基于pytest-bdd的项目目录结构和命名规范

pytest-bdd 的文件的命名规范 pytest-bdd 是基于pytest 之上&#xff0c;所以需要遵循pytest 的命名规则才能进行测试&#xff0c;具体有&#xff1a; 测试文件名必须以*test.py或者test*.py命名测试函数必须以 test_开头 在pytest-bdd中存在两类文件&#xff1a; 以 .feat…...

web前端开发网页设计课堂作业/html练习《课程表》

目标图&#xff1a; 代码解析&#xff1a; 代码解析1<table border"3" align"center"><输入内容(的) 边界"3px" 位置"居中">2<tr><td colspan"7" align"center">课程表</td><t…...

用欧拉路径判断图同构推出reverse合法性:1116T4

http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

高阶数据结构---树状数组

文章目录 楼兰图腾一个简单的整数问题 一个简单的整数问题2谜一样的牛 一、楼兰图腾OJ链接 二、一个简单的整数问题OJ链接 三、一个简单的整数问题2OJ链接 四、谜一样的牛OJ链接...

如何保护PayPal账户安全:防止多个PayPal账号关联?

PayPal是一家全球领先的在线支付平台&#xff0c;已经成为全球最受欢迎的在线支付工具之一&#xff0c;广泛应用于电子商务、跨境交易和个人之间的付款&#xff0c;很多跨境卖家的支付平台都会选择PayPal。PayPal支持全球多个国家和20多种货币在线支付&#xff0c;并且能即时收…...

关于 Spring :松耦合、可配置、IOC、AOP

关于 Spring &#xff1a;松耦合、可配置、IOC、AOP 文章目录 关于 Spring &#xff1a;松耦合、可配置、IOC、AOP一、关于 Spring1、概述2、Spring 的“松耦合”体现在哪3、Spring 的“可配置”体现在哪4、Spring 的 IOC 容器的主要作用5、Spring 的 AOP 容器的主要作用 一、关…...

pytorch tensor数据类型转换为python数据

一、item() input: x torch.tensor([1.0]) x.item()output: 1.0二、tolist() input: a torch.randn(2, 2) a.tolist() a[0,0].tolist()output: [[0.012766935862600803, 0.5415473580360413],[-0.08909505605697632, 0.7729271650314331]]0.012766935862600803...

HarmonyOS开发:动态共享包的依赖问题

一、共享包的依赖方式 在需要依赖的模块包目录下oh-package.json5文件中添加依赖&#xff1a; "dependencies": {"ohos/srpaasUI": "file:../../srpaasUI","ohos/srbusiness": "file:../../feature/srbusiness"} 引入之后…...

中睿天下加入中关村华安关键信息基础设施安全保护联盟

近日&#xff0c;中睿天下正式加入中关村华安关键信息基础设施安全保护联盟&#xff0c;成为其会员单位。 中关村华安关键信息基础设施安全保护联盟是由北京市科学技术委员会、中关村科技园区管理委员会指导支持&#xff0c;经北京市民政局批准&#xff0c;于2023年8月正式注册…...

【c++STL算数仿函数,关系仿函数,逻辑仿函数】

文章目录 C STL中的算数、关系和逻辑仿函数1. 算数仿函数2. 关系仿函数3. 逻辑仿函数 C STL中的算数、关系和逻辑仿函数 STL&#xff08;Standard Template Library&#xff09;是C标准库的一部分&#xff0c;提供了许多强大的工具和功能&#xff0c;其中包括仿函数&#xff0…...

产品经理的能力模型是什么?

一个产品的成功需要团队成员利用自己的技能共同合作完成。作为团队的核心和产品的主导者&#xff0c;产品经理需要具备一定的能力模型&#xff0c;以更好地完成工作。下面从五个方面进行解答。 首先&#xff0c;产品经理需要具备需求分析的能力。需求是用户在特定场景下产生的欲…...

缓存和DB一致性

读操作&#xff0c;一般是先查询缓存&#xff0c;查询不到再查询数据库&#xff0c;最后回写进缓存。 写操作&#xff0c;究竟是先删除(更新)缓存&#xff0c;再更新数据库&#xff0c;还是先更新数据库&#xff0c;再删除(更新)缓存呢&#xff1f; 1、给缓存设置过期时间 适用…...

netty websockt之断连重试

断连重试有以下两点考虑&#xff1a; 1、连接异常&#xff0c;比如网络抖动导致连接失败&#xff1b; 2、连接过程中断开连接重试&#xff1b; 主要用到两个工具类&#xff1a; ChannelFutureListener监听ChannelFuture..isSuccess()&#xff1b; ChannelInboundHandlerAd…...

【Gateway】基于ruoyi-cloud-plus项目,gateway局部过滤器和过滤返回以及集成nacos

1.使用Gateway路由转发 1.1标题引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>1.2添加YML配置 spring:cloud:gateway:# 打印请求日志(自定义)…...

mysql -mmm

MMM&#xff08;Master-Master replication manager for MvSQL&#xff0c;MySQL主主复制管理器&#xff09; 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发&#xff0c;主要用来监控和管理 MySQL Master-Master &#xff08;双主&#xff09;复制&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...