微服务下如何将eureka server和config server整合为一个服务[即注册中心和配置中心]

前言

因为刚开始用微服务没多久,看网上很多博客都是将配置中心作为一个服务,然后将配置中心的服务在注册中心进行注册使用,个人感觉有点多余,不仅增加了维护成本,而且多启一个服务也就也就意味这个又需要多开辟新的内存资源。所以打算将配置中心和注册中心作为一个中心服务。使用的时候没有注意到其实阿里已经开源过一个组件了,叫做Nacos,它就是整合配置中心和注册中心,将其作为一体服务。如果不想使用spring的eureka和config组件可以使用阿里的这款开源组件。

这里主要是来分享一下针对eureka和config组件的实现方案。

整合出现的主要问题

整合后主要出现了eureka注册中心wro.css wro.js 404。

并且client端的服务无法进行正常的注册。

实现方案

server端配置

pom主要依赖:

         
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter
                
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.cloud
            spring-cloud-starter-security
        
        
        
            org.springframework.cloud
            spring-cloud-config-server
        

启动类注解配置:同时添加两个server注解

package com.clf.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@EnableConfigServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

yml的配置:主要是在config的配置处添加prefix前缀

server:
  port: 8761
spring:
  application:
    name: eureka-server
  security:
    user:
      name: clf
      password: clf123
      roles: SUPERUSER
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/kvenclf/cloud-config.git # 你个人的配置中心仓库
          search-paths: repo1 # 路由文件搜索路径
          username: "git的用户名"
          password: "git的密码"
        prefix: /config # 自定义的过滤前缀,避免在内嵌服务时对全部的url进行git的转发,这里就是解决配置中心的css和js找不到的问题
      label: master
eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@localhost:8761/eureka/
      instance:
        prefer-ip-address: true #当猜测主机名时,服务器的IP地址应该在操作系统报告的主机名中使用


 

security的放行:

package com.clf.eurekaserver.conf;


import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * @author : clf
 * @description : SpringSecurity配置
 **/
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

    /**
     * 对eureka注册的URL不进行CSRF防御
     * @param http
     * @throws Exception
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}

client端配置

pom依赖:

        
        
            org.springframework.cloud
            spring-cloud-starter-config
        

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
         
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter
        

启动类配置:添加@EnableDiscoveryClient注解

package com.clf.userserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class UserServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserServerApplication.class, args);
    }

}

yml配置:

server:
  port: 8201
spring:
  application:
    name: user-server
  cloud:
    config:
      uri: http://clf:clf123@localhost:8761/config/ #这就是对应的config服务的路径,必须加上配置的config前缀,否则无法获取配置
      profile: pro
      label: master
eureka:
  client:
    service-url:
      defaultZone: http://clf:clf123@localhost:8761/eureka/ # 注册中心

 

你可能感兴趣的:(后端,eureka,config,配置中心和注册中心整合,java)