springcloud微服务二:Eureka服务治理之服务注册中心

当初步的学习了spring boot,了解了spring boot的基本实现过程后,我就正式开始学习spring cloud,首先就从Eureka服务治理开始。

服务治理包含三个核心的角色:服务注册中心、服务提供者和服务消费者,他们相对独立,新的服务要向服务注册中心注册,新的消费者会向服务注册中心索引服务列表。

一番了解之后,让我想到了人才招聘。在我看来,现在普遍存在的招聘形式也是分为了三个部分:招聘网站或者人才市场、发布招聘需求的企业、需要找工作的人。当然了,也可以把企业和人换一下位置,那就是:招聘网站或者人才市场、找工作的人发布的简历、需要招聘的企业。

那么这里的招聘网站或者人才市场就如同Eureka服务治理中的服务注册中心,不管是企业的招聘需求还是人的简历,都可以看做一种需求的同时看成一种服务。当有了一个这种新的服务或者需求后会发布在网站上或者人才市场,实际上就相当于Eureka服务治理中,新的服务通知注册到服务注册中心。而我们企业查找相关简历,或者找工作的人查找相关的招聘需求,就是客户端向注册中心索引服务。

在这个过程中,招聘网站、企业和找工作的人是各自独立的,由招聘网站把企业和人联系起来,前提就是企业和人知道网站的地址,这就如同在Eureka服务治理的服务提供者和服务消费者的application.properties文件中配置eureka.client.serviceUrl.defaultZone来指定服务注册中心。

有了一点简单的理解之后,就是实际的项目构建,首先需要构建一个基础的spring boot项目作为服务注册中心,勾选web选项,这样会创建一个上一篇结构的项目。然后在pom.xml文件中加入Eureka的以来配置:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

以及如下的dependencyManagement,指定spring cloud的版本:

<dependencyManagement>
        <dependencies>
            <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Brixton.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

这里需要注意的是,spring cloud的版本号是以英国伦敦地铁站的名字命名的,按首字母A-Z的顺序排,不同的spring cloud版本相对应的spring boot的版本是有限制的,否则无法使用。
具体的对应需要参考官网说明,目前比较新的spring boot版本是1.5.2,而对应的spring cloud的版本是Dalston,我这里例子中用的是1.3.8的spring boot,因此spring cloud版本是Brixton。

