SpringBoot-eureka

Server

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

spring-cloud-starter-netflix-eureka-server

依赖的是这个模块,十分注意,serverclient是严格区分的。

  • properties
server:
  port: 8761
eureka:
  instance:
    appname: eureka-server
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:8761/eureka/

server.port:服务端口指定

eureka.instance.nameeureka实例名称的指定

client.fetch-registry:是否发现服务,默认为true,作为serverconsumer可以不用注册,不过想完全监控服务的话可以都进行注册

register-with-eureka:是否把server自身注册到服务中,默认true,不想浪费资源就false,想同一管理就true

service-url:指定服务的注册地址,访问页面就在8761,下面这个是注册地址而不是页面访问地址,注意区分

defaultZone:默认地址的默认key,注意区分大小写,或者进源码复制粘贴,千万注意啊

: http://localhost:8761/eureka/:指定的注册地址了,最后一个注意/,又是后匹配有问题

  • main
@EnableEurekaServer
@SpringBootApplication
public class ServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(ServerApplication.class, args);
	}
}

@EnableEurekaServer:使能,都懂的

Provider

  • pom
<dependency>
		<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-cloud-starter-netflix-eureka-client:注意区分serverclient

注册中心采用server,服务注册或引用,导入的都是spring-cloud-starter-netflix-eureka-client

spring-boot-starter-webeureka采用的都是rest接口,服务提供的话都是用http进行通信。

所以服务对外一般都是controller的编写,TCP之类的不太清楚,不过zookeeper就是RPC

  • properties
server:
  port: 8801
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    fetch-registry: false
spring:
  application:
    name: PROVIDER

fetch-registry:服务提供者嘛,我干脆就指定不进行服务发现了。

spring.application.name:这个名称要指定,在注册和发现的时候用的都是这个名称。

  • provider
@RestController
public class MyController {
    @GetMapping("/product")
    public String getProduct(){
        return "Product";
    }
}

提供的服务就是一般的http接口服务,没有什么特异之处,关键在于消费端的调用。

  • main
@EnableEurekaClient
@SpringBootApplication
public class ProviderApplication {
	public static void main(String[] args) {
		SpringApplication.run(ProviderApplication.class, args);
	}
}

@EnableEurekaClient:这个值得注意,通过入口函数的标记,完全就能够区分出serverproviderconsumer三种角色,而EnableEurekaClient表示的就是简单连接,客户端的简单连接就代表着注册服务,这个能够完全识别出就是provider

Consumer

  • pom
<dependency>
		<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

provider,使用spring-cloud-starter-netflix-eureka-client连接server.

spring-boot-starter-web只是为了衔接rest表示连贯,消费模式不一定就需要http作为借口触发。

  • properties
server:
  port: 8802
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: CONSUMER

spring.application.name:CONSUMER,服务注册名称

注意server.port的错位,不同服务器好说,单机的话注意端口不要冲突。

不论是server,provider,consumer或者是同一类型的多实例。

  • consumer
@RestController
public class MyController {
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/consumer")
    public String consumerProduct(@RequestParam("name") String name){
        String product = restTemplate.getForObject("http://PROVIDER/product", String.class);
        return name + " consume the product [" + product + "]";
    }
}

这里面值得注意的是RestTemplateSpring-Boot本身的尿性就是在借口调用的时候喜欢Template,

RedisTemplate,ElasticsearchTemplate…,这个就是RestTemplate,通过它我们就能够简单的发起请求,具体用法只能自己慢慢研究了。

http://PROVIDER/product:这就是它的接口调用的特异点,我们并不是直接进行服务访问,而是通过域名进行的访问,而这个域名,就是我们服务注册时候的spring.application.name

eureka的服务管理和维护,就是变成域名,自动的映射地址和端口。

我们的服务发现,其实就是在eureka维护的网站之中自动域名匹配,从而发起请求,调用服务。

  • main
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {
	public static void main(String[] args) {
		SpringApplication.run(ConsumerApplication.class, args);
	}
    @LoadBalanced
	@Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

@EnableDiscoveryClient:说了能辨识,这下明确了吧。

@EnableEurekaServer:开启服务

@EnableEurekaClient:开启客户端,注册服务

@EnableDiscoveryClient:开启客户端,发现服务

相当于一个是网站管理,一个是网站注册,一个是网站查询和访问

RestTemplate:这个东西后台并没有自动注入,只能手动进行注入了。

@LoadBalanced:负载均衡,或者叫做轮询访问?一个服务对应多个实例的时候,它会尝试把任务平均,减缓访问压力。

效果

  • server
    在这里插入图片描述

  • consumer
    在这里插入图片描述

警告

  • 包名

包名注意区分,不论是创建工程时还是手动maven引入,这种点容易被忽视。

  • 配置

如果不是专门研究的话,建议进行简单配置,过于负责的配置容易引起一些能力之外的问题。

  • 注解

三种注解区分角色,这样记忆不容易出错,只记忆注解,容易标记错误。

  • 地址

注意区分页面地址注册地址,这个并不是大问题,不过容易引起观念冲突。对于比较较劲的人,这种反而是天大的事,想要弄个明白,这点也不能马虎。

  • 其他

调试过程中,发现错误,修改以后还是不行的话,建议重启或者多尝试几遍。

我的也没错,但是后来自己好了。猜测两个原因

  1. 服务刷新

毕竟只会注册服务,不会注销服务,刷新机制也不够透彻,不能够完全避免自己的无知引起的问题,因此只能够笨办法----重启服务,这样全部刷新以后就是全新的。

  1. 机器原因

之前也是,rediselasticsearchzookeeper,其实服务没问题,但是我当时就是访问出错,但是过一会就好了,不敢保证是机器或者是服务的原因,不过如果有耐心一点,说不定能够获得收获。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值