IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 微服务架构(一) -> 正文阅读

[Java知识库]微服务架构(一)

一、微服务简介

微服务架构解决方案

二、SpringCloud Alibaba

解决方案架构设计

三、创建Spring Cloud项目

1.创建空项目 GitCGB2110IVProjects?

2.项目初始化

配置Maven 3.8.4

?配置jdk编译环境

3.创建工程

创建聚合父工程 编辑共享资源

?删除父工程src目录

修改pom文件

创建测试类

四、常见问题整合

1.Maven打包 package install deploy区别

2.maven报错

3.项目删除

一、微服务简介

????????通俗的讲,微服务就是将一个大的系统拆分为多个小系统(分而治之),从而便于开发,降低代码冲突的概率。

????????微服务架构(MSA)的基础是将单个应用程序拆分成多个独立的小服务,这些服务可以独立开发、部署和运行。eg.(将一个大型火车站拆分为多个火车站,不同的车站管理不同的线路)

????????在开发中,微服务就是将多个业务的共性进行抽取,做成独立的服务模块。eg.(登录模块、支付模块)

比较:

MVC? 纵向分配? Controller控制层? Service业务层? Mapper数据层

微服务? 横线分配 按服务进行分配

微服务架构解决方案

大厂:自主研发

中小公司:使用Spring Cloud Netflix,Alibaba,…

二、SpringCloud Alibaba

????????Spring Cloud Alibaba 是Spring Cloud(微服务头牌)的一个子项目,致力于提供微服务开发的一站式解决方案。只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

默认核心功能(先了解):

  • 服务限流降级:

????????默认支持 WebServlet、OpenFeign、RestTemplate、Spring Cloud Gateway, RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。

  • 服务注册与发现:

????????基于Spring Cloud 服务注册与发现标准,借助Nacos进行实现,默认还集成了 Ribbon 的支持。

  • 分布式配置管理:

????????基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新。

  • 消息驱动能力:

????????基于Spring Cloud Stream 为微服务应用构建消息驱动能力。

  • 分布式事务:

????????使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。

  • 分布式任务调度:

????????提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker上执行。

解决方案架构设计

基于Spring Cloud Alibaba实现的微服务,解决方案设计架构如图所示:

三、创建Spring Cloud项目

微服务项目一般都会采用聚合工程结构,可通过聚合工程结构实现共享资源的复用,简化项目的管理方式。

GitCGB2110IVProjects (工作区/空项目)
├── 01-sca   //(微服务父工程)
     ├── sca-provider            //服务提供方法
     ├── sca-consumer         //服务消费方法
     ├── sca-gateway            //网关服务

1.创建空项目 GitCGB2110IVProjects?

在这里插入图片描述

2.项目初始化

配置Maven 3.8.4

下载:在Maven的官网即可下载,点击访问Apache Maven

?配置jdk编译环境

3.创建工程

  • 创建聚合父工程 编辑共享资源

在这里插入图片描述

  • ?删除父工程src目录

  • 修改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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jt</groupId>
    <artifactId>01-sca</artifactId>
    <!--父工程默认打包方式为pom-->
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <!--每次创建子工程,都会添加一个model-->
    <modules>
        <module>sca-provider</module>
        <module>sca-consumer</module>
        <module>sca-gateway</module>
    </modules>
    <!--统一依赖版本(子工程都会参考这里的版本定义),
    dependencyManagement 元素只负责定义依赖版本-->
    <dependencyManagement>
        <dependencies>
            <!--定义Spring Boot依赖的版本-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--定义Spring Cloud依赖的版本-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--定义Spring Cloud Alibaba依赖版本-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--定义公共依赖(子工程都需要的依赖,后续子工程需要就不需要添加了)-->
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <!--排除junit4这组依赖-->
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <!--定义统一的编译和运行环境-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
  • 创建具体模块 ?Model工程?

  • 修改sca-ui的pom.xml文件

????????添加spring-boot-starter-web依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • 创建启动类

package com.jt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

  • 创建测试类

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>Hello Spring Cloud Alibaba</h2>
</body>
</html>

四、常见问题整合

1.Maven打包 package install deploy区别

package 打包:

打包到本项目,一般在项目target目录下。

完成项目编译、单元测试、打包功能,不对项目进行部署。

install 打包:

打包到本地仓库,如果没设置在系统默认Maven仓库(File => settings => Build... => Build Tools => Maven中设置和查看)

完成项目编译、单元测试、打包功能,将项目部署到本地仓库。

deploy 打包:

打包并上传到远程仓库

完成项目编译、单元测试、打包功能,将项目部署到本地和远程仓库。

2.maven报错

方案一:maven => clean

方案二:重启idea

????????(不要手动重启!!! file => invalidate Caches/Restart?=> invalidate ?and Restart)

3.项目删除

  • 在项目结构中删除

  • 从idea工作区中删除

在这里插入图片描述

  • 将项目从父工程的pom文件中删除

在这里插入图片描述

  • 移除重建项目module中的pom文件删除线

在这里插入图片描述

3.如果不使用tomcat怎么办

在pom.xml文件中排除 添加需要使用的服务器

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:08:34  更:2022-02-24 15:09:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:47:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码