nacos注册中心替换成eureka

news2024/11/26 22:23:21

背景

项目使用的springcloud、nacos、redis等插件,但是nacos比较重,小项目使用不到,想用一个tomcat部署项目,所以准备用eureka替换nacos;

eureka

Eureak 是Netflix 开源微服务框架中一系列项目中的一个。Spring Cloud对其进行了二次封装,形成了Spring Cloud Netflix 子项目,但未对Netflix微服务实现原理进行更改,只是进行了Spring Boot化,使开发者更容易使用和整合。

在Eureka中,对于服务治理有如下3个概念:

  • 服务治理服务器(Eureka服务器)

    Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,也就是服务注册中心(这里的Eureka Server指的是我们自己专门写一个Java应用来引用Eureka Server的依赖,将这个应用作为注册中心)。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

  • 服务注册代理(服务提供者)

    如果一个微服务是一个服务提供者,那么可以通过服务注册代理将服务配置信息注册到治理服务器上。服务注册代理可以理解为一个Eureka客户端,负责将微服务所提供的服务向Eureka服务器执行注册、续约和注销等操作,以使服务消费者可以发现并进行消费。在服务注册时需要向服务治理服务器提供服务名称、宿主服务器IP地址、服务端口号、域名等主要数据。

Eureka的两个组件

  • Eureka Server提供注册服务功能

各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • EurekaClient通过注册中心进行访问

EurekaClient可以分为提供者和消费者,他们都是一个Java客户端,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

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

实施

一、服务治理服务器

1、在你的项目上点击鼠标右键;
在这里插入图片描述
2、点击Spring Initializr输入项目名称,选择war包,点击下一步;
3、选择springboot版本,选择Eureka Server;
在这里插入图片描述
4、选择finish,创建eureka服务成功。
5、修改配置文件

server:
  port: 8761
spring:
  application:
    name: eureka-server #微服务名称
eureka:
  instance:
    hostname: 127.0.0.1
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    eviction-interval-timer-in-ms: 5000   #设置清理的间隔时间,而后这个时间使用的是毫秒单位(默认是60秒)
    enable-self-preservation: true #设置为false表示关闭保护模式

logging:
  level:
    org:
      springframework:
        web:
          servlet:
            mvc:
              method:
                annotation:
                  RequestMappingHandlerMapping: trace

二、服务提供搭建

