栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

EureKa服务注册中心

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EureKa服务注册中心

生命不息、学习不止

入行java后,各种框架什么的,都需要掌握啊,题主也还是在不断学习中。

现在所有的互联网公司,都是在用微服务,除去一些老的传统行业,可能还是在使用Struts或者Spring等。微服务的相关概念,仍然是主流。一起学习吧!

目录

一、注册中心

二、常见的服务注册中心

三、EureKa项目搭建与实例获取

 四、验证是否可以访问

五、eureka访问服务是怎么选择提供者访问的呢?(负载均衡)

 六、其他配置 下线

七、架构原理


一、注册中心

凡是都是要先提问题的,什么是注册中心呢?

大家肯定在编写业务代码的时候,肯定会获取数据,当获取数据的URL是可变的,是不是经常会需要更改配置或者代码,还得重启服务。相信大家肯定都有遇到,所以在微服务中,服务与服务之间都是低耦合的。注册中心也就是集中管理服务的一个组件,也是微服务中最基本的一个组件。

二、常见的服务注册中心

下图是常见的注册中心及各自的特性

 CAP特性:Consistency、Availability、Partition tolerance

C:在分布式系统中的所有数据备份,在同一时刻是否是同样的值。(一致性)

A:保证每个请求不论成功或者失败都有回应。(可用性)

P:系统中任意信息的丢失或失败不会影响系统的继续运作。(分区容错性)

三、EureKa项目搭建与实例获取

1、新建项目--maven的多module项目--项目构建不会的自行先学习学习哈

2、新建EureKa的module(springboot)--导入依赖--cloud依赖--eureka依赖


    1.8
    Hoxton.SR1


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        


    
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
    

3、配置单机或集群

单机:一个服务

集群:多个服务

3.1 项目搭建好后,先增加注解:项目启动类加上@EnableEurekaServer

3.2 修改hosts配置 自定义域名对应本机IP即可

如:127.0.0.1   eureka-01 #多个就写多行

3.3  修改项目配置 

spring.application.name=eureka-server
eureka.instance.hostname=eureka-01
# ip + port显示
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}

以上配置必须有

单机:

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

集群:

eureka.client.service-url.defaultZone=http://test:666666@eureka-02:8762/eureka,http://test:111111@eureka-03:8763/eureka

单机或集群根据你的项目选择,集群需要注意,上面的test:666666为账号与密码,如果你的项目没有配置springSecurity则不需要,eureka-02是其他的eureka客户端

启动对应的服务后可访问你的eureka客户端查看集群是否搭建完成 

 成功访问上图就成功啦

4.新增消费者和提供者module (springboot工程)

导入依赖


    1.8
    Hoxton.SR1


    
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-client
    


    
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
    

4.1 项目搭建好后,先增加注解:项目启动类加上@EnableEurekaClient

4.2 增加配置

eureka.client.service-url.defaultZone=http://test:888888@eureka-01:8761/eureka,http://test:666666@eureka-02:8762/eureka,http://test:111111@eureka-03:8763/eureka
# 表示是否将自己注册到注册中心,默认为true
eureka.client.register-with-eureka=false

4.3 启动项目,查看是否注册到eureka (一般先启动提供者、后启动消费者)

 四、验证是否可以访问

1、消费者中注入Bean

//获取实例
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
    return new RestTemplate();
}

@Autowired
private RestTemplate restTemplate;

@RequestMapping("/hello")
public String sayHello(){
    //指出服务地址   http://{服务提供者应用名名称}/{具体的controller}
    String url = "http://provider-user/user/sayHello";
    //返回值类型和我们的业务返回值一致 参数:地址、返回参数类型
    return restTemplate.getForObject(url,String.class);
}

提供者写对应的业务代码

@RequestMapping("/user/sayHello")
public String sayHello(){
    return "I'm provider-1 ,hello consumer!";
}

若指定方法是Get,那就用Get,如果是POST则使用postForObject,RestTemplate支持Http的相关方法

 上图就是访问成功啦!

五、eureka访问服务是怎么选择提供者访问的呢?(负载均衡)

负载均衡机制:

1、轮询--RoundRobinRule

2、随机--RandomRule

3、响应权重--ResponseTimeWeightedRule

4、最小并发--BestAvailableRule

源码:

 

 

定义规则:可自由配置

 1、全局配置访问规则 注入Bean

@Bean
public IRule rule(){
    return new RandomRule();
}

2、局部配置

配置文件中加入:服务实例名+....

provider-user.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

 六、其他配置 下线

1、注册服务保留失效服务的时间 eureka.server.eviction-interval-timer-in-ms 设置较小值,单位毫秒 
eureka.server.enable-self-preservation

2、业务服务 设置失效剔除 eureka.instance.lease-expiration-duration-in-seconds
指EureKa服务端在收到最后一次心跳之后等待的时间,单位为秒,超过则剔除,默认90秒

七、架构原理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396569.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号