springCloud笔记(一)服务注册中心

Eureka、Zookeeper、Consul注册中心的异同点

组件名语言CAP服务健康检查堆外暴露接口spring cloud集成
EurekaJavaAP可配支持Http已集成
ConsulGoCP支持Http/DNS已集成
ZookeeperJavaCP支持客户端已集成

在这里插入图片描述

  • C:consistency(强一致性)

  • A:Availability(可用性)

  • P:Partition tolerance(分区容错性)

CAP理论关乎粒度是数据,而不是整体系统设计的策略

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三类

CA-单点集群,满足一致性、可用性的系统,通常在可扩展性上不太强大

CP-满足一致性,分区容忍性的系统,通常性能不是特别高 zk、consul

AP-满足可用性、分区容忍性的系统,通常可能对一致性要求低一些 eureka

一、Eureka

1、什么是服务治理

​ 在传统的rpc远程调用的框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册

2、什么是服务注册与发现

​ eureka采用了cs的设计架构,eureka server作为服务则测功能的服务器,他是服务注册中心,而系统中的其他微服务,使用eureka的客户端连接到eureka server 并维持心跳连接,这样系统的维护人员就可以通过eureka server来监控系统中各个微服务是否正常运行

​ 在服务注册与发现中,有一个注册中心, 当服务器启动的时候,会把当前自己的服务器的信息,比如服务地址通讯地址以别名方式注册到注册中心上,另一方以该别名的方式去注册中心上获取到实际的服务通信地址,然后在实现本地rpc调用rpc远程调用框架核心思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理理念),在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口))

3、eureka包含两个组件:eureka servre和eureka client

  • eureka server提供服务注册服务

​ 各个微服务节点通过配置启动后,会在eurekaserver中进行注册,这样eurekaserver中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到

  • eurekaclient通过注册中心进行访问

​ 是一个java客户端,用于简化eureka server的交互,客户端同时也具备一个内置、使用轮询负载算法的负载均衡器,在应用启动后,将会向eurekaserver发送心跳(默认周期30秒),如果eurekaserver在多个心跳周期内没有接收到某个节点的心跳,eurekaserver将会从服务注册表中把这个节点移除(默认90秒)

4、pom配置

<dependency>
    <groupId>org,springframework.cloud<groupId>
	<actifactId>spring-cloud-starter-nerflix-eureka-client</actifactId>
</dependency>

5、yml配置

服务端:使用@EnableEruekaServer开启服务

eureka:
  instance:
    hostname: localhost  #erueka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    registry-with-eureka: false
    #false表示自己端就是服务中心,职责就是维护服务实例,不需要检索服务
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka,instance,hostname}:${server.port}/eureka/

客户端:使用@EnableEurekaClient使用服务,可以用@EnableDiscoveryClient来替代,该注解可以理解为通用客户端注解(使用zk,consul、nacos都可以使用这个)

spring:
  appplication:
    name: payment8001
eureka:
  client:
    #表示是否将自己注册进eurekaserver默认为true
    registry-with-erueka: true
    #是否从eurekaserver抓取已有的注册信息,默认为true,单节点无所谓,集群
    #必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka
  # eureka的注册默认是主机名,可以改成服务名称,只需要添加以下配置
  instance-id: payment8001
  # 还可以添加ip提示,在eureka页面鼠标触碰访问路径提示ip,添加配置
  #prefer-ip-address: true

6、服务发现Discovery

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息

@Resource 
private DiscoveryService discoveryService;
@GetMapping(value="x")
public Object discovery(){
    //获取了eureka的所有的服务
    List<String> service=discoveryService.getServices();
    //获取实例下面的服务列表
    discovery.getInstances("CLOUD-PAYMENT-SERVCICE")
}

二、Zookeeper

使用zookeeper加springcloud开启服务中心来替代停更的Eureka

1、pom配置

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>

2、yml配置

server:
  port: 8004
spring:
  application:
    name: cloud-provider-zookeeper-payment
  cloud:
    zookeeper:
    connect-string: 192.168.111.144:2181

3、启动类

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

4、引用

@configuration 
public class ApplicationContextBean{

    @Bean
    @LoadBalanced
    public RestTemplate get RestTemplate{
        return new RestTemplate();
    }
}

三、Consul

1、简介

是一套分布式服务发现和配置管理系统,由go语言开发

提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据性需要单独使用,也可以一起使用以构建全方位的服务网格,总之consul提供了一种完整的服务网格解决方案

2、功能介绍

  1. 服务发现:提供http和dns两种发现方式

  2. 健康检测:支持多种方法,http、Tcp、docker、shell脚本定制化

  3. kv存储:key、value的存储方式

  4. 多数据中心:consul支持多数据中心

  5. 可视化web界面

3、下载使用

  1. https://learn.hashicorp.com/consul/getting-started/install.html

  2. 下载完成后只有一个consul.exe文件,双击运行,查看版本号

    consul --version
    
  3. 使用开发者模式启动

    consul agent -dev
    

    通过地址访问consul首页:http://localhost:8500

4、官方文档(中文)

https://www.springcloud.cc/spring-cloud-consul.html

5、配置文件

1、pom配置

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

2、yml配置

spring:
  application:
  	name: consul-provider-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

3、启动类

@SpringBootApplication
@EnableDiscoveryClient
public class Application{
    public static void main(String[] args) {
    	SpringApplication.run(Application.class,args);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值