资讯详情

SpringCloud微服务第1章

一、前言

什么是微服务?

2.微服务的优势

3、什么是SpringCloud

4、使用SpringCloud的优点

5.服务注册和发现是什么意思?Spring Cloud 如何实现?

二、SpringCloud项目搭建

(一)创建项目

2、选择Maven,点击Next

3、输入GroupId、ArtifactId,点击Next

4.选择项目存储路径,单击Finish完成项目创建

5、pom.xml依赖,注意idea右下角可能import下

(二)创建注册中心模块

6、创建SpringCloud注册中心Eureka模块

7、在ceam-eureka下的pom.xml引入子模块Eureka依赖

创建在子模块下SpringCloud注册中心启动类EurekaApp

9、编写SpringCloud注册中心配置文件

10.启动注册中心EurekaApp

(3)创建微服务模块

11.创建微服务模块


一、前言

什么是微服务?

(microservice) 一词最早由Martin Fowler与James Lewis它是2014年共同提出的一种新的软件架构风格,即将大型应用程序分为可独立部署的小型服务。每个服务都是松耦合的RPC或者是Rest协议进行通信,可按业务领域划分为独立单位,例如,电子商务系统可以分为不同的小型服务,如会员、订单、商品、积分和优惠券。它具有自动化操作和维护、容错和快速发展的特点。它可以解决传统单体架构系统的痛点,满足越来越复杂的业务需求。

2.微服务的优势

  • :与传统的单机系统相比,它具有很高的可用性。例如,如果单机系统悬挂,则系统服务提供服务给使用它的企业带来了巨大的经济损失。与微服务不同,如果某项服务挂断,可能不会影响其他微服务提供外部服务。此外,新开发的功能点或更改的功能点集中在服务上,即使在线部署有问题,也不会影响其他服务的业务。
  • 无论是在开发阶段还是部署阶段,都是独立的,有单一的责任原则,以确保高可用性。
  • 它将整个应用程序分解为一系列服务,每个模块都有相应的责任,以提高维护和可扩展性。分工也有一定的好处,可以由小团队单独开发。

3、什么是SpringCloud

很明显是Spring这个家又一神创产物,是用于开发微服务应用的一系列的集合。Spring cloud 应用程序是基于 的 Spring 集成应用程序, 提供与外部系统的集成。Spring cloud 与Spring Boot不是走我行我素之风,而是相辅相成的关系。Spring cloud Task, 一个生命周期短暂的微服务框架, 用于快速构建执行有限数据处理的应用程序。

4、使用SpringCloud的优点

使用 Spring Boot 开发分布式微服务时, 我们面临以下问题:

1、:这种开销包括网络问题、延迟开销、带宽问题、安全问题。

2、服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录, 在该目录中注册服务, 然后能够查找并连接到该目录中的服务。

3、分布式系统中的冗余问题。

4、:负载平衡改善跨多个计算资源的工作负荷, 诸如计算机, 计算机集群, 网络链路, 中央处理单元, 或磁盘驱动器的分布。

5、由于各种运营开销导致的性能问题。

6、Devops 技能的要求。

5、服务注册和发现是什么意思?Spring Cloud 如何实现?

当我们开始一个项目时, 我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署, 添加和修改这些属性变得更加复杂。有些服务可能会下降, 而某些位置可能会发生变化。手动更改属性可能会产生问题。 可以在这种情况下提供帮助。由于所有服务都在 上注册并通过调用 Eureka 服务器完成查找, 因此无需处理服务地点的任何更改和处理。

二、SpringCloud项目搭建

(一)创建项目

1、选择File -> new -> Project

2、选择Maven,点击Next

3、输入GroupId、ArtifactId,点击Next

4、选择项目存放路径,点击Finish完成项目创建

注意项目名称跟3的ArtifactId带过来有点不一样,可以自己加上“”就一样了

                                                               

                                                                     

注:这是我之前创建的项目,这里只是帮你过一下。

5、pom.xml引依赖,注意idea右下角可能import下

