springCloud微服务简单框架搭建

什么是SpringCloud

SpringCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟spring boot框架一起使用的话,会让你开发微服务架构的云服务非常好的方便。

springCloud的框架搭建

创建一个父工程

我们是用maven来创建项目,创建项目所用的module都应该一样,其他的工程应该继承这个父工程;故只需要写一个pom文件即可。

创建一个maven工程以此工程为父工程其他的工程继承此工程;写破门文件。
1、pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--springboot版本启动器,-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!--本项目的描述资料-->
    <groupId>com.zhiyou100</groupId>
    <artifactId>server-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>server-parent</name>
    <description>父工程用来定义版本号</description>
    <!--版本定义-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--springcloud版本  从A到G-->
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>

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

    <dependencyManagement>
        <dependencies>
            <!--引入springcloud依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

创建服务注册中心,他的作用是对创建的所有子系统进行管理

在同级目录下创建一个maven
在这里插入图片描述
导入pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--继承父类-->
    <parent>
        <groupId>com.zhiyou100</groupId>
        <artifactId>server-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>

    </parent>
    <groupId>com.zhiyou100</groupId>
    <artifactId>server-erueka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>server-erueka</name>
    <description>Demo project for Spring Boot</description>
    <!--引入服务注册中心依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

在主类上添加注解@EnableEurekaServer

再然后就是书写配置文件

#端口
server.port=8000
#应用在服务注册中心的名字
spring.application.name=eureka-server

#将该服务安装到本地--》localhost代表本机
eureka.instance.hostname=localhost
#r是否将自己注册到服务注册中心
eureka.client.register-with-eureka=false
#fetchRegistry表示是否从eureka服务器获取注册信息。
eureka.client.fetch-registry=false
#其他服务访问该服务的路径,服务注册到服务注册中心使用的路径http://localhost:8000/eureka/
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

启动服务配置中心输入主机与端口号验证http://localhost:8000/;在运行之前删除
测试test文件夹,如果不删除就导入test的依赖;此工程未导入依赖。
在这里插入图片描述
创建服务的提供者:创建一个maven注册到服务中心中,在配置文件中的spring.application.name配置就是为了方便消费者通过服务中心调用。
创建maven导入pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--继承我们的parent项目-->
    <parent>
        <groupId>com.zhiyou100</groupId>
        <artifactId>server-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.zhiyou100</groupId>
    <artifactId>server-hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>server-hello</name>
    <description>服务的提供者,返回hello你好</description>
    <dependencies>
        <!--引入client依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--引入web启动器,编写controller需要用到-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

导入配置文件

#端口
server.port=8001
#在服务注册中心中的名字,就是通过这个名字调用服务
spring.application.name=server-hello
#提交到这个注册中心
eureka.client.service-url.defaultZone=http://localhost:8000/eureka/

在主类上添加注解@EnableEurekaClient
写返回数据服务
在这里插入图片描述
服务的消费者:他调用服务层
消费层有两种书写方法分别为rebbion和feign
导入pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.zhiyou100</groupId>
        <artifactId>server-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.zhiyou100</groupId>
    <artifactId>server-rebbion</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>server-rebbion</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <!--引入clietn依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--引入web启动器,编写controller需要用到-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--引入rebbion依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
    </dependencies>
</project>

导入配置文件

#端口
server.port=8010
#spring.application.name非常重要,服务直接的调用是根据这个name值来相互调用的
spring.application.name=server-ribbon

#提交到这个注册中心
eureka.client.service-url.defaultZone=http://localhost:8000/eureka/

书写配置类
创建RestTemplate对象
在这里插入图片描述
主类
写@EnableEurekaClient注解
创建service
使用RestTemplate调用server-hello服务,不写接口,直接写实现类
在这里插入图片描述
创建Controller调用service即可
在这里插入图片描述
在启动时注意先后顺序
先启动服务注册中心,启动服务提供者,消费者。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Cloud是一个基于Spring Boot的微服务框架,该框架主要用于快速搭建和管理分布式系统中的微服务架构。下面我将以简书为例,简要介绍Spring Cloud微服务框架搭建过程。 1. 创建Spring Boot项目:首先,我们需要创建一个Spring Boot项目作为微服务的基础。可以通过Spring Initializr来快速创建一个Spring Boot项目,选择相应的依赖,如Spring Web、Eureka Discovery等。 2. 配置服务注册中心:在Spring Cloud中,Eureka被广泛用作服务注册和发现的中心。在项目的配置文件中,添加Eureka的配置,指定注册中心的地址。 3. 创建微服务:在项目中,创建需要的微服务模块,例如用户服务、文章服务、评论服务等。每个微服务都是一个独立的Spring Boot应用,可以独立运行和部署。 4. 配置服务间的通信:微服务之间需要进行通信,可以使用Spring Cloud提供的Feign或RestTemplate来实现。在服务之间的API接口中,通过注解的方式定义接口,使得服务之间的调用更加简洁。 5. 配置服务网关:为了统一管理微服务接口的访问和安全,可以使用Spring Cloud Gateway作为服务网关。通过配置路由规则和过滤器,对外暴露统一的API接口。 6. 配置服务熔断与降级:在分布式系统中,不可避免地会遇到服务不可用或故障的情况。可以使用Spring Cloud提供的Hystrix进行熔断和降级处理,保证系统的稳定性。 7. 配置服务监控与追踪:为了对微服务进行监控和追踪,可以使用Spring Cloud提供的Actuator和Sleuth。Actuator可以暴露微服务的运行指标,Sleuth可以追踪微服务之间的调用链路。 8. 部署与管理:最后,将各个微服务打包成独立的Docker镜像,并通过Docker容器技术进行部署。使用Kubernetes、Docker Swarm或者Mesos等容器管理工具,可以更好地管理和扩展微服务集群。 以上是简要的Spring Cloud微服务框架搭建过程,通过这个框架,可以实现高可用、弹性、可伸缩的分布式系统架构,帮助开发者更快速地构建和管理微服务应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值