配置好依赖之后,下一步就是在创建项目时自动生成的那个类中加入@EnableEurekaServer注解,来启动一个服务注册中心,如下:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServer1Application {

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

然后便是在基本的配置文件application.properties中进行一些必要的配置:

#应用名,服务名,如果不指定就是unkown
spring.application.name=eureka-server
#服务端口,实际上就是tomcat端口,浏览器访问或者其他地方调用时需要用的端口
server.port=1000
#实例的主机名
eureka.instance.hostname=server1
#设置是否向注册中心注册,默认是true
eureka.client.register-with-eureka=false
#是否需要去检索寻找服务,默认是true
eureka.client.fetch-registry=false
#指定注册中心
eureka.client.serviceUrl.defaultZone=http://server1:1000/eureka/

就这样,一个简单的Eureka服务注册中心就完成了,除了引入依赖包的配置、properties的基本配置外,就是在代码中加了一个@EnableEurekaServer,非常的简单。
然后浏览其访问localhost:1000或者server1:1000(这里使用主机名需要配置ip和主机的映射)就可以看到如下界面:

如果有新的服务注册到服务注册中心,那么在上图中红框标注的地方就会有所显示,就比如如果我修改application.properties文件,去掉这一段配置:

#设置是否向注册中心注册,默认是true
eureka.client.register-with-eureka=false
#是否需要去检索寻找服务,默认是true
eureka.client.fetch-registry=false

那么该服务注册中心就会把自己也当做一个服务注册到这个注册中心中,那么就会如下图所示:

上边所实现的是单机版的服务注册中心,而微服务架构的九大特征之一就是高可用性,也就是需要注册中心从单机模式变为集群模式,使其中某个注册中心出现故障的情况下不影响整个业务系统的运行。
在spring cloud中,这个实现过程就十分的简单,简单到我们只需要在上述的过程中仅仅做一个很小的配置修改就可以了。
一是去掉eureka.client.register-with-eureka=false和eureka.client.fetch-registry=false的配置,使得注册中心可以自己把自己注册为服务,二是在指定注册中心的时候指定所有的注册中心,三是修改端口和主机实例名,修改后的配置如下:

spring.application.name=eureka-server
server.port=1000
eureka.instance.hostname=server1
eureka.client.serviceUrl.defaultZone=http://server1:1000/eureka/,http://server2:2000/eureka/

同样的,我们需要在另一个注册中心中把配置文件改为类似下边的样子:

spring.application.name=eureka-server
server.port=2000
eureka.instance.hostname=server2
eureka.client.serviceUrl.defaultZone=http://server1:1000/eureka/,http://server2:2000/eureka/

然后我们启动其中一个注册中心后再访问各自的页面,会看到如下所示:

这时候会看到我们的服务注册中心已经成为了集群模式,但是server2是unavailable的,并不可用,而当我们把另一个注册中心server2启动后,就会看到有些内容有了变化,server2也是可用的了,同样的,如果访问server2的页面,会看到这里列出server1的状态。

正常情况来说,两个注册中心是应该在不同的服务器中运行的,这样才能更好的实现高可用,所以就是两套代码。
但是在学习的过程中由于环境的限制,也为了方便,实际上就可以用一套代码,然后弄两个分别代表server1和server2的配置文件就可以了,文件命名需要遵循spring boot的约定规则,然后再application.properties文件中使用spring.profiles.active属性来指定运行的时候需要具体启用的篇配置就可以了,如图:

时间: 2024-11-03 09:43:09

springcloud微服务二:Eureka服务治理之服务注册中心的相关文章

Spring cloud--服务注册和服务发现-Eureka 的使用

一.Spring Cloud Netflix 该项目是Spring Cloud的核心子项目,是对Netflix公司一系列开源产品的封装.它为Spring Boot应用提供了自配置的整合,只需要通过一些简单的注解,就可以快速地在Spring Cloud的应用中使用起来. 它主要提供的模块包括: 服务发现注册(Eureka) 客户端负载均衡(Ribbon) 断路器(Hystrix) 智能路由(Zuul)   开源地址: http://netflix.github.io/ https://github

spring cloud 学习(2) - eureka server注册中心高可用及安全认证

接上节继续,注册中心单点肯定是不牢靠的,可以参考下面的方案做成注册中心集群: 弄成3个节点,每个节点向其它节点注册,这样只要集群中有一个节点正常工作即可.为了方便在本机弄出这种效果,我们先修改下host文件 127.0.0.1  localhost server1 server2 server3 相当于给本机ip绑了3个hostname.然后在项目中,创建3个profile,参考下图: application.yml: spring: application: name: eureka-serv

springcloud微服务三:Eureka服务治理之注册服务提供者及服务的发现和消费

当服务注册中心成功建立以后,就需要有服务的注册和消费,否则这个服务注册中心就没有了存在的意义,而实际上,一个简单的服务注册也是非常简单的,仅仅需要实现四部曲就好. 首先,还是建立一个基本的spring boot的项目,创建的时候选择web,然后在pom.xml文件中加入Eureka的依赖,和服务注册中心的maven配置一样,这里就不再罗列代码. 第二步,就是修改application.properties文件,指定端口和服务名称以及注册中心的地址: server.port=1001 spring

springcloud 微服务架构之eureka服务注册与发现

springcloud 微服务架构之eureka服务注册与发现 视频播放地址: http://www.365yg.com/item/6434376645263491585/

springcloud微服务四:服务容错保护Hystrix断路器

通过前边的学习,服务注册中心.服务提供者和服务消费者都成功建立并运行起来,而且通过默认的配置restTemplate及@loadbalanced注解开启了负载均衡. 在默认的情况下,负载均衡策略是线性轮询的方式,也就是说在客户端获取到的服务列表中依次交替,例如开启了三个服务server1.server2.server3,那么在线性轮询时,就会按这个顺序来调用. 我之前是开启了两个服务,一个端口是1001,另一个是2001,那么在之前的这种情况下,如果我关闭其中一个服务,就比如这里关闭1001端口

springcloud(二):注册中心Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组件之一. 背景介绍 服务中心 服务中心又称注册中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等,比如dubbo admin后台的各种功能. 有了服务中心调用关系会有什么变化,画几个简图来帮忙理解 项目A调用项目B 正常调用项目A请求项目B 有了服务中心之后,任何一个服务都不能直接去掉用

浅谈自服务的大数据治理在企业数字化转型中的妙用

一.用户与大数据之间的鸿沟让数字化转型困难重重 本文讲的是浅谈自服务的大数据治理在企业数字化转型中的妙用,目前虽然不少企业已经广泛建设大数据平台,但却难以直接使用平台中的大数据,企业人员与大数据之间存在着一道难以逾越的鸿沟. 这道鸿沟的出现导致企业在使用大数据的过程中出现数据不可知.需求难实现.数据难共享等一系列问题: 1.数据不可知,数据价值无处可寻 企业环境中到底有哪些数据,这些数据在哪里,慢慢变成了大数据平台的"迷",用户迷失在动辄几十PB的数据中.对于企业管理者来说,无法从管理

《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群

一. Eureka的服务认证 1. 服务端添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 2. 服务端添加配置 服务认证 security.basic.enabled=true security.user.name=ronco

SOA治理:服务生命周期管理流程示例

什么是SOA治理? SOA治理是业务与IT治理的交集,注重服务生命周期以确保SOA的业务价值. SOA治理是对服务生命周期的有效管理,而服务生命周期是SOA治理的关键目标. 图 1. SOA 治理 的定义 IBM 的方法:SOA 治理和管理方法 IBM 的治理方法包括两个不同的成功方面:定义和 执行.SOA 治理和管理方法(SOA Governance and Management Method,SGMM)是一种端到端的定义方 法,通过设计.实现和改进 SOA 治理来进行.SGMM 为您提供了确