微服务架构及解决方案

     

微服务:

把大型软件拆分成各种小的服务,

spring    -----spring cloud微服务规范  -------  spring  Alibaba微服务规范的产品实现

在这里插入图片描述

 不要寄希望于微服务构架能够解决所有的问题。微服务架构主要解决的是如何快速地开发和部署我们的服务

SpringCloud Alibaba微服务解决方案

        1概述

        2核心组件分析

                服务限流降级: 当下载的东西特别大时就要限流       

                服务注册与发现:公司的信息如注册金

                分布式配置管理:更改已发项目的一些不方便更改的信息,独立出来更改

                消息驱动能力:快递员为什么先把快递放快递柜子,相当于缓存
                        

                分布式任务调度:

                        定时任务


 

        3解决方案架构设计

sentinel:限流

ribbon:负载均衡

gateway:api网关 类和接口  url 如/notice/select   

auth center: 认证中心:不可能每次都去登录  索引需要认证

zipkin/walking:

elk:日志聚合服务:

构建SpringCloud 聚合项目并进行环境初始化 











        1工程结构

GitCGB2105IVProjects (工作区/空项目)
├── 01-sca   //(微服务父工程)
     ├── sca-provider            //服务提供方法
     ├── sca-consumer         //服务消费方法
     ├── sca-gateway            //网关服务
extends /import代码重用的方式

 

        2创建空项目

        3项目初始化配置

在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

        4创建聚合父工程

在这里插入图片描述

 在这里插入图片描述

01-sca  pom.xl

<?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.cy</groupId>
    <artifactId>01-sca</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--maven的父工程中的dependencyManagement主要负责定义依赖版本管理-->
    <dependencyManagement>
        <dependencies>
            <!--Spring Boot 依赖(此依赖中定义了springboot工程核心依赖的版本)-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.2.RELEASE</version>
                <scope>import</scope>
                <type>pom</type> <!--只有类型为pom的才可以import-->
            </dependency>
            <!--Spring Cloud 依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            <!--Spring Cloud Alibaba依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.6.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--dependencies元素中定义子工程中都需要的依赖-->
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <!--provided表示只在编译阶段有效运行阶段无效-->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!--定义maven编译版本,指定这个以后,当前工程以及子工程都会采用此编译版本-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version><!--这个版本与你maven版本有关-->
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
 

        5创建服务提供方模块

在这里插入图片描述

        6创建服务消费方模块

在这里插入图片描述

        7创建API网关服务模块

在这里插入图片描述

总结(Summary)

sca-gateway 服务网关就是网络请求

sca-consumer 就是消费模块

sca-provider就是提供模块

解决pom。xml横线问题

 idea pom.xml横线

课后作业:工程之间 的依赖:

 工程代码的复用:

 常见问题分析
为什么需要微服务?(对系统分而治,解决因并发访问过大带来的系统复杂性(例如:业务,开发,测试,升级,可靠性等)
微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本)
微服务解决方案有哪些?(大厂自研,中小企业采用开源Spring Cloud Alibaba,Spring Cloud Netfix等 )
微服务设计中需要哪些关键组件(服务的注册,发现,配置,限流降级,访问入口管理,分布式事务管理等)
创建聚合工程的目的?(实现工程之间资源的的共享)
如何修改聚合工程中项目的编译和运行版本?(build->plugins->plugin->maven-compiler-plugin)
maven工程中build元素的作用?(定义项目的编译,打包方式)
maven父工程的packaging元素内的值是什么?(pom)
maven父工程中dependencyManagement元素的作用是什么?(定义项目的版本)
常见Bug分析
依赖或插件无法下载?(本地库冲突,网络,maven配置,版本)
 

 commom:下创建一个类

在其他包中试着调用

common类:

创建stringutils类

package com.jt.common.util;

public class StringUtils {
    public static boolean isEmpty(String str){
        return str==null||"".equals(str);
    }
}

 编辑provider测试类

 

package com.jt;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.StringUtils;

@SpringBootTest
public class StringTests {
    @Test
    void testStringEmpty(){
        String content="helloworld";
        boolean flag = StringUtils.isEmpty(content);
        System.out.println(flag);
    }
}

编辑provider启动类

package com.jt;


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

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

编辑provide pom.xml

  <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
        <dependency>
            <groupId>com.jt</groupId>
            <artifactId>sca-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值