springcloud Eureka

这里是修真院后端小课堂,每篇分享文从html

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】java

八个方面深度解析后端知识/技能,本篇分享的是:程序员

【springcloud Eureka    】算法

 

你们好,我是IT修真院深圳分院第十三期学员,一枚正直纯洁善良的JAVA程序员。
今天给你们分享一下,修真院官网JAVA任务四里面的一个扩展:初识springboot和freemarker。spring

1 背景介绍
1.1 springcloud是什么
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,均可以用Spring Boot的开发风格作到一键启动和部署。 本质是一个基于springboot的一体系微服务框架。
1.2 eureka是什么?
Eureka是Netflix开发的服务发现框架,自己是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
2 知识剖析
2.1 eureka的特色
一、Eureka包含两个组件:Eureka Server和Eureka Client。后端

二、Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储全部可用服务节点的信息,服务节点的信息能够在界面中直观的看到。缓存

三、Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就别一个内置的、使用轮询(round-robin)负载算法的负载均衡器。springboot

四、在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,若是Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。网络

五、Eureka Server之间经过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即便全部的Eureka Server都挂掉,客户端依然能够利用缓存中的信息消费其余服务的API.app

2.2 eureka和zookeeper对比
一、著名的CAP理论指出,一个分布式系统不可能同时知足C(一致性)、A(可用性)、和P(分区容错性)。因为分区容错性P在分布式系统中必需要保证的,所以咱们只能在A和C之间进行权衡。Zookeeper保证的是CP, Eureka则是AP。

二、Zoopkeeper保证CP:
当向注册中心查询服务列表时,咱们能够容忍注册中心返回的是几分钟之前的注册信息,可是不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。可是zk会出现这样的一种状况,当master节点因网路故障与其余节点失去联系时,剩余的节点会从新进行leader选举。问题在于,选举leader的时间太长,30~120s,且选举期间整个zk集群是都是不可用的,这就致使在选举期间注册服务瘫痪,在云部署的环境下,因网络问题使得zk集群失去master节点是较大几率会发生的事,虽然服务可以最终恢复,可是漫长的选举时间致使的注册长期不可用是不能容忍的。

三、Eureka保证AP:
Eureka看明白了这一点,所以在设计时就优先保证可用性。Eureka各个节点都是平等的,几个节点挂掉不影响正常节点的工做,剩余的节点依然能够提供注册和查询服务。而Eureka的客户端在向某个Eureka注册时若是发现链接失败,则会自动切换至其余的节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证一致性)。除此以外,Eureka还有一种自我保护机制,若是在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现如下几种状况:

3.1.Eureka再也不从注册列表中移除由于长时间没有收到心跳而应该过时的服务

3.2.Eureka仍然可以接受新服务的注册和查询请求,可是不会被同步到其它节点上(即保证当前节点依然可用)

3.3.当前网络稳定时,当前实例新的注册信息会被同步到其它节点中

3.常见问题
eureka server避免注册本身

4 解决方案
在application配置文件加入:

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false1234
5.编码实战

6.扩展思考

二、除了freemarker还有什么模板引擎比较流行
除了freemaker还有theamleaf模板引擎,目前springboot官方的模板引擎就是theamleaf,使用theamleaf的好处是theamleaf使用过的就是html文件,不须要想freemarker同样去修改文件后缀为ftl。

7.参考文献
CSDN、百度百科

8 更多讨论
一、springcloud 能够结合zookeeper吗?
springcloud可使用zookeeper做为注册中心,也能够用consul做为注册中心,并不是必定要用eureka。只不过使用eureka的话,能共使用Netflix的oss组件,搭建起来更加方便。
二、eureka中的角色是怎么划分?
eureka中的角色划分分为server和client。其中server提供注册服务,client是须要注册的服务,其中client还分为生产者和消费者。一个生产者既能够是生产者也能够消费者。
三、eureka如何作集群?
eureka作集群也很容易,只须要把eureka的server注册中心的配置文件添加:

server:
  port: 8761
  profiles: peer1
eureka:
  instance:
    hostname: http://peer2:8762/eureka/
    server:
  port: 8762
  profiles: peer2
eureka:
  instance:
    hostname: http://peer1:8761/eureka/123456789101112
今天的分享就到这里啦,欢迎你们点赞、转发、留言、拍砖~

技能树.IT修真院

“咱们相信人人均可以成为一个工程师,如今开始,找个师兄,带你入门,掌控本身学习的节奏,学习的路上再也不迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了本身的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

快来与我一块儿学习吧~ http://www.jnshu.com/login/1/...

腾讯视频:https://v.qq.com/x/page/d0708...

相关文章
相关标签/搜索