SpringCloud之Eureka概念及使用(一)

每一门技术必须了解运行机制后才可以方便快捷的使用,下面是我的一些理解:

学习SpirngCloud必须掌握的知识点:

  1. 系统拆分,功能模块拆分的思想(越细复杂度越高)
  2. 开发web服务技术SpringBoot RESTful web服务
  3. 服务注册中心Eureka,将web服务接口注册到中心中,隶属于SpringCloud
  4. 查找调用Eureka服务接口,如果在页面调用可用ajax,但是在server层调用可使用远程调用(RPC)
  5. 添加断路器、监控

简单介绍一下上面的技术:
为什么要搭建注册中心:
假如说目前有五个服务需要数据间的相互效用,传统实现方式为:
SpringCloud之Eureka概念及使用(一)_第1张图片
假如说服务B模块的数据发生改变,会直接影响到和和服务B相关的所有服务,可谓是牵一发而动全身,显然有很大弊端;但是采用注册中心的模式呢,整体逻辑为:
SpringCloud之Eureka概念及使用(一)_第2张图片
每一项服务都注册到注册中心,所有的服务直接访问注册中心去取数据,这样即使一个服务发生改变,并不会影响到其他服务。这就是搭建注册中心的好处

Eureka简介:

  • Eureka基于Netflix开源提供在服务注册和发现的产品
  • 服务和功能的提供者:将功能注册到中心,为其他功能服务
  • 服务注册中心:提供服务注册。发现、管理。监控功能
  • 服务和功能的调用者:到注册中心调用其他服务

添加断路器监控的原因:

  • 防止一个服务出现问题,其他服务继续调用出现问题延伸,加上断路器,当调用失败,给出反馈,能够精准定位到问题所在

SpringCloud之Eureka搭建过程,很简单,代码如下
从https://start.spring.io/中下载SpringBoot项目并添加Eureka依赖项目截图如下:
SpringCloud之Eureka概念及使用(一)_第3张图片
生成项目,用ide导入maven即可,导入成功后,Eureka骨架已做好,接下来做Eureka的特有配置,编辑application.yml

server: 
  port: 8761
eureka: 
  client: 
    registerWithEureka: false
    fetchRegistry: false
  serviceUrl: 
    defaultZone: http://localhost:${server.port}/eureka/

注意事项:1,千万不要用Tab键去缩进,不同的ide用Tab键的结果可能不同,采取空格符号去缩进。
2,缩进的时候,记得每一层缩进两个字母,不要多或少,切记也别重名。缩进两个字母切记切记,本人因为多缩进了一个字母的位置,导致运行不成功,排查了好长时间!

编辑程序启动类,添加@EnableEurekaServer注解,代码如下

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaApplication.class, args);
	}

启动浏览器,访问http://localhost:8761/如出现如下页面代表访问成功
SpringCloud之Eureka概念及使用(一)_第4张图片
至此服务中心Eureka搭建完毕,稍后更新博客,服务注册和服务调用博文及其源码

常见问题汇总:
一段时间没有操作后,Eureka页面出现红色字体,内容为

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

主要原因是因为Eureka进入了自我保护机制,默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳时,EurekaServer将会注销该实例(默认90s)。但是当网络发生故障时,微服务与EurekaServer之间无法通信,这样就会很危险了,因为微服务本身是很健康的,此时就不应该注销这个微服务,而Eureka通过自我保护机制来预防这种情况,当网络健康后,该EurekaServer节点就会自动退出自我保护模式;
解决方案:
1、在生产上可以开自注册,部署两个server
2、在本机器上测试的时候,可以把比值调低,比如0.49
3、或者简单粗暴把自我保护模式关闭

eureka: 
  server: 
     enableSelfPreservation: false #关闭注册中心自我保护机制

本次源码地址下载

你可能感兴趣的:(微服务)