spring cloud搭建教程_springcloud项目搭建-程序员宅基地

技术标签: java  项目管理  spring cloud  java程序  分布式架构  intellij-idea  分布式  

spring cloud简介

         Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的微服务:就是把一个单体项目,拆分为多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维.并且多个服务相互协调,相互配合,最终完成用户的价值. Spring Cloud是一系列框架的有序集合。其主要的设施有,服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等,通过Spring Boot的方式,可以实现一键启动,和部署。

Spring 没有重新造车轮,只是把各家的应用给综合起来。最后给开发者遗留下了一个足够简单的,相当容易部署的,相当容易学习的Spring 体系。至于为什么要学习Spring Cloud的体系,因为原先的体系过于复杂了,导致开发的环境艰难,正是由于开发的环境的艰难,Spring Cloud 的是Spring体系的简化版,简化了原有的复杂。

spring cloud搭建

        博主使用的是IntelliJ IDEA 2021.1.2 版本进行环境搭建演示,如果使用Eclipse等IDE进行开发可以查看论坛内其他博主的博客进行学习。

        

打开IntelliJ IDEA 

点击file - new - project按钮创建一个新的项目

        

 

 设置GroupId和项目名称和项目路径

本步骤中的项目路径需要自己手动设置,以免找不到项目存放位置的尴尬情况
点击Finish按钮结束项目的创建,成功创建项目如下图:

 这时我们进入IDEA以后会发现我们项目只有Springcloud_Demo一个父项目,下面我问会创建Eureka,Zuul,Service等子模块对项目进行创建来实现微服务

修改Pom文件

再进行Eureka模块搭建之前我们需要先对”Springcloud_Demo“pom文件进行相关Jar包的依赖导入

完整代码如下

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xmy</groupId>
    <artifactId>Springcloud_Demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 1 确定spring boot的版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>
    <!--2  确定版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring-cloud-release.version>Greenwich.RELEASE</spring-cloud-release.version>
    </properties>

    <!-- 3 锁定sprig cloud版本-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-release.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!-- 4 确定spring cloud私有仓库-->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

创建Eureka注册中心模块

关于Eureka

Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。我们称此服务为Eureka服务。Eureka提供了java客户端组件,Eureka Client,方便与服务端交互。客户端内置了基于round-robin实现的简单负载均衡。在Netifix,为Eureka提供更为复杂的负载均衡方案进行封装,以实现高可用,它包括基于流量、资源利用率以及请求返回状态的加权负载均衡。

创建Eureka模块

右键点击SpringCloud_Demo父项目后,将鼠标拖入New选项框,点击Module选项创建子模块

点击next进行下一步操作

设置Eureka子模块名称,子模块路径,点击finish完成子模块创建

 

修改Eureka子模块的Pom文件

当Eureka子模块创建完成的时候,这时Eureka_Demo的pom.xml是没有Jar包依赖的的,我们需要手动导入Eureka需要的Jar包依赖。

详细代码如下

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Springcloud_Demo</artifactId>
        <groupId>com.xmy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Eureka_Demo</artifactId>

    <dependencies>
        <!--web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Eureka服务端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
    </dependencies>

</project>

创建核心配置文件application.yml

 代码如下:

# Tomcat
server:
  port: 9099

# Spring
spring:
  application:
    # 应用名称
    name: eureka-demo
eureka:
  client:
    sevice-url:
      defaultZone: http://localhost:${server.port}/eureka
    register-with-eureka: false
    fetch-registry: false

 创建Application启动类

将EurekaApplication启动类配置到Configurations中

点击IDEA右上角的Add Configurations按钮,点击左上角的加号按钮后点击Spring Boot选项进入设置页面,设置启动名称以及启动类文件收点击OK按钮完成设置。

 启动Eureka

在浏览器输入访问地址: http://localhost:9099访问Eureka注册中心

 

创建Zuul网关模块

关于Zuul

Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、hystrix等组件配合使用。Zuul的核心是一系列过滤器。这些过滤器完成以下功能:
1 身份认证和安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。
2 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
3 动态路由:动态地将请求路由到不同的后端集群。
4 压力测试:逐渐增加指向集群的流量,以了解性能。
5 负责分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。
6 静态响应处理:在边缘位置直接建立部分响应,避免其转发到内部集群。
7 多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB(Elastic Load Blancing)使用的多样化,以及让系统的边缘更贴近系统的使用者。

创建Zuul子模块

