首页IT科技eureka注册流程(手把手教你将Eureka升级Nacos注册中心)

eureka注册流程(手把手教你将Eureka升级Nacos注册中心)

时间2025-06-22 23:08:18分类IT科技浏览4574
导读: 由于原有SpringCloud体系版本比较老,最初的注册中心使用的Eureka后期官方无升级方案,配置中心无法在线管理配置,还有实时上下线的问题,因此需要将原有系统的Eureka服务升级Nacos注册心服务。...

  由于原有SpringCloud体系版本比较老              ,最初的注册中心使用的Eureka后期官方无升级方案                    ,配置中心无法在线管理配置      ,还有实时上下线的问题       ,因此需要将原有系统的Eureka服务升级Nacos注册心服务             。

原有版本SpringBoot1.5.15             、SpringCloud E                    、注册中心Eureka

升级后版本SpringBoot2.1.6       、SpringCloud G             、注册中心Nacos1.4.2

1.升级springboot为2.x

注释掉根目录下的parent                    ,和starter依赖                    。

注释掉dependencyManagement下的platform-bom

添加dependencyManagement的springboot依赖

添加打包资源

<resources> <!--如果不设置resource 会导致application.yml中的@@找不到pom文件中的配置--> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>

2.升级springcloud版本到Greenwich.SR2

并添加alibaba.cloud版本

<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>

3.替换掉Eureka注册中心与配置中心

使用Undertow 替换内置 Tomcat;

<!--使用Undertow 替换内置 Tomcat--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>

添加Nacos配置:

<!--阿里巴巴 nacos 服务发现--> <!--注册中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${spring-cloud-alibaba.version}</version> </dependency> <!--配置中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${spring-cloud-alibaba.version}</version> </dependency>

添加监控相关引用

<!--配置文件处理器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!--监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>

升级Feign引用

<!--声明式接口调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

SpringbootApplication启动项中更新为

@EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class JoinDerepeatApplication { }

4.更改配置文件bootstrap.yml

根据自身服务更改下面内容,${nacos-namespace:}这种写法是为了运行时可以由外部环境变量传入             ,而不用更改配置重新打包发布       。

server: port: 8123 undertow: worker-threads: 1000 io-threads: 32 accesslog: enabled: true dir: /logs/${spring.application.name} pattern: %t,${spring.application.name},%a,%A:%p,"%r",%s,%T,%b,%{i,Referer},"%{i,User-Agent}" spring: application: name: join-derepeat profiles: active: ${active:dev} cloud: #手动配置Bus id, bus: id: ${spring.application.name}:${server.port} main: allow-bean-definition-overriding: true #解决restful 404错误 spring.mvc.throw-exception-if-no-handler-found=true spring.resources.add-mappings=false mvc: throw-exception-if-no-handler-found: true resources: add-mappings: false management: endpoints: web: exposure: include: * endpoint: health: show-details: ALWAYS #解决读取配置文件中文乱码 file: encoding: utf-8 --- spring: profiles: dev cloud: inetutils: preferred-networks: 10.2 nacos: config: namespace: server-addr: 10.3.87.30:3105 shared-configs[0]: data-id: common.properties ## refresh: true shared-configs[1]: data-id: rabbitmq.properties discovery: namespace: server-addr: 10.3.87.30:3105 metadata: version: ${project.version} description: ${project.description} --- spring: profiles: prd cloud: nacos: config: namespace: ${nacos-namespace:} server-addr: ${config-server-addr} shared-configs[0]: data-id: common.properties ## refresh: true shared-configs[1]: data-id: rabbitmq.properties discovery: namespace: ${nacos-namespace:} server-addr: ${discovery-server-addr} metadata: version: ${project.version} description: ${project.description}

5.配置文件

端口自定义       ,测试与正式环境配置shared-configs[0] common.properties 本项目需要加载的配置文件内容保存在Nacos中心             。

refresh: true 设置为可以实时动态更新的配置文件

配置内容示例

可以添加自已的配置文件如添加join-derepeat.yml                    。

只需要继续添加自己的配置文件shared-configs[2]配置即可       。

最后启动本服务

访问接口页面http://localhost:8123/doc.html调试即可      。

6.Swagger-UI更换

<swagger2.version>2.9.0</swagger2.version> <swagger-bootstrap-ui.version>1.9.5</swagger-bootstrap-ui.version>
<!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${swagger2.version}</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>${swagger-bootstrap-ui.version}</version> </dependency>

在config文件夹内添加SwaggerConfig文件

将如下高亮更新为自己的程序内容

@Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class SwaggerConfig { //swagger2的配置文件                    ,这里可以配置swagger2的一些基本的内容             ,比如扫描的包等等 @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("数据去重复") .select() //为当前包路径 .apis(RequestHandlerSelectors.basePackage("com.join.derepeat.controller")) .paths(PathSelectors.any()) .build(); } //构建 api文档的详细信息函数,注意这里的注解引用的是哪个 private ApiInfo apiInfo() { return new ApiInfoBuilder() //页面标题 .title("数据去重复 API") //创建人 .contact(new Contact("james", "", "")) //版本号 .version("1.0") //描述 .description("重复数据拦截") .build(); } }

7.更改镜像打包pom文件

由于是采用Docker部署,因此需要打成docker镜像                    ,使用的是docker-maven-plugin插件                    。

添加容器仓库地址

<docker.repostory>10.3.87.5:8080</docker.repostory>

添加

<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.1.1</version> <configuration> <!--覆盖相同标签镜像--> <forceTags>true</forceTags> <!-- 与maven配置文件settings.xml一致 --> <serverId>nexus-releases</serverId> <!--私有仓库地址 --> <registryUrl>https://${docker.repostory}</registryUrl> <!--远程Docker地址 --> <dockerHost>http://10.3.87.21:2345</dockerHost> <!-- 注意imageName一定要是符合正则[a-z0-9-_.]的                   ,否则构建不会成功 --> <!--指定镜像名称 仓库/镜像名:标签--> <imageName>${docker.repostory}/${project.name}:${project.version}</imageName> <baseImage>join:0.6</baseImage> <maintainer>${project.description} admin</maintainer> <env> <JAVA_OPTS> -Xms700m -Xmx700m </JAVA_OPTS> </env> <cmd>java $JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/${project.build.finalName}-dump.hprof -jar /app/${project.build.finalName}.jar</cmd> <resources> <resource> <!-- 指定要复制的目录路径,这里是当前目录 --> <!-- 将打包文件放入dockerDirectory指定的位置 --> <targetPath>/app/</targetPath> <!-- 指定要复制的根目录              ,这里是target目录 --> <directory>${project.build.directory}</directory> <!-- 指定需要拷贝的文件                   ,这里指最后生成的jar包 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>

小技巧:这里将jar运行时设置的参数变量化<JAVA_OPTS>      ,方便在不重新编译的情况下快速通过设置环境变量的方式添加一些想要的值              。

以上就是在实战中总结出来的配置经验      。

声明:本站所有文章              ,如无特殊说明或标注                    ,均为本站原创发布                   。任何个人或组织      ,在未征得本站同意时       ,禁止复制                    、盗用       、采集      、发布本站内容到任何网站                    、书籍等各类媒体平台              。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网站优化排名技巧大揭秘(让您的网站排名飙升) 网站如何快速提升排名的方法(提升网站排名的SEO快速排名软件首页)