1、pom删除nacos的依赖

 <!-- <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>${nacos.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                <version>${nacos.version}</version>
            </dependency>-->

2、在你的子项目中添加如下pom文件;

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <!-- 排除Jersey,用SpringMVC Rest方式-->
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jersey</groupId>
                    <artifactId>jersey-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jersey</groupId>
                    <artifactId>jersey-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jersey.contribs</groupId>
                    <artifactId>jersey-apache-client4</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>httpclient</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3、在启动类上添加注解;
删除@EnableDiscoveryClient的注解,添加@EnableEurekaClient
4、增加配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://10.3.100.216:8761/eureka/
  instance:
    prefer-ip-address: true
spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: mes-dev-rt-provider
  cloud:
    gateway:
      discovery:
        locator:
          enabled: false
          #开启小写验证,默认feign根据服务名查找都是用的全大写
          lowerCaseServiceId: true

三、tomcat的配置

1、新建webapps
请添加图片描述
注意:文件夹名称可以自定义,然后在server.xml也配置成这个文件夹就行。

2、修改apache-tomcat-9.0.74\conf\server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="-1" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!-- APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <!-- eureka -->
  <Service name="Catalina"> 
    <Connector port="8761" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8013" protocol="AJP/1.3" redirectPort="8443"  secretRequired="false"/>
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps_eureka"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
 <!-- mes  -->
  <Service name="Catalina"> 
    <Connector port="8084" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  secretRequired="false"/>
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost" appBase="webapps_mes" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
 <!-- tinyid  -->
  <Service name="Catalina"> 
    <Connector port="8011" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8012" protocol="AJP/1.3" redirectPort="8443"  secretRequired="false"/>
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps_tinyid"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service> 
</Server>

注意:
1.服务治理服务,这个配置在最上面,保证第一个能启动。
2.bootstrap.yml的server.port端口号最好和server.xml配置一致。
3.eureka服务中心,最好将项目名变成ROOT,不然就需要修改defaultZone: 为:http://10.3.100.216:8761/项目名称/eureka/这个地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM 垃圾收集器

一&#xff0c;常用的垃圾收集器 如果说收集算法是内存回收的方法论&#xff0c;那么垃圾收集器就是内存回收的具体实现。 如下图为年轻代和老年代的垃圾回收器&#xff0c;划线表示可以同时存在。 1&#xff0c;Serial Serial收集器是最基本、发展历史最悠久的收集器&…

怎么把录音文件转换成mp3格式,3个高效方法

在工作中&#xff0c;我们可能会选择录音来记录会议内容&#xff0c;以便之后整理会议纪要。但是我们知道录音文件的格式千差万别。比如在手机上录制的音频文件通常以M4A、WAV等多种格式存储&#xff0c;然而这些格式可能会存在不兼容的问题&#xff0c;导致我们无法在其他平台…

openEuler Developer Day 2023成功召开!发布嵌入式商业版本及多项成果

【中国&#xff0c;上海&#xff0c;2023年4月21日】openEuler Developer Day 2023于4月20-21日在线上和线下同步举办。本次大会由开放原子开源基金会指导&#xff0c;中国软件行业协会、openEuler社区、边缘计算产业联盟共同主办&#xff0c;以“万涓汇流&#xff0c;奔涌向前…

3DEXPERIENCE MODSIM产品前期概念结构快速开发方案(下) | 达索系统百世慧®

基于3DEXPERIENCE单一数据源、实时多专业协同平台、附加全新CATIA建模方法与MODSIM建模仿真一体化技术&#xff0c;助力产品设计与仿真效率提升&#xff0c;产品多学科性能提升&#xff0c;产品轻量化减重等&#xff0c;全方位赋能产品前期概念结构高效高质开发。 目录 达索系…

利用css实现视差滚动和抖动效果

背景&#xff1a; 前端的设计效果&#xff0c;越来越炫酷&#xff0c;而这些炫酷的效果&#xff0c;利用css3的动画效果和js就可以实现&#xff0c;简单的代码就能实现非常炫酷的效果。 原理&#xff1a; 利用 js监控scrollTop的位置&#xff0c;通过 top定位图片的位置&#x…

halcon灰度积分投影/垂直积分投影

简介:关于灰度投影积分可以用到的场合很多,例如分割字符,分割尺子上的刻度等,适用于有规律的变化这些内容的检测。本文复现了论文《基于深度学习和灰度纹理特征的铁路接触网绝缘子状态检测》中灰度积分投影实现了对绝缘子缺陷位置的检测。见(图1)灰度积分垂直方向投影获得…

JAVAWeb09-WEB 工程路径专题

1. 工程路径问题 先看一个问题 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>base 标签</title> </head> <body> <h1>注册用户~~</h1> <!--解读:1.…

创建型模式-建造者模式

建造者模式 概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示 这个模式适用于&#xff1a;某个对象的构建过程复杂的情况 将部件的构造与装配分离&#xff0c;由 Builder 负责构造&#xff0c;Director 进行装配&#xff0c;实现了构…

LeetCode——新手村

目录 前言 一、一维数组的动态和 1、题目 2、代码 二、将数字变成 0 的操作次数 1、题目 2、代码 三、最富有客户的资产总量 1、题目 2、代码 四、Fizz Buzz 1、题目 2、代码 五、链表的中间结点 1、题目 2、代码 六、赎金信 1、题目 2、代码 前言 注册了一个LeetCode的…

10、Mysql常见面试题

Mysql常见面试题 文章目录 Mysql常见面试题一 Mysql索引001 Mysql如何实现的索引机制&#xff1f;002 InnoDB索引与MyISAM索引实现的区别是什么&#xff1f;003 一个表中如果没有创建索引&#xff0c;那么还会创建B树吗&#xff1f; 004 说一下B树索引实现原理&#xff08;数据…

毕业5年的同学突然告诉我,他已经是年薪30W的自动化测试工程师....

作为一名程序员&#xff0c;都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业&#xff0c;知识体系复杂且知识更新速度非常快&#xff0c;“一日不学就会落后”。 另外一方面&#xff0c;IT又是劳动密集型的行业&#xff0c;不仅业人员多&#xff0c;而且个…

8个你可能不知道的令人震惊的 HTML 技巧

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 1. 捕获属性打开你的设备摄像头 正如 input 标记具有 email、 text 和 password 属性一样&…

Unity音量滑块沿弧形移动

一、音量滑块的移动 1、滑块在滑动的时候&#xff0c;其运动轨迹沿着大圆的弧边展开 2、滑块不能无限滑动&#xff0c;而是两端各有一个挡块&#xff0c;移动到挡块位置&#xff0c;则不能往下移动&#xff0c;但可以折回 3、鼠标悬停滑块时&#xff0c;给出音量值和操作提示 …

JMeter 获取登录接口的token

1、登录接口为POST请求方式&#xff0c;添加请求登录接口的消息体数据 添加HTTP信息头管理器&#xff0c;配置content-type值为application/json 2、给登录接口“添加监听器-查看结果树”和“后置处理器-正则表达式处理器” 先运行一次登录接口&#xff0c;通过查看结果树返回内…

C++三大特性—继承 “访问控制”

本文主要阐述关于C继承中基类与派生类之间的访问关系 继承方式与访问方式 继承定义格式&#xff1a; 派生类可以继承定义在基类的成员&#xff0c;但是派生类的成员函数不一定有权访问从基类继承来的成员    访问限定符的作用&#xff1a;控制派生类从基类继承而来的成员是否…

Matlab——逻辑回归(原理、代码)

对于一个机器学习方法&#xff0c;通常由模型、策略和算法3个要素构成。 模型是假设空间的形式&#xff0c;如是线性函数还是条件概率&#xff1b;策略是判断模型好坏的数学表达式&#xff0c;将学习问题转化为优化问题&#xff0c;一般策略对应一个代价函数&#xff08;Cost F…

SQL优化(2):主键优化

在上一小节&#xff0c;我们提到&#xff0c;主键顺序插入的性能是要高于乱序插入的。 这一小节&#xff0c;就来介绍一下具体的 原因&#xff0c;然后再分析一下主键又该如何设计。 1 数据组织方式 在InnoDB存储引擎中&#xff0c;表数据都是根据主键顺序组织存放的&#xf…

数据结构——求二叉树的属性

数据结构——求二叉树的属性 一、对称性101. 对称二叉树1.递归2.迭代3.同类题&#xff1a; 二、深度104. 二叉树的最大深度1.递归1&#xff09;后序1&#xff09;前序 2.迭代&#xff08;层序&#xff09; 559. N 叉树的最大深度1.递归&#xff08;深度优先&#xff09;2.迭代&…

MATLAB实现OCR识别数字和字符

OCR也叫做光学字符识别&#xff0c;是计算机视觉研究领域的分支之一。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来&#xff0c;并转换成一种计算机能够接受、人又可以理解的格式。 MATLAB实现OCR识别数字和字符&#xff0c;涉及灰度转换、中值滤波、二值化处…

【教学类-34-05】拼图(彩色图片+凹凸拼)3*4格子(中班主题《个别化拼图》偏美术)

图片展示&#xff1a; 背景需求&#xff1a; 最近班级孩子得了传染病&#xff0c;来了2位孩子。 我觉得&#xff1a;人少的话&#xff0c;孩子们就有充足的时间去拼那些带有凹凸槽的自制彩色图形拼图。 难点&#xff1a; 1、从直线剪切&#xff08;方形拼图&#xff09;转…