【spring cloud】新手从零搭建spring cloud

本文从Spring Cloud介绍开始,逐步讲解如何搭建注册中心Eureka,包括Eureka的基本概念、集群配置,接着介绍了服务提供与调用,使用Feign实现服务消费者,并通过熔断器Hystrix确保服务稳定性。接着详细阐述了配置中心Spring Cloud Config的使用,包括Server端和Client端的配置,以及利用Spring Cloud Bus实现配置的动态刷新。通过本文,读者将全面了解Spring Cloud的实战应用。
摘要由CSDN通过智能技术生成

第一章、Spring Cloud介绍

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

微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。

下面是Spring Cloud的组成组件:
{F18475, size=full}

下面重点介绍一下几个常用的组件

第二章、注册中心Eureka

2.1 Eureka介绍

Eureka 是一个基于 REST 的服务,主要在 AWS 云中使用, 定位服务来进行中间层服务器的负载均衡和故障转移。

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

这样做的好处是服务调用方通过服务中心来获取服务,不需要关注调用的项目IP地址,由几台服务器组成,每次直接去服务中心获取可以使用的服务去调用既可。

Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。用一张图表示:
{F18481, size=full}

2.2 实际例子

新建一个项目com.eureka.center1作为Eureka的服务器。

2.2.1 引入pom

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

	</dependencies>

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

2.2.2 启动类增加注解

@SpringBootApplication
@EnableEurekaServer
public class Center1Application {

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

}

2.2.3 配置文件

server.port=8082

spring.application.name=eureka_center
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

eureka.client.service-url.defaultZone=http://localhost:${server.port}/eureka

eureka.client.register-with-eureka :表示是否将自己注册到Eureka Server,默认为true。
**eureka.client.fetch-registry **:表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。

更多配置见EUREKA更多配置

2.2.4 启动

直接启动工程,访问http://localhost:8082/ ,可以看到我们已经部署成功,此时并没有服务注册。
{F18493,size=full}

2.3 集群

Eureka作为服务中心,如果是单点的话,一旦遇到故障就是毁灭性的,因此为了维持注册中心的高可用性,使用集群是一个很好的解决方案。

重点就是将eureka的serverUrl指向其他可用的服务中心

2.3.1

将center1的配置更改如下:

spring.application.name=eureka_center
eureka.instance.hostname=centerone
eureka.client.service-url.defaultZone=http://centertwo:8083/eureka

2.3.2 将启动类加上注解

启动类加上**@EnableDiscoveryClient**注解,允许eureka找到服务

2.3.3 center2配置

复制center1改为center2,serverUrl指向center1,其它类似。

2.3.4 本地劫持域名

将上述域名劫持到本地:

127.0.0.1 centerone
127.0.0.1 centertwo

2.3.5 结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值