走进服务注册中心---Eureka

Spring cloud的整体架构

 原始方式:服务的消费者直接通过访问服务提供者的url去调用里面的方法:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class WebController {

    @Autowired
    private RestTemplate restTemplate;
    @RequestMapping("/web/hello")
    public String hello(){
        // 逻辑判断省略不写

        // 调用springcloud服务提供者提供的服务
        return restTemplate.getForEntity("http://127.0.0.1:8080/service/hello",String.class).getBody();
    }
}

 该方法的缺点:将url写死,如果被调用的方法其url改变了,那么在本方法中也要去改变url,这样就及其不方便,所以引入注册中心。

注册中心Eureka

在微服务架构中,服务注册与发现是核心组件之一,手动指定每个服务是很低效的,spring cloud提供了多种服务注册与发现的实现方式,例如:Eureka、Consul、Zookeeper。

Spring Cloud支持得最好的是Eureka,其次是Consul,再次是Zookeeper。

什么是服务注册?

服务注册:将服务所在主机、端口、版本号、通信协议等信息登记到注册中心上;

什么是服务发现?

服务发现:服务消费者向注册中心请求已经登记的服务列表,然后得到某个服务的主机、端口、版本号、通信协议等信息,从而实现对具体服务的调用。

Eureka是什么?

Eureka是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心。

Eureka是一个基于REST的服务,用来定位服务,进行中间层服务器的负载均衡和故障转移;

Eureka是Netflix公司开发的,Spring Cloud封装了Netflix公司开发的Eureka模块来实现服务注册和发现,也就是说Spring Cloud对Netflix Eureka做了二次封装;

Eureka采用了C-S(客户端/服务端)的设计架构,也就是Eureka由两个组件组成:Eureka服务端和Eureka客户端。Eureka Server作为服务注册的服务端,它是服务注册中心,而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server服务端,并维持心跳连接,Eureka客户端是一个Java客户端,用来简化与服务器的交互、负载均衡,服务的故障切换等;

有了Eureka注册中心,系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。

Eureka与Zookeeper的比较

著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。

由于分区容错性在分布式系统中是必须要保证的,因为只能在A和C之间进行权衡,在此Zookeeper保证的CP,而Eureka则是AP。

Zookeeper保证CP

在Zookeeper中,当master节点因为网络故障与其他节点失去联系的时候,剩余的节点会重新进行leader选举,但是问题在于,选举leader需要一定时间,并且选择期间整个Zookeeper集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因为网络问题使得Zookeeper集群失去master节点是大概率事件,虽然服务最终能够恢复,但是在选举时间内导致服务注册长期不可用是难以容忍的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值