Spring Cloud Eureka 服务治理(一)

Spring Cloud Eureka Spring Cloud Netflix 微服务套件中的部分, 它基于 NetflixEureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。 Spring Cloud 通过为Eureka 增加了 Spring Boot 风格的自动化配置,我们只需通过简单引入依赖和注解配置就能 Spring Boot 构建的微服务应用轻松地与 Eureka 服务治理体系进行整合。

使用的boot版本是 1.4.2.RELEASE cloud版本是 Camden.SR3

直接上代码 :

首先需要注册中心 结合 actuator 监控

application.yml 这里使用yml配置

server:
    #tomcat:
     #   uri-encoding: UTF-8
      #  max-threads: 1000
       # min-spare-threads: 30
    port: 8888
spring:
    application:
        name: eureka-server
        
management:
    contextPath: /hello
endpoints:
    info:
        path: /appinfo
    health:
        path: /checkHealth
eureka:
    instance:
        statusPageUrlPath: ${management.contextPath}/${endpoints.info.path}
        healthCheckUrlPath: ${management.contextPath}/${endpoints.health.path}
    client:
        #不向注册中心注册自己
        registerWithEureka: false
        #检索服务 这里是注册中心
        fetchRegistry: false
        serviceUrl:
            defaultZone: http://localhost:8888/eureka/


注册中心只需要加入注解 @EnableEurekaServer

/**
 * 注册中心
 * @author Administrator
 *
 */
@EnableEurekaServer
@SpringBootApplication
public class ServerApplication {

	public static void main(String[] args) {
//		SpringApplication.run(DemoApplication.class, args);
		new SpringApplicationBuilder(ServerApplication.class).web(true).run(args);
	}
}


pom文件 

 <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
  <!--依赖管理,用于管理spring-cloud的依赖,其中Camden.SR3是版本号 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Camden.SR3</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- 监控 -->
	    <dependency>
			<groupId> org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
		<!-- 服务中心 -->
	</dependencies>


服务提供者


新建一个项目做为服务提供者,需要注册到注册者中去 注意端口

配置 application.properties 

spring.application.name=springcloud-register
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/
启动类 提供者  @EnableDiscoveryClient

@EnableDiscoveryClient
@SpringBootApplication
public class DemoRegisterApplication {

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



@RestController
public class HelloController {
	private final Logger logger = Logger.getLogger(getClass());
	
	@Autowired
	private  DiscoveryClient client;
	
	@RequestMapping(value = "/hello", method = RequestMethod.GET)
	public String index() {
		ServiceInstance instance = client.getLocalServiceInstance();
		logger.info("/hello, host:" + instance.getHost() + "     service id:" + instance.getServiceId());
		return "Hello World";
	}


	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
	</dependencies>



消费者

application.properties 需要注意的事 端口不要冲突

spring.application.name=springcloud-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/



/**
 * 消费者
 * @author Administrator
 *
 */
@EnableDiscoveryClient
@SpringBootApplication
public class DemoConsumerApplication {

	@Bean
	@LoadBalanced
	RestTemplate restTemplate() {
		return new RestTemplate();
	}

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


重点来了

@RestController
public class ConsumerController {

	@Autowired
	RestTemplate restTemplate;

	/**
	 * 调用服务
	 * @return
	 */
	@RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
	public String helloConsumer() {
		//与配置一致
		return restTemplate.getForEntity("http://springcloud-register/hello", String.class).getBody();
	}
}


	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-ribbon</artifactId>
		</dependency>
	</dependencies>



先启动注册中心,查看服务 访问地址http://localhost:8888/ 会发现还没有服务注册进来


然后分别启动提供者和消费者后会发现多了两个服务



服务注册进来后,消费者就可以访问提供者的服务了


服务就完成 代码地址: 代码地址

如有疑问加群联系我 :278947305










猜你喜欢

转载自blog.csdn.net/u010982856/article/details/77969192