spring cloud脚手架搭建

Spring cloud 脚手架调研

  • Spring cloud脚手架的特点
  • Spring cloud脚手架的功能
  1. eureka 注册中心
  2. zuul 网关
  3. SpringBoot Admin 监控
  4. demo service 服务
  • eureka注册中心
  1. 什么是eureka注册中心

Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务,包含Server

和Client两部分。

2、eureka优势

2.1. 它提供了完整的Service Registry和Service Discovery实现

2.2. 和Spring Cloud无缝集成

我们的项目本身就使用了Spring Cloud和Spring Boot,同时Spring Cloud还有一套非常完善的开源代码来整合Eureka,所以使用起来非常方便。

另外,Eureka还支持在我们应用自身的容器中启动,也就是说我们的应用启动完之后,既充当了Eureka的角色,同时也是服务的提供者。这样就极大地提高了服务的可用性。

这一点是我们选择Eureka而不是zk、etcd等的主要原因,为了提高配置中心的可用性和降低部署复杂度,我们需要尽可能地减少外部依赖。

2.3.Open Source

最后一点是开源,由于代码是开源的,所以非常便于我们了解它的实现原理和排查问题。

    3、eureka介绍(https://blog.csdn.net/fivehundredyearsago/article/details/80693105)

Application Service 服务提供者

Application Client  服务消费者

Make Remote Call  调用RESTful API行为

3.1 是纯正的 servlet 应用,需构建成war包部署 

3.2使用了 Jersey 框架实现自身的 RESTful HTTP接口 

3.3 peer之间的同步与服务的注册全部通过 HTTP 协议实现 

3.4定时任务(发送心跳、定时清理过期服务、节点同步等)通过 JDK 自带的 Timer 实现 

3.5内存缓存使用Google的guava包实现

Eureka包含两个组件:

1、Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息,Eureka Server会存储这些信息。

2、Eureka Client是一个Java客户端,用于简化与Eureka Server的交互。

3、微服务启动后,会周期性(默认30秒)地想Eureka Server发送心跳以续约自己的租期。

4、如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会自动注销该实例(默认90秒)。

5、默认情况下Eureka Server同时也是Eureka Client,多个Eureka Server实例互相之间通过复制的方式,来实现服务注册表中的数据同步。

6、Eureka Client会缓存服务注册表中的信息,从而降低了Eureka Server的压力,其次,即使Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。

 

综上,Eureka通过心跳检查、客户端缓存等机制,提高了系统的灵活性,可伸缩性和可用性。

 

eureka-core 模块包含了功能的核心实现: 

1. com.netflix.eureka.cluster - 与peer节点复制(replication)相关的功能 

2. com.netflix.eureka.lease - 即”租约”, 用来控制注册信息的生命周期(添加、清除、续约) 

3. com.netflix.eureka.registry - 存储、查询服务注册信息 

4. com.netflix.eureka.resources - RESTful风格中的”R”, 即资源。相当于SpringMVC中的Controller 

5. com.netflix.eureka.transport - 发送HTTP请求的客户端,如发送心跳 

6. com.netflix.eureka.aws - 与amazon AWS服务相关的类

eureka-client模块: 

Eureka客户端,微服务通过该客户端与Eureka进行通讯,屏蔽了通讯细节

eureka-server模块: 

包含了 servlet 应用的基本配置,如 web.xml。构建成功后在该模块下会生成可部署的war包。

4、eureka注册中心的部署流程

2.1、创建工程选择cloud discovery->eureka server

2.2、启动一个服务注册中心,只需要在启动类加上注解@EnableEurekaServer

2.3、进行application.yml配置

server:

  port: 8761

eureka:

  instance:

    hostname: localhost

  client:

    registerWithEureka: false

    fetchRegistry: false

    serviceUrl:

      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

2.4、此时打开浏览器访问:会显示No instance available

2.5、创建一个服务提供者 (eureka client):

当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。

2.6、通过注解@EnableEurekaClient 表明自己是一个eurekaclient.

2.7、在启动类添加  

@Value("${server.port}")

    String port;

    @RequestMapping("/hi")

    public String home(@RequestParam String name) {

        return "hi "+name+",i am from port:" +port;

    }

2.8、在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下:

eureka:

  client:

    serviceUrl:

      defaultZone: http://localhost:8761/eureka/

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值