spring cloud demo解释

我也是一个初学者,如果有建议请留言哦!

下一个博客解释最近我学习Spring cloud 的感触以及理解。

这个博客主要是通过一个简单的demo来加深对Spring cloud 的理解。

1.首先要建一个父工程,用来收集子项目中要使用到的共有的jar

对于一个Spring cloud架构的项目来说,肯定是需要将Spring cloud和Spring boot引入进来。

而对于项目来说一般要引入测试用的jar和日志jar

 1 <parent>
 2     <groupId>org.springframework.boot</groupId>
 3     <artifactId>spring-boot-starter-parent</artifactId>
 4     <version>1.5.2.RELEASE</version>
 5     <relativePath/>
 6     <!-- lookup parent from repository -->
 7 </parent>
 8 <!-- 使用spring cloud必须引入 -->
 9 <dependencyManagement>
10     <dependencies>
11         <dependency>
12             <groupId>org.springframework.cloud</groupId>
13             <artifactId>spring-cloud-dependencies</artifactId>
14             <version>Dalston.SR2</version>
15             <type>pom</type>
16             <scope>import</scope>
17         </dependency>
18     </dependencies>
19 </dependencyManagement>
20 <dependencies>
21     <dependency>
22         <groupId>org.springframework.boot</groupId>
23         <artifactId>spring-boot-starter</artifactId>
24     </dependency>
25     <dependency>
26         <groupId>org.springframework.boot</groupId>
27         <artifactId>spring-boot-starter-web</artifactId>
28     </dependency>
29     <!-- logback + slf4j -->
30     <dependency>
31         <groupId>ch.qos.logback</groupId>
32         <artifactId>logback-classic</artifactId>
33     </dependency>
34     <dependency>
35         <groupId>org.slf4j</groupId>
36         <artifactId>jcl-over-slf4j</artifactId>
37     </dependency>
38     <!-- 测试模块,包括JUnit、Hamcrest、Mockito -->
39     <dependency>
40         <groupId>org.springframework.boot</groupId>
41         <artifactId>spring-boot-starter-test</artifactId>
42         <scope>test</scope>
43     </dependency>
44     <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency>
45         <groupId>com.alibaba</groupId>
46         <artifactId>fastjson</artifactId>
47         <version>1.2.37</version>
48     </dependency>
49     <dependency>
50         <groupId>org.springframework.boot</groupId>
51         <artifactId> spring-boot-configuration-processor </artifactId>
52     </dependency>
53 </dependencies>

2.接下来需要一个工程用来保存项目的公共配置文件(从git/SVN获取到的),并通过rest方式供其他服务获取配置信息。

两种方式:

(1)git

application.properties

server.port=8888

application-gitsimple.properties

# 指定配置文件所在的git工程路径

spring.cloud.config.server.git.uri=https://github.com/hryou0922/spring_cloud.git# 表示将搜索该文件夹下的配置文件

spring.cloud.config.server.git.searchPaths=cloud-config-git/simple

serverapplication:

@SpringBootApplication

@EnableConfigServer // 激活该应用为配置文件服务器:读取远程配置文件,转换为rest接口服务public class

public static void main(String[] args) {

args = new String[1];

args[0] = "--spring.profiles.active=gitsimple";

SpringApplication.run(CloudGitConfigServerApplication.class, args);

Git的配置文件放置在这个工程中:cloud-config-git

在simple有两个文件,名称和内容如下:

cloud-config-dev.properties:

simple.config.name=git-dev

simple.config.age=112

#注册服务的zone

registercenter.eureka.defaultzone=http://localhost:8761/eureka/

cloud-config-test.properties:

simple.config.name=git-test

simple.config.age=1

#注册服务的zone

registercenter.eureka.defaultzone=http://localhost:8761/eureka/

  • simple.config.name和simple.config.age做为测试数据,用于后续服务和客户读取配置。
  • registercenter.eureka.defaultzone:服务注册到服务注册的zone

(2)native

工程名称: cloud-config-center

在resoucres的目录下config/simple的创建配置文件

cloud-config-dev.properties

simple.config.name=native_dev

simple.config.age=113

# 注册服务的zone

registercenter.eureka.defaultzone=http://localhost:8761/eureka/

cloud-config-test.properties

simple.config.name=native_test

simple.config.age=1

# 注册服务的zone

registercenter.eureka.defaultzone=http://localhost:8761/eureka/

application-nativesimple.properties

server.port=8888# native:启动从本地读取配置文件,必须指定active的值,才可以使用本场配置模式

spring.profiles.active=native

# 自定义配置文件路径

spring.cloud.config.server.native.searchLocations=classpath:/config/simple/

CloudNativeConfigServerApplication

@[email protected] // 激活该应用为配置文件服务器:读取远程配置文件,转换为rest接口服务public class CloudNativeConfigServerApplication {

public static void main(String[] args) {

args = new String[1];

// 使用native不可以使用spring.profiles.active的方式使用native模式

// args[0] = "--spring.profiles.active=nativesimple";

args[0] = "--spring.config.name=application-nativesimple";

SpringApplication.run(CloudNativeConfigServerApplication.class, args);

}

}

(3)接下的就简单了,开始创建注册中心的工程eureka,这个我就不再赘述了,网上一大堆。

(4)server和client

