美文网首页我爱编程
springboot+springcloud基于Eureka的注

springboot+springcloud基于Eureka的注

作者: 大力水手_ | 来源:发表于2018-04-10 18:12 被阅读0次

springcloud带来的优点    

    1.相比于传统式集中式架构来说,他提供了一种新的架构思想,相比于原来的架构它更容易水平或者垂直的扩展

    2.在编译时 由于将整个项目拆分成很多小块,编译更加的迅速,方便我们调试。

    3.在部署的时候,当项目上线,不会因为一个点挂掉整个项目瘫痪,只会单点故障

    4.在大型的互联网公司,用到的开发语言不止一种,拆分成服务的话,我们只需要调接口取数据即可。

    5.极大程度上的进行了松耦合

    下图是我理解的分布式架构,水平不够,很片面。

一个简单的分布式

springcloud有哪些缺点

    1.拆分项目时的颗粒度不好确定,一个服务最好只做一件事情。

    2.对于分布式的架构来讲,或者说在使用这种微服务式的架构时,数据的一致性是一个大的问题。我看了很多篇文章讲的都很深奥,也没有个学习的方向。可以百度搜索一些经常用的方式二阶段提交和三阶段提交,分布式事务等等。在大的电商平台,一般都有对账的系统以及消息队列方式或者重试机制(当然重试机制一定要保证接口的正确性以及接口的幂等性,而这个幂等性的度要由自己控制)或者补偿机制。


切入正题,今天想学习一下springcloud,于是看了一些博文,总结了一些。

项目搭建环境

    使用开发工具Eclipse,jdk1.7,maven

eclipse版本

构建项目

    目标:搭建一个maven工程,其下有两个子模块,一个服务,一个注册中心

      1.  首先我们搭建一个maven的父工程,搭就完事儿了。

maven的父工程

    2.我们搭建一个注册中心,我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。

    不多说废话开搭。

    选中父工程new maven module 这里我直接使用的是jar形式的包

    然后在pom中添加我们需要的依赖,我不知道为什么简书一复制xml 就只有文本了,那些标签全都不能复制过来,希望大神们指导下。

dependency dependency management

接下来是我们application.yml中的配置,eureka是一个高可用的注册中心,没有缓存,实时发送心跳包检测注册的服务是否在线,默认情况下eureka server既是一个server也是一个client,所以在client我们配置的registerwithrureka 为false 和fetchRegistry false都是为了表明自己是一个server。

server:

    port: 8761

eureka:

    instance:

        hostname: localhost

    client:

        registerWithEureka: false

        fetchRegistry: false

        serviceUrl:

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

贴出springboot启动类的代码:@EnableEurekaServer表明自己是一个注册中心

package cn.yiside.eurekaServer;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication

@EnableEurekaServerpublic class EurekaServerApplication {

public static void main(String[] args) {

SpringApplication.run(EurekaServerApplication.class, args);

}

}

启动成功banner样式的显示

接下来我们访问 http://localhost:8761去看一下

springcloud的可视化管理

我们发现注册的application没有任何东西,因为我们没有注册,并且springcloud进入了保护模式

默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,这就可能变得非常危险了----因为微服务本身是健康的,此时本不应该注销这个微服务。

  Eureka Server通过“自我保护模式”来解决这个问题----当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。

自我保护模式是一种对网络异常的安全保护措施。使用自我保护模式,而已让Eureka集群更加的健壮、稳定。

在Spring Cloud中,可以使用eureka.server.enable-self-preservation=false来禁用自我保护模式

这个问题并不影响我们继续去进行接下来的步骤,所以继续。

3.我们要搭建一个服务,并且将其注册到注册中心中。

类似于注册中心的搭建模式,但是启动类和配置要有一些变化

启动类代码

@RestController注解是集成了controller和ajax的默认注解,需要导入jackson包

package cn.yiside.eurakaClient;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication

@RestController

@EnableEurekaClient

public class EurakaClientApplication {

public static void main(String[] args) {

SpringApplication.run(EurakaClientApplication.class, args);

}

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

private String port;

@RequestMapping("hi")

public String sayHi(@RequestParam String name){

return "你好"+name+"我来自"+port;

}

}

application.yml配置如下

表示我们注册的地址,以及我们这个服务的端口和发布到注册中心的服务名

eureka:

    client:

        serviceUrl:        

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

server:

    port: 8762

spring:

    application:

        name: service-sayHi

启动我们的服务。

注册服务成功

Status显示UP表示服务正常,可以使用。其它取值DOWN、OUT_OF_SERVICE、UNKNOWN等,只有UP的微服务会被请求。

访问我们的服务,看展示效果

访问成功

今天只学习了Eureka 注册中心 springCloud还有很多要学,加油。

以下是后期需要学习的springcloud的其他组件

分布式/版本化/集中化配置 - spring cloud config 服务注册发现 -Netflix Eureka 

路由 -Netflix Zuul 服务之间的点对点调用(Service-to-service calls)

 负载均衡-Netflix Ribbon 

断路器 -Netflix Hystrix 分布式消息

五大核心组件:

服务注册发现 -Netflix Eureka

配置中心- spring cloud config

负载均衡-Netflix Ribbon

断路器 -Netflix Hystrix

路由(网关) -Netflix Zuul

相关文章

网友评论

    本文标题:springboot+springcloud基于Eureka的注

    本文链接:https://www.haomeiwen.com/subject/hndnhftx.html