SpringCloud 微服务 (二) Eureka (Server)

微服务是一种架构风格,设计思想前端

特色    ① 由一系列微小的服务组成java

           ② 运行独立,互不干扰spring

           ③ 独立部署后端

           ④ 每一个微小的服务都有本身的业务实现安全

           ⑤ 各自独立分散服务管理-->分布式管理架构

 

单体架构: 测试的时候在一块儿,容易测试,部署的时候就一个war包,这种架构开发效率受到影响,当应用愈来愈大的时候,维护起来比较麻烦,改动应用小bug须要从新总体部署,部署一次也可能须要很长的时间,模块性能扩展有限app

 

服务注册发现: 注册方提供信息, 服务方经过注册方的信息, 发现注册服务;框架

服务网关: 除了服务的信息交互,还须要与外界进行交互,因此须要暴露本身的服务,但也不能什么都暴露,就涉及到服务网关,网关能够过滤后端信息,前端配合须要路由控制引导微服务选择,由于全部的请求都会通过网关,因此还能够限流,容错,监控,日志,安全,防爬虫等等操做分布式

后端服务,前端服务: 互相配合,完成服务的最简化业务实现. 好比后端服务提供A,B接口,前端服务能够根据业务场景拆分,聚合后端服务,将A,B合并返回或者拆分A中的一部分返回.ide

 

方案A: Spring全家桶 ...(本次,就决定是他了)

方案B: Dubbo服务,Zookeeper注册中心 ...

 

SpringCloud提供了微服务开发所需的配置,是一个开发工具集,有不少个子项目,开源框架

利用SpringBoot开发,方便, 基于Netflix开源组件封装,强大的微服务组件

总而言之SpringCloud简化了分布式开发,重要在理解分布式、架构特色以及组件

 

SpringCloud Eureka基于Netflix Eureka的封装,

主要两个组件: 注册中心(Eureka Server)、服务注册(Eureka Client)

 

Eureka Server 注册中心

注册中心记录服务信息,状态, 好比服务名字,运行的状况

 

建立E:/MyCloud文件夹,后续实践的应用都放在此处

利用IDEA的Spring Initializr构建一个SpringBoot项目,第一步

第二步,选择Cloud Discovery-Eureka Server,而且SpringBoot版本2.0.2

第三步,选择个人建立路径目录E:/MyCloud

第四步,建立好了,把不须要的文件删除掉,没用

右下角会提示说Add as Maven Project or Disable notification,

选择Add as Maven Project,加载一会就行了, 最后的目录展现 

若是以为com.server.eureka不爽,不想叠在一块儿,能够按下图设置一下,

把Hide Empty Middle Packages的勾去掉

再启动类上加一个注解@EnableEurekaServer,标识他是EurekaServer注册中心

启动项目的时候会报一些错,先无论,访问一下localhost:8080,成功 以下

Instances currently registered with Eureka是注册服务列表

目前只有Server,尚未创建Client,因此是空的

 

回来看控制器报错的缘由,关于@EnableEurekaServer注解

Cannot execute request on any known server

由于他虽然被标识为Server,但他本身同时也是Client,会心跳检测Server,没有找到报错

在application.yml文件中配置,顺便加个name,运行

spring:
  application:
    name: my first eureka

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

每次不知道怎么配置的时候,能够Ctrl+左键,进入查看方法信息,或多或少能够知道点套路

这时候,服务中心 发现了本身,name为刚刚设置的my first eureka,默认Zone也替换掉了

 

通过上面的测试,回到服务中心,咱们就想他作一件事就够了,不用又作服务中心,又作注册服务的,

因此在刚刚的yml文件中加一个配置register-with-eureka: false ,对于此eureka取消注册

spring:
  application:
    name: my first eureka

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false

重启访问,就会发现没有注册服务了,OK完成

 

 

提示端口8080很经常使用,建议改一个,eureka的默认是8761

应用启动时,控制台有不少提示信息

yml 配置属性

// 将IP注册到Eureka Server上,若是不配置就是机器的主机名
eureka.instance.prefer-ip-address=true

// 设置自我保护
eureka.server.enable-self-preservation=false

// 自我保护系数(默认0.85)
eureka.server.renewal-percent-threshold=0.55

// 表示是否将本身注册到Eureka Server,默认为true
eureka.client.register-with-eureka=false

// 表示是否从Eureka Server获取注册信息,默认为true
eureka.client.fetch-registry=false

// 自动检查失效服务的间隔时间(单位毫秒)
eureka.server.eviction-interval-timer-in-ms=6000

// 设置eureka server同步失败的等待时间 默认 5分 , 在这期间,它不向客户端提供服务注册信息
eureka.server.wait-time-in-ms-when-sync-empty=5

// 设置eureka server同步失败的重试次数 默认为 5 次
eureka.server.number-of-replication-retries=5

--------------------------------------------------------

相关文章
相关标签/搜索