右键点击SpringCloud_Demo父项目后,将鼠标拖入New选项框,点击Module选项创建子模块

 点击Finish完成子模块创建

修改Zuul子模块的Pom文件

 当Zuul子模块创建完成的时候,这时Zuul_Demo的pom.xml是没有Jar包依赖的的,我们需要手动导入Zuul需要的Jar包依赖。

详细代码:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Springcloud_Demo</artifactId>
        <groupId>com.xmy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Zuul_Demo</artifactId>

    <dependencies>
        <!--网关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <!--添加eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

</project>

创建核心配置文件Application

详细代码:

server:
  port: 10010
spring:
  application:
    name: zuuldemo
zuul:
  prefix: /api
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9099/eureka

 在Zuul_Demo模块下的src/main/resources文件夹下创建application.yml核心配置文件,进行编写核心配置

编写ZuulApplication启动类

在Zuul_Demo模块下的src/main/java/com/xmy路径下创建ZuulApplication.java文件

详细代码如下:

package com.xmy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class ZuulApplication {
    public static void main(String[] args){
        SpringApplication.run(ZuulApplication.class,args);
    }
}

将ZuulApplication启动类配置到Configurations中

 启动Zuul网关模块

 需要先启动Eureka注册中心后再启动Zuul网关
访问:http://localhost:9099

可以看到Zuul网关服务已经被注册到Eureka注册中心。

创建Service服务模块

关于Service

Service模块是客户端模块,用户编写代码和功能实现。前端请求发送到Zuul网关再有网关发送到Service服务,可以是系统的安全性提升。

创建Service子模块

 右键点击Cloud_Demo父项目后,将鼠标拖入New选项框,点击Module选项创建子模块,

点击ArtifactId输入框输入Service模块名称,在此我们使用Service_Demo进行命名。

点击Finish按钮完成子模块创建。

修改Service子模块的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Springcloud_Demo</artifactId>
        <groupId>com.xmy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ServiceDemo</artifactId>

    <dependencies>
        <!--web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Eureka客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--通用mapper起步依赖-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>
        <!--MySQL数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

</project>

创建核心配置文件

详细代码:

server:
  port: 9080
spring:
  application:
    name: demoservice
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cloud_project?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: 1022
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9099/eureka

在Service_Demo模块下的src/main/resources文件夹下创建application.yml核心配置文件,进行编写核心配置

编写ServiceApplication启动类

在Service_Demo模块下的src/main/java/com/xmy路径下创建ServiceApplication.java文件

详细代码:

package com.xmy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceApplication {
    public static void main(String[] args){
        SpringApplication.run(ServiceApplication.class,args);
    }
}

将ServiceApplication启动类配置到Configurations中

 设置启动名称和启动路径后点击OK按钮

启动Service服务模块

需要先启动Eureka注册中心和Zuul网关服务后启动ServiceApplication
访问:http://localhost:9099

可以看到Zuul网关和Service服务都被注册到Eureka注册中心。到此我们的已经完成环境搭建。之后需要自行在Service服务中编写代码来实现功能,想创建多个service都可以,另外每个服务也可以链接不同的数据库;到此一个简单的Spring Cloud的环境搭建已经完成。 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40205234/article/details/124408609

智能推荐

GDBus之dbus服务创建_gdbus g_dbus_server_new_sync-程序员宅基地

文章浏览阅读1.7k次。GDBus 创建dbus服务示例dbus服务响应Method、Property、Signal_gdbus g_dbus_server_new_sync

js跳转页面方法(转)_auto.js跳转抖音个人界面 site:blog.csdn.net-程序员宅基地

文章浏览阅读344次。3布丁足迹;秒后自动跳转……function countDown(secs){ tiao.innerText=secs; if(--secs>0) setTimeout("countDown("+secs+")",1000); } countDown(3);   按钮式:    链接式:  返回上一步_auto.js跳转抖音个人界面 site:blog.csdn.net

关于Centos7上python2.7的pip安装问题_python2.7最高支持pip什么版本-程序员宅基地

文章浏览阅读239次。今天在服务器上安装pip包,遇到很多问题,查阅资料大多说pip版本过低导致,直接更新pip后,问题更加严重再次查资料,最后发现是pip版本过高的问题,python2.7版本最高支持到20.3.4使用easy_install来安装指定版本的pip,问题解决参考来源:https://www.cnblogs.com/hxlasky/p/14504677.html..._python2.7最高支持pip什么版本

