构建微服务架构springcloud:服务注册与发现(eurekaconsul)

     2022-03-27     536

关键词:

Spring Cloud简介

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。
微服务架构

“微服务架构”在这几年非常的火热,以至于关于微服务架构相关的开源产品被反复的提及(比如:netflix、dubbo),Spring Cloud也因Spring社区的强大知名度和影响力也被广大架构师与开发者备受关注。

那么什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。

对于“微服务架构”,大家在互联网可以搜索到很多相关的介绍和研究文章来进行学习和了解。也可以阅读始祖Martin Fowler的《Microservices》(中文版翻译点击查看),本文不做更多的介绍和描述。
服务治理

在简单介绍了Spring Cloud和微服务架构之后,下面回归本文的主旨内容,如何使用Spring Cloud来实现服务治理。

由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,比如:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。

所以,下面我们通过介绍两种服务治理的实现来体会Spring Cloud这一层抽象所带来的好处。
Spring Cloud Eureka

首先,我们来尝试使用Spring Cloud Eureka来实现服务治理。

Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

下面,就来具体看看如何使用Spring Cloud Eureka实现服务治理。
创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
    <relativePath/>
</parent>

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

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

通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的Spring Boot应用中添加这个注解就能开启此功能,比如下面的例子:

@EnableEurekaServer
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class)
                    .web(true).run(args);
    }
}

在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties配置文件中增加如下信息:

spring.application.name=eureka-server
server.port=1001

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

架构代码如下:

技术分享图片

springcloud构建微服务架构—创建“服务注册中心”

创建一个基础的SpringBoot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容:12345678910111213141516171819202122232425<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta 查看详情

springcloud构建微服务架构服务网关

通过之前几篇SpringCloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示:alt我们使用SpringCloudNetflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实... 查看详情

构建微服务架构springcloud:服务注册与发现(eurekaconsul)

SpringCloud简介SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一... 查看详情

springcloud构建微服务架构-创建“服务提供方”

下面我们创建提供服务的客户端,并向服务注册中心注册自己。本文我们主要介绍服务的注册与发现,所以我们不妨在服务提供方中尝试着提供一个接口来获取当前所有的服务信息。首先,创建一个基本的SpringBoot应用。命名为eu... 查看详情

springcloud构建微服务架构服务网关(基础)dalston版

通过之前几篇SpringCloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示:alt我们使用SpringCloudNetflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实... 查看详情

springcloud构建微服务架构:服务消费(基础)

使用LoadBalancerClient在SpringCloudCommons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,SpringCloud做这一层抽象... 查看详情

构建微服务架构springcloud:服务消费(基础)

使用LoadBalancerClient在SpringCloudCommons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,SpringCloud做这一层抽象... 查看详情

构建微服务架构springcloud:服务消费(基础)

使用LoadBalancerClient在SpringCloudCommons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,SpringCloud做这一层抽象... 查看详情

springcloud微服务云架构构建b2b2c电子商务平台之-服务的注册与发现eureka

...n工程,在其pom文件引入依赖,springBoot版本为2.0.3.RELEASE,SpringCloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该p 查看详情

springcloud构建微服务架构:服务容错保护(hystrix服务降级)

动手试一试在开始使用SpringCloudHystrix实现断路器之前,我们先拿之前实现的一些内容作为基础,其中包括:eureka-server工程:服务注册中心,端口:1001eureka-client工程:服务提供者,两个实例启动端口分别为2001下面我们可以复制... 查看详情

关于springcloud微服务云架构构建b2b2c电子商务平台之-路由网关(zuul)

...候忘记了。并且配置服务也是注册到服务注册中心的。在SpringCloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡( 查看详情

关于springcloud微服务云架构构建b2b2c电子商务平台之-路由网关(zuul)

...候忘记了。并且配置服务也是注册到服务注册中心的。在SpringCloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经 查看详情

微服务架构问题(springcloud初步认知)

...怎么办?在Java生态上,构建是基于SpringBoot,协调是基于SpringCloud,以下所有架构,全部基于以上4个问题进行解决1.netflix一站式解决方案1.Api网关,zuul组件2.Feign---HttpClient---Http,同步并阻塞3.服务注册和发现,Eureka4.熔断机 查看详情

基于springcloud的微服务构建学习-3服务治理-springcloudeureka之高可用注册中心

什么叫高可用   高可用一般指服务的冗余,一个服务挂了,可以自动切换到另一个服务上,不会影响到客户体验。高可用注册中心   在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,... 查看详情

使用springcloud和docker构建微服务架构

如何使用SpringBoot、SpringCloud、Docker和Netflix的一些开源工具来构建一个微服务架构。本文通过使用SpringBoot、SpringCloud和Docker构建的概念型应用示例,提供了了解常见的微服务架构模式的起点。该代码可以在Github上获得,并且在Docke... 查看详情

springcloud微服务架构—服务注册与发现

SpringCloud简介SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一... 查看详情

springcloud微服务架构—服务注册与发现

SpringCloud简介SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一... 查看详情

微服务框架之springcloud简介

参考技术A在了解SpringCloud之前先了解一下微服务架构需要考量的核心关键点,如下图:对于以上等核心关键点的处理,不需要我们重复造车轮,SpringCloud已经帮我们集成了,它使用SpringBoot风格将一些比较成熟的微服务框架组合起... 查看详情