SpringCloud,Eureka

一、介绍

SpringCloud利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发。

提供了以下功能:

    服务注册于发现:Eureka

    负载均衡:Ribbon

    声明式调用:Feign

    熔断器:Hystrix

    路由网关:Zuul

    分布式配置中心:SpringCloud Config

    消息总线:SpringCloud Bus   

    服务链路追踪:SpringCloud Sleuth

    微服务监控:SpringBoot Admin

二、Eureka

    创建服务注册中心,需要用到Spring Cloud Netflix的Eureka。

    Eureka是一个基于REST的服务注册、发现模块。

    SpringCloud的服务注册发现不仅可以用Eureka,还可以用Zookeeper和Consul。

    我们需要创建两个eureka server,一个作为注册中心(Eureka Server),一个作为服务生产者(Eureka Client)。

    1、创建注册中心的Eureka Server

         (1)通过spring initialir创建一个SpringBoot工程

         (2)在创建工程时需引入Eureka的依赖:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

        (3)要让这个工程变成服务注册中心,只需要一个注解:@EnableEurekaServer,加载SpringBoot的启动Application上。

@EnableEurekaServer
@SpringBootApplication
public class SpringCloudDemoApplication {

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

        (4)配置application.yml

        Eureka包含两个角色,instance和client,instance为注册中心,client为需要注册的服务。client注册以后需要向instance发送心跳,保证client的存活。

        只要配置了eureka.instance,就可以成为注册中心。就可以通过配置的eureka.instance.hostname,server.port访问注册中心的web页面。

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

        server.port:本机服务的端口号

        registerWithEureka:instance自身也是client,可以通过该属性决定是否需要注册自己到Eureka服务器。

        fetchRegistry:表示是否需要从Eureka服务器获取注册信息。

Eureka的配置属性都在开源项目spring-cloud-netflix-master中定义(spring boot连文档都没有,只能看源码了),在这个项目中有两个类EurekaInstanceConfigBeanEurekaClientConfigBean,分别含有eureka.instance和eureka.client相关属性的解释和定义。        

    启动SpringBoot项目,可以通过  http://localhost:8761/ 访问注册中心web页面。

    2、创建服务生产者的Eureka Server

    当client向instance注册时,会提供元数据(主机、端口、主页url等)给instance,并开始发送心跳。如果心跳超时,通常会将该client从instance删除。

    创建过程与instance创建相似,区别在于:

    (1)注解。client的Application注解为@EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient
@RestController
public class HelloserviceApplication {
	@Value("${server.port}")
	String port;

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

	@RequestMapping("/say")
	public String say(String name){
		return "hello,"+ name +";this is port:"+port;
	}
}

    (2)配置。

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8762
spring:
  application:
    name: service-hi

    eureka.client.serviceUrl.defaultZone:Eureka Instance的eureka.client.serviceUrl.defaultZone

    spring.application.name:服务名。很重要,服务与服务直接的调用都是依赖这个。

   

    启动SpringBoot项目,可以通过 http://localhost:8762/say?name=longtian 访问该方法。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值