
springcloud.png
  <module>zuul-server</module>
        <module>restaurant-service</module>
        <module>eureka-server</module>
        <module>dashboard-server</module>
        <module>turbine-server</module>
        <module>common</module>
        <module>user-service</module>
        <module>security-service</module>
        <module>api-service</module>
        <module>booking-service</module> <dependencies>
        <!--eureka server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>1.1. 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@EnableEurekaServer
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}1.2. eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),默认情况下erureka server也是一个eureka client ,必须要指定一个 server。下面是一个网上常见的配置文件appication.yml
server:
  port: 8761
#通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
    name: eurka-server1.3. 下面添加一个客户端,已user-server模块服务为例
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>启动的主程序中添加注解EnableEurekaClient表明为eurka的客户端
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker
@ComponentScan({"com.packtpub.mmj.user", "com.packtpub.mmj.common"})
public class UsersApp {
    private static final Logger LOG = LoggerFactory.getLogger(UsersApp.class);
    @Value("${app.rabbitmq.host:localhost}")
    String rabbitMqHost;
    @Bean
    public ConnectionFactory connectionFactory() {
        LOG.info("Create RabbitMqCF for host: {}", rabbitMqHost);
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(rabbitMqHost);
        return connectionFactory;
    }
    public static void main(String[] args) {
        SpringApplication.run(UsersApp.class, args);
    }
}然后我们需要再配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下
# Discovery Server Access
eureka:
    instance:
        leaseRenewalIntervalInSeconds: 3
        metadataMap:
            instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}}
    client:
        registryFetchIntervalSeconds: 5
        instanceInfoReplicationIntervalSeconds: 5
        initialInstanceInfoReplicationIntervalSeconds: 5
        serviceUrl:
            defaultZone: ${vcap.services.${PREFIX:}eureka.credentials.uri:http://user:password@localhost:8761}/eureka/
        fetchRegistry: true其他的客户端配置注册不再赘述可参照源码