SpringCloud 概念

本贴最后更新于 1642 天前,其中的信息可能已经事过景迁

SpringCloud 概念

微服务概述

服务

  • 为别人做事情,满足别人需要
  • 在代码中我们写一段代码,提供一个接口供别人使用服务。

集群&分布式概述

单机结构

  • 一个系统业务量很小的时候,代码全放在一个项目中。然后项目部署在一个服务器上,就是单机结构。
  • 缺点:就一台服务器处理能力有限,当访问量大量增加时。单机就不够用了

集群结构

  • 简述:将多份相同的代码,部署在不同的服务器上。这些服务器构成在一起,就是一个集群。
  • 当单机结构 处理达到瓶颈的时候。就打单机代码复制几份,就构成一个“集群”。 集群中每台服务器就叫做 这个集群中的 一个 “节点”。
  • 每个几点提供相同的服务,这样系统的处理能力就提升好几倍。
  • 负载均衡服务器会根据当前所有节点的负载情况,再决定将请求交给 负载比较小的节点进行处理。

分布式结构

  • 简述:分布式将一个完整的系统,按照业务功能,拆分成多个独立的子系统,每个子系统被称为“服务”,服务之间通过 RPC 通信
  • 举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过 RPC 方式调用。
  • 好处:
    • 系统之间的耦合度大大降低,可以独立开发、开发效率大大提升。
    • 系统更易于扩展。
    • 服务的复用性更高。

图片解释

1.png


高可用

  • 高可用:强调服务的可用性,就算非常极端的情况下,也可以稳定的提供服务。
  • 集群 是实现高可用的必须方式

分布式,集群,负载均衡的关系

  • 分布式:将一个大服务拆分成 N 个小服务,每个小服务都是独立的,开发独立,部署独立
  • 集群:将同一项目代码部署在 N 台服务器上
  • 负载均衡:将 N 多请求分摊在各个服务器上; 如果集群,必然要负载均衡;如果负载均衡,必须要集群
  • 集群至少需要 3 台服务器,即是挂了一台,剩下两台还能继续集群

微服务

  • 概述: 将一个完整的系统,按照业务功能,拆分成多个独立的子系统,每个子系统被称为“服务”
  • 微服务与分布式的架构 基本相同。 区别在于部署。
    • 微服务可以能部署在一台服务器上
    • 分布式是部署在多台服务器上
    • 微服务是架构设计方式,分布式是系统部署方式

微服务特点:

  1. 单一职业:微服务中每一个服务都对应唯一的业务能力,做到单一职责
  2. 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
  3. 独立:自治是说服务间互相独立,互不干扰
    1. 团队独立:每个服务都是一个独立的开发团队,人数不能过多。
    2. 技术独立:因为是面向服务,提供 Rest 接口,使用什么技术没有别人干涉
    3. 前后端分离:采用前后端分离开发,提供统一 Rest 接口,后端不用再为 PC、移动端开发不同接口
    4. 数据库分离:每个服务都使用自己的数据源
    5. 部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护 Docker 部署服务

SpringCloud

  • 微服务是一种架构方式,需要技术架构去实施。
  • SpringCloud 是一种用来 架构微服务思想的 技术工具

简述

版本

  • SpringCloud 的版本命名比较特殊,因为它不是一个组件,而是许多组件的集合,它的命名是以 A 到 Z 的为首字母的一些单词组成:
  • SpringCloud 的版本需要与 Springboot 的版本进行对应,不然会出现问题

YAML 语法

  • application.yaml 文件为替换 properties 格式文件的
  • 进行各项配置,全称 yet another markup language 另一种标记语言

书写格式

  1. 大小写敏感

  2. 使用缩进表示层级关系

  3. 禁止使用 tab 缩进,只能使用空格键

  4. 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级

  5. 使用#表示注释

  6. 字符串可以不用引号标注

     # 配置端口号,和四大金刚
     server:
       port: 10100
     spring:
       datasource:
         url: jdbc:mysql://localhost:3306/vue_2019-12-5
         username: root
         password: root
         driverClassName: com.mysql.jdbc.Driver
    

打开 RunDashBoard 窗口

  • 在 idea 中展示所有服务的启动类
  • 在 Project 项目中,找到.idea 的目录下的 workspace
  • 打开文件,查找 RunDashBoard
  •   <option name="configurationTypes">
        <set>
          <option value="SpringBootApplicationConfigurationType" />
        </set>
      </option>
    
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    943 引用 • 1460 回帖 • 3 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
1 操作
Weixl 在 2020-06-23 11:11:40 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...