jgcs123

导航

 

Spring Cloud 学习笔记(1 / 3)

01_前言闲聊和课程说明

教学视频

源码文件1源码文件2

02_零基础微服务架构理论入门

什么是微服务

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.——James Lewis and Martin Fowler (2014)

  • 微服务是一种架构风格

  • 一个应用拆分为一组小型服务

  • 每个服务运行在自己的进程内,也就是可独立部署和升级

  • 服务之间使用轻量级HTTP交互

  • 服务围绕业务功能拆分

  • 可以由全自动部署机制独立部署

  • 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

 

主题词01:现代数字化生活-落地维度

  • 手机

  • PC

  • 智能家居

 

主题词02:分布式微服务架构-落地维度

满足哪些维度?支撑起这些维度的具体技术?

img

 

  • 服务调用

  • 服务降级

  • 服务注册与发先

  • 服务熔断

  • 负载均衡

  • 服务消息队列

  • 服务网关

  • 配置中心管理

  • 自动化构建部署

  • 服务监控

  • 全链路追踪

  • 服务定时任务

  • 调度操作

Spring Cloud简介

是什么?符合微服务技术维度

SpringCloud=分布式微服务架构的站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶

猜猜SpringCloud这个大集合里有多少种技术?

img

SpringClou俨然已成为微服务开发的主流技术栈,在国内开发者社区非常火爆。

“微”力十足,互联网大厂微服务架构案例

京东的:

阿里的:

阿里的

京东物流的:

京东物流

微服务的简单概括

Spring Cloud技术栈

netflix

img

img

总结

img

03_第二季Boot和Cloud版本选型

  • Spring Boot 2.X 版

  • Spring Cloud H版

  • Spring Boot 与 Spring Cloud 兼容性查看

  • 接下来开发用到的组件版本

  • Cloud - Hoxton.SR1

  • Boot - 2.2.2.RELEASE

  • Cloud Alibaba - 2.1.0.RELEASE

  • Java - Java 8

  • Maven - 3.5及以上

  • MySQL - 5.7及以上

04_Cloud组件停更说明

  • 停更引发的“升级惨案”

    • 停更不停用

    • 被动修复bugs

    • 不再接受合并请求

    • 不再发布新版本

Cloud升级

  • 服务注册中心

    • × Eureka

    • √ Zookeeper

    • √ Consul

    • √ Nacos

  • 服务调用

    • √ Ribbon

    • √ LoadBalancer

  • 服务调用2

    • × Feign

    • √ OpenFeign

  • 服务降级

    • × Hystrix

    • √ resilience4j

    • √ sentienl

  • 服务网关

    • × Zuul

    • ! Zuul2

    • √ gateway

  • 服务配置

    • × Config

    • √ Nacos

  • 服务总线

    • × Bus

    • √ Nacos

Spring Cloud官方文档

Spring Cloud中文文档

Spring Boot官方文档

 

 

05_父工程Project空间新建

约定 > 配置 > 编码

创建微服务cloud整体聚合父工程Project,有8个关键步骤:

  1. New Project - maven工程 - create from archetype: maven-archetype-site

  2. 聚合总父工程名字

  3. Maven选版本

  4. 工程名字

  5. 字符编码 - Settings - File encoding

  6. 注解生效激活 - Settings - Annotation Processors

  7. Java编译版本选8

  8. File Type过滤 - Settings - File Type

 

archetype 英 [ˈɑːkitaɪp] 美 [ˈɑːrkitaɪp] n. 典型

 

site 英 [saɪt] 美 [saɪt] n. (建筑物、城镇等的)地点,位置,建筑工地;现场;发生地;场所;网站;站点 v. 使坐落在;为…选址

 

06_父工程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.lun</groupId>
   <artifactId>LearnCloud</artifactId>
   <version>1.0.0-SNAPSHOT</version>
   <packaging>pom</packaging><!-- 这里添加,注意不是jar或war -->
   
   <!-- 统一管理jar包版本 -->
   <properties>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
       <junit.version>4.12</junit.version>
       <log4j.version>1.2.17</log4j.version>
       <lombok.version>1.16.18</lombok.version>
       <mysql.version>5.1.47</mysql.version>
       <druid.version>1.1.16</druid.version>
       <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
   </properties>
   
   <!-- 子模块继承之后,提供作用:
锁定版本+子modlue不用写groupId和version -->
   <dependencyManagement>
       <dependencies>
           <!--spring boot 2.2.2-->
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-dependencies</artifactId>
               <version>2.2.2.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <!--spring cloud Hoxton.SR1-->
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Hoxton.SR1</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <!--spring cloud alibaba 2.1.0.RELEASE-->
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-alibaba-dependencies</artifactId>
               <version>2.1.0.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>${mysql.version}</version>
           </dependency>
           <dependency>
               <groupId>com.alibaba</groupId>
               <artifactId>druid</artifactId>
               <version>${druid.version}</version>
           </dependency>
           <dependency>
               <groupId>org.mybatis.spring.boot</groupId>
               <artifactId>mybatis-spring-boot-starter</artifactId>
               <version>${mybatis.spring.boot.version}</version>
           </dependency>
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>${junit.version}</version>
           </dependency>
           <dependency>
               <groupId>log4j</groupId>
               <artifactId>log4j</artifactId>
               <version>${log4j.version}</version>
           </dependency>
           <dependency>
               <groupId>org.projectlombok</groupId>
               <artifactId>lombok</artifactId>
               <version>${lombok.version}</version>
               <optional>true</optional>
           </dependency>
       </dependencies>
   </dependencyManagement>

   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
               <configuration>
                   <fork>true</fork>
                   <addResources>true</addResources>
               </configuration>
           </plugin>
       </plugins>
   </build>

</project>

 

posted on 2021-08-23 23:01  Dongdong98  阅读(49)  评论(0)    收藏  举报