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










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值