“前端智能为安防产生新的数据价值”-程序员宅基地

文章浏览阅读938次。笔者按:文章中很多图片无法观看,读者可前往下面的原文地址阅读。文中有一个视频,读者可以从下面地址下载获得:https://pan.baidu.com/s/1o8sXZGA文章转载自:智慧安防网,地址:链接地址 2017年12月14日,“第五届中国·深圳智慧城市建设高峰论坛”在深圳大中华喜来登酒店盛大开幕!来自全国各地的政企领袖、行业大咖、权威专家、企业代表、媒体_前端智能

数据结构:构造二叉树(前跟中跟,中跟后跟)_中根后根构造二叉树-程序员宅基地

文章浏览阅读4.4k次,点赞8次,收藏26次。先从前序的第一个结点开始,其为根节点,然后在中序中找到该元素,一分为二,中序左边为左子树,右边为右子树,然后从前序中找第二个元素为根结点左子树的根,然后重复上面这个过程,发现出现NULL,跳到右子树。但是,如果在先根遍历中加入反映兄弟结点间的左右次序的信息(如以“^”标明空子树),则可以唯一确定一颗二叉树。当一个结点的左右孩子链都已建立,则以当前结点为根的一棵子树就已建立,返回上一层结点。二叉树的广义表表示语法如下图,其中元素表示结点,“^”表示空子树。,则创建一个结点,该结点的左孩子结点元素是。_中根后根构造二叉树

NetSuite高级打印模板设置_netsuite 如何调整打印模版-程序员宅基地

文章浏览阅读648次。NetSuite有高级打印和普通打印模板两种设置本文通过html进行修改,普通打印模板支持的单据相比高级要多:例如请购单;纸张大小:在高级打印模板设置的时候,只有信纸、A4、A5三种纸张可以进行选择,但是我们可以通过原代码修改 将打印的大小进行修改,源代码的size 修改大小之后,关闭原代码,不能预览,因为没有合适的size;现在只是测试过,但是还没有在针式打印机正式测试,A4纸打印机可以打印出设置大小的单据;<body header="nlheader..._netsuite 如何调整打印模版

随便推点

计算100的阶乘末位0的个数_计算100阶乘中0尾数的个数-程序员宅基地

文章浏览阅读605次。 public static void main(String[] args) throws IOException { BigInteger Num = new BigInteger("1"); int i = 1,count = 0; for(;i&lt;=100;i++) { BigInteger I = new BigInteger(i+"");//将int数i转换..._计算100阶乘中0尾数的个数

关于Free版的EclipseUML-程序员宅基地

文章浏览阅读98次。Omondo EclipseUML分为Studio版和Free版两种,我只用过Free版,对于创建EMF类图来说感觉已经够用了。不过和Eclipse的版本比起来,EclipseUML的升级比较缓慢,目前为止最新的版本还是2005年9月27日放出的,这就造成在新版本Eclipse里EclipseUML可能无法正常运行。20050927版本是针对Eclipse 3.1开发的,现在Ec..._free eclipse

第13课 接续符和转义符-程序员宅基地

文章浏览阅读89次。C语言中的接续符(\)是指示编译器行为的利器示例程序如下: 1 #in\ 2 clud\ 3 e <st\ 4 dio.h> 5 6 in\ 7 t m\ 8 ain(\ 9 )10 {11 pri\12 ntf\13 (\14 "Hello D.T.\n"15 )\16 ..._连接he和灵骑bian的第7÷4的余数个字符和h1 tao的字符数

jquery插件之文字无缝向上滚动-程序员宅基地

文章浏览阅读266次。该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧。此插件旨在实现目前较为流行的无缝向上滚动特效,当鼠标移动到文字上时,向上滚动会停止,当鼠标离开时,向上滚动继续。整体代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://..._文字无缝向上滚动插件

EM算法通俗理解-程序员宅基地

文章浏览阅读54次。https://blog.csdn.net/v_JULY_v/article/details/81708386转载于:https://www.cnblogs.com/bingws/p/10607641.html

算法竞赛进阶指南 0x67 Tarjan 算法与有向图连通性_强连通分支的有向无环图-程序员宅基地

文章浏览阅读204次。有向图G=(V,E)中,如果存在一个点r,使得从r出发,那么就可以到达所有的节点,那么称G为一个流图,记作(G,r)_强连通分支的有向无环图

推荐文章

热门文章

相关标签