<?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.ceam</groupId>
    <artifactId>test-cloud</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <!-- 依赖版本统一管理维护 -->
    <properties>
        <ceam.version>1.0-SNAPSHOT</ceam.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR7</spring-cloud.version>
        <spring-boot-admin.version>2.2.2</spring-boot-admin.version>
    </properties>

    <!-- 依赖声明 -->
    <dependencyManagement>
        <dependencies>

            <!--cloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>


            <!-- SpringBoot的依赖配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <finalName>${project.build.finalName}</finalName>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

:报红的话,可能是你maven没有配置好,可在控制台执行mvn -v命令确认下

又或者你在idea没有设置好,选择idea左上角的 -> 来到下面窗口,输入搜索

(二)创建注册中心模块

6、创建SpringCloud注册中心Eureka模块

:必须删除下的文件夹,再创建模块

                                                                 

7、在ceam-eureka下的pom.xml引入子模块Eureka依赖

<?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>test-cloud</artifactId>
        <groupId>com.ceam</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ceam-eureka</artifactId>

    <dependencies>
        <!--服务中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

8、在子模块下创建SpringCloud注册中心启动类

代码如下: 

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

/**
 * @Description:
 * @Author: CeaM
 * @Date: 2020/10/2 9:34
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaApp {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApp.class, args);
    }
}

9、编写SpringCloud注册中心配置文件

spring:
  profiles:
    active: dev 

server: 
  port: 7001 # 端口号,访问的时候用到
 
eureka: 
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client: 
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url: 
      #单机 
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       
      #defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

10、启动注册中心EurekaApp

如下就是成功了

(三)创建微服务模块

11、创建微服务模块

<?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>ceam-service</artifactId>
        <groupId>com.ceam</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ceam-auth</artifactId>

    <dependencies>

        <!--配置中心客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <!--eureka 客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- SpringBoot Web容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

11.3、创建权限微服务启动类

代码如下: 

package com.ceam.auth;

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

/**
 * @Description:
 * @Author: CeaM
 * @Date: 2020/10/2 9:45
 */
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableEurekaClient
public class AuthApp {
    public static void main(String[] args) {
        SpringApplication.run(AuthApp.class, args);
    }
}

server:
  port: 8005 # 端口号
# 日志配置
logging:
  level:
    com.ruoyi: debug
    org.springframework: warn
spring:
  application:
    name: ceam-auth
   # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  cloud:
    config:
      fail-fast: true
      name: ${spring.application.name}
      profile: ${spring.profiles.active}
      discovery:
        enabled: true
        service-id: ruoyi-config
  profiles:
    active: dev
  main:
    allow-bean-definition-overriding: true

feign:
  hystrix:
    enabled: true

eureka:
  client: #客户端注册进eureka服务列表内
    service-url:
       defaultZone: http://localhost:7001/eureka
       #defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    instance-id: ${spring.application.name}:${server.port}
    prefer-ip-address: true     #访问路径可以显示IP地址

如下面这样微服务就是注册到注册中心了

如果对你有帮助来个三联吧

SpringCloud Alibaba系列:

SpringCloud Alibaba微服务第1章》

SpringCloud Alibaba微服务第2章之Nacos》

SpringCloud Alibaba微服务第3章之Nacos》

SpringCloud Alibaba微服务第4章之Nacos》

SpringCloud Alibaba微服务第5章之Gateway》

SpringCloud Alibaba微服务第6章之Gateway》

Spring Cloud Alibaba微服务第7章之负载均衡Ribbon》

Spring Cloud Alibaba微服务第8章之OpenFeign》

Spring Cloud Alibaba微服务第9章之MyBatis-plus》

Spring Cloud Alibaba微服务第10章之MyBatis-plus》

Spring Cloud Alibaba微服务第11章之MyBatis-plus》

Spring Cloud Alibaba微服务第13章之分库分表》

Spring Cloud Alibaba微服务第14章之分库分表》

Spring Cloud Alibaba微服务第15章之服务容错》

Spring Cloud Alibaba微服务第16章之服务容错》

Spring Cloud Alibaba微服务第17章之消息服务》

Spring Cloud Alibaba微服务第18章之消息服务》

标签: de型连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台