道理简单就是将server将服务注册到eureka,而client从eureka中进行调用。

但是需要注意一下两个地芳:

1.feign客户端传值

  • simple:无参请求
  • simpleWithOneParam:带单个参数请求
  • simpleWithQry:带多个参数请求
  • @Configuration
  • @ConfigurationProperties(prefix = "simple.config" ,ignoreUnknownFields = false)
  • public class SimpleConfig {

    private String name;

    private Integer age;

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public Integer getAge() {

    return age;

    }

    public void setAge(Integer age) {

    this.age = age;

    }

    @Override

    public String toString(){

    return "name="+name+" | age=" + age;

    }

    }

  • controller中

@Autowired

private Service Service;

/**

* 无参服务

* @return

*/

@RequestMapping(value = "/simple")

public SimpleDto simple() {

return Service.simple();

}

  service中:

@Servicepublic class SimpleService {

@Autowired

private SimpleConfig simpleConfig; //

public SimpleDto simple(){

SimpleDto simpleDto = new SimpleDto();

simpleDto.setAge(simpleConfig.getAge());

simpleDto.setName(simpleConfig.getName());

simpleDto.setRandomNum(new Random().nextInt(1000));

return simpleDto;

}

2.熔断hytrix的处理,简单,其实就是重写客户端类,将里面的方法进行重写,有退路

整个流程差不多就是这样,这个我也是看网上资料学习到的,很有用。

先启动配置中心,再启动注册中心,然后启动服务端,最后启动客户端。

嗯,我对这部分内容又加深了,你呢,如果你觉得对你有帮助的话给我赞吧。

原文地址:https://www.cnblogs.com/ljf-Sky/p/8746720.html

时间: 2024-11-16 17:49:38

spring cloud demo解释的相关文章

Spring Cloud使用样例

Spring Cloud Demo 项目地址:https://github.com/hackyoMa/spring-cloud-demo 组件 基于Spring Boot 2.0.4.Spring Cloud Finchley.SR1的Spring Cloud Demo其中含有下列组件的样例: Eureka(服务注册与发现) Feign(服务消费者) Zuul(路由网关) Turbine(断路器聚合监控) Zipkin(服务链路追踪) Spring Boot Admin(服务监控中心) Spri

spring cloud 2.x版本 Ribbon服务发现教程(内含集成Hystrix熔断机制)

本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 前言 本文基于前两篇文章eureka-server和eureka-client的实现. 参考 eureka-server eureka-client 1 Ribbon工程搭建 1.1 创建spring boot工程:eureka-ribbon 1.2 pom.xml所需要依赖的jar包 <dependency> <groupId>org.springframework.clo

spring cloud 2.x版本 Gateway自定义过滤器教程

前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka-ribbon.eureka-feign和spring-gataway的实现. 参考 eureka-server eureka-client eureka-ribbon eureka-feign spring-gateway 概术 Spring Cloud Gateway内部已经提供非常多的过滤器f

spring cloud 2.x版本 Gateway路由网关教程

前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka-ribbon和eureka-feign的实现. 参考 eureka-server eureka-client eureka-ribbon eureka-feign 概念 Spring Cloud Gateway是Spring Cloud的一个新项目,该项目是基于Spring5.0,Sprint B

spring cloud 2.x版本 Gateway动态路由教程

摘要 本文采用的Spring cloud为2.1.8RELEASE,version=Greenwich.SR3 本文基于前面的几篇Spring cloud Gateway文章的实现. 参考 Gateway路由网关教程 Gateway自定义过滤器教程 前言 写了几篇关于Spring Cloud Gateway的文章后发现,Gateway涉及的知识范围太广了,真是深刻体会了"一入Spring cloud深似海". 现实生产环境中,使用Spring Cloud Gateway都是作为所有流量

spring cloud 2.x版本 Gateway熔断、限流教程

前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 概术 在高并发应用中,缓存.限流.降级,是我们保护系统应用的三大利器.在开发一些api接口的时候,通常也会在网关层做限流控制,一方面是为了防止大量的请求是服务器过载,导致服务器不可用,另一方面也是防止其他人的恶习网络***. 常见的限流方式,如Hystrix的使用线程池隔离,超过线程池的负载走熔断的逻辑:也有通过滑动的时间窗口来控制流量. 常用的限流算法有,计数器算法.漏桶算法.令牌

十分钟快速创建 Spring Cloud 项目

一般来说,Intelij IDEA 可以通过 Maven Archetype 来快速生成Maven项目,其实 IDEA 集成了 Spring 官方提供的 Spring Initializr,可以非常方便的创建 Maven 项目,而且能自动生成启动类和单元测试代码. 下面我们学习如何快速搭建一个 Spring Cloud 工程,示例使用 Spring Boot 2.2.2 版本,使用少量的代码,可以在半小时内完成项目的搭建. 本文为新手向教程,帮助大家快速入门 Spring Cloud 开发,也作

Spring Cloud 入门教程(二): 配置管理

使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用.随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切.服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具.很容易添加

Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入how的范畴. 1)编程式实现: 每一个要素(where,what,how)都需要用具体代码实现来表示.传统的方式一般都是编程式实现,业务开发者需要关心每一处逻辑 2)声明式实现: 只需要声明在哪里(where )做什么(what),而无需关心如何实现(how).Spring的AOP就是一种声明式实现,