前言

这篇文章作为我学习SpringCloud的第一课,先来扫盲,再来讲解技术

注意:本扫盲贴的内容,我写的都要背熟,要很熟悉的说出来,不要看了就忘。

什么是微服务?

微服务提倡将单一应用拆分成一组小服务,每个服务在自己独立的进程中运行。

这就是微服务,例如淘宝,商品,订单,付款等等,如果都做在一起,那么一个模块有问题,势必会影响其他的模块,而且耦合度也高,现在使用微服务技术,把淘宝拆分成商品系统,订单系统,付款系统等等,这样一个偌大的淘宝就拆分成了一组小服务,耦合度大大降低。

微服务的优缺点是什么?

微服务的优点:

  1. 每个服务足够小,聚焦于一个业务功能或需求
  2. 代码开发简单,效率高,一个服务只专注于一个功能模块
  3. 微服务可以小团队开发,2~5人的小团队
  4. 松耦合,每个小服务都有意义,无论是开发阶段还是部署阶段
  5. 微服务可以使用不同的语言开发
  6. 易于和第三方服务集成,比如Jenkins,Hudson,Bambook
  7. 微服务易于被一个开发人员理解,修改,维护,小团队只需要专注于自己的工作
  8. 微服务允许你使用融合最新技术
  9. 微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面组件混合
  10. 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库

微服务的缺点:

  1. 开发人员要处理分布式系统的复杂性
  2. 微服务数量多,运维难度增加
  3. 系统部署依赖
  4. 各个微服务之间通信的成本增加
  5. 数据的一致性问题
  6. 系统集成测试
  7. 性能监控

微服务之间是如何通讯的?

同步:RPC,REST等

异步:消息队列。要考虑消息可靠传输、高性能,以及编程模型的变化等。

SpringCloud和Dubbo有哪些区别?

这个区别只有自己使用过两种服务之后才能真正明白。

我目前所知,SpringCloud很强,而且更新的很快。Dubbo是阿里的,断更了5年,现在虽然重启了更新,但还是更新的慢,所以我打算先学SpringCloud,Dubbo等等再说。

给个表格参考一下

Dubbo SpringCloud
服务注册中心 Zookeeper SpringCloud Netflix Eureka
服务调用方式 RPC Rest API
服务监控 Dubbo-monitor SpringBoot Admin
断路器 不完善 SpringCloud Netflix Hystrix
服务网关 SpringCloud Netflix Zuul
分布式配置 SpringCloud Config
服务跟踪 SpringCloud Sleuth
消息总线 SpringCloud Bus
数据流 SpringCloud Stream
批量任务 SpringCloud Task

SpringCloud和SpringBoot的关系?

  1. SpringBoot是微观的,只关注于一个服务的实现。而SpringCloud不同,SpringCloud是分布式微服务的一站式解决方案,它关注的是宏观的。
  2. SpringBoot不依赖于SpringCloud,而SpringCloud依赖于SpringBoot。我举个栗子,SpringBoot就是医院的科室,可以是耳喉鼻科,可以是心脏科,可以是骨科。而SpringCloud就是医院。科室可以不依赖医院,就是小诊所。而医院不能没有科室。这就是二者的关系。

什么是服务熔断?什么是服务降级?

所谓的服务熔断,就是为了保证服务的可用性,对于某个出现故障的服务进行停用。就是把故障服务关闭。

服务降级呢就是你熔断的服务已经不可用了,外部想访问也访问不了,这个时候可以使用fallback回调,返回一个缺省值,意思就是我这个服务熔断了,现在已经关闭,暂时无法访问。

微服务的技术栈有哪些?

微服务条目 技术
服务开发 SpringBoot,Spring,SpringMVC
服务配置与管理 Archaius,Diamond
服务注册与发现 Eureka,Consul,Zookeeper
服务调用 Rest,RPC,gRPC
服务熔断器 Hystrix,Envoy
负载均衡 Ribbon,Nginx
服务接口调用 Feign
消息队列 Kafka,RabbitMQ,ActiveMQ
服务配置中心管理 SpringCloudConfig,Chef
服务路由(API网关) Zuul
服务监控 Zabbix,Nagios,Metrice,Spectator
全链路追踪 Zipkin,Brave,Dapper
服务部署 Docker,OpenStack,Kubernetes
数据流操作开发包 SpringCloud Stream
时间消息总线 SpringCloud Bus

eureka和zookeeper都可以提供服务注册和发现的功能,区别是什么?

讲区别之前,我先讲讲分布式领域的著名定理CAP,所谓的CAP就是

C数据一致性,A服务可用性,P分区容错

这三个指标不可能同时做到,目前的技术,最多只能同时解决两个。

关于CAP,可以看看阮一峰的文章CAP介绍

eureka是AP,Zookeeper是CP

这是第一大区别,eureka保证的是可用性,Zookeeper保证的是一致性。但就这方面来说,访问量很大很频繁的网站,例如淘宝,在双十一期间肯定使用AP,不同的人可能看到的信息不同,不一致,但是必须可用,你不能说我上淘宝结果访问不了信息。

eureka节点平等,Zookeeper需要选举

这是第二大区别,eureka的每个节点都是平等的,例如我有三个eureka服务中心,挂了一个没事,挂了两个也没事,只要有一个eureka服务中心在就可以用,直接切换。

Zookeeper需要选举,leader节点挂了之后,Zookeeper会对剩下的节点进行选举,重新选一个leader节点,这个过程耗时30s~120s,在选举的期间,整个Zookeeper集群都是不可用的,这是灾难。

我举个例子,一栋住宅楼建好了,人们去买房。eureka是这样的,售楼人员帮助你买房,就算这个售楼人员请假了,没事,其他售楼人员也可以接待你。

Zookeeper就牛逼了,售楼人员的leader请假了,他们需要重新选举一个leader售楼人员,你去买房,他告诉你,等我们几个小时,我们正在选举......

所以,很多人都说,eureka比Zookeeper更适合做服务注册。

SpringCloud笔记一:扫盲的更多相关文章

  1. SpringCloud笔记六:Hystrix

    目录 Hystrix是什么? Hystrix服务熔断 新建Hystrix项目 修改yml Maven的pom.xml添加hystrix引用 修改Controller Hystrix服务降级 修改api ...

  2. SpringCloud笔记五:Feign

    目录 什么是Feign? 有了Ribbon我还要Feign干嘛? 新建consumer-feign 修改api项目 引入Maven文件 新建feign的接口 启动项目 报错 发泄发泄心情,一个段落 什 ...

  3. SpringCloud笔记四:Ribbon

    目录 什么是Ribbon? Ribbon的配置 Maven引入 开启注解 Ribbon负载均衡 新建provider8002和8003 Ribbon核心组件IRule Ribbon自定义 什么是Rib ...

  4. SpringCloud笔记三:Eureka服务注册与发现

    目录 什么是Eureka? Eureka注册的三大步 第一步,引用Maven 第二步,配置yml 第三步,开启Eureka注解 新建Eureka子项目 把provider子项目变成服务端 Eureka ...

  5. SpringCloud笔记二:搭建项目基础框架

    目录 搭建框架 新建父工程 新建子工程api 新建子工程提供者provider 新建消费者consumer 总结 搭建框架 我们的SpringCloud微服务框架是父子工程,有一个父工程,剩下的都是子 ...

  6. springCloud笔记

    分布式和集群的理解:比如在一个厨房有两个厨师,一个炒菜,一个洗菜,各自做不同的事情,但是却在合作,这种叫做分布式,两个都在炒菜或者都在做菜,就叫做集群. eureka的是springCloud的注册中 ...

  7. springcloud 笔记

    官方教程 http://projects.spring.io/spring-cloud/ guide https://github.com/spring-guides 伪官方教程 https://sp ...

  8. springcloud 笔记-服务注册中心

    1.搭建springcloud服务注册中心需要添加eureka的依赖: <?xml version="1.0" encoding="UTF-8"?> ...

  9. SpringBoot+SpringCloud 笔记

    SpringBoot总结 使用Typora打开https://pan.baidu.com/s/1tXS45j6ooXpnzhy1Zp78Gw 提取码: c8fi SpringCloud总结 使用XMi ...

随机推荐

  1. windows下查看端口被占用及处理

    一.通过命令行查找端口被谁占用 1.window+R组合键,调出命令窗口 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口 3.查看被占用端口对应的PID,输入 ...

  2. 一、Windows Server 2016 AD服务器搭建

    简介: AD是Active Directory的简写,中文称活动目录.活动目录(Active Directory)主要提供以下功能: 1)服务器及客户端计算机管理 2)用户服务 3)资源管理 4)桌面 ...

  3. Java学习笔记记录(二)

    1.复合语句 if条件语句 使用场景:boolean类型判断.一个范围的判断.几个常量值的判断 有左大括号就没有分号,有分号就没有左大括号. 如下: public class demo1 { stat ...

  4. 【Python 16】分形树绘制4.0(利用递归函数绘制分形树fractal tree)

     1.案例描述 树干为80,分叉角度为20,树枝长度小于5则停止.树枝长小于30,可以当作树叶了,树叶部分为绿色,其余为树干部分设为棕色. 2.案例分析 由于分形树具有对称性,自相似性,所以我们可以用 ...

  5. OpenCV 与 OpenGL 的关系是什么?

    OpenCV是 Open Source Computer Vision LibraryOpenGL是 Open Graphics LibraryOpenCV主要是提供图像处理和视频处理的基础算法库,还 ...

  6. JetBrains 全套激活 Pycharm Clion 高校学生老师免费用

    https://www.jetbrains.com/store/?fromMenu#edition=discounts https://www.jetbrains.com/zh/student/ 用高 ...

  7. 实验吧 简单的SQL注入1

    解题链接:http://ctf5.shiyanbar.com/423/web/ 解题思路:一,   输入1,不报错:输入1',报错:输入1'',不报错. 二 ,   输入1 and 1=1,返回1 1 ...

  8. ORM相关操作

    1.一般操作 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs) ...

  9. Strem_01

    import 'package:flutter/material.dart';import 'dart:async';import 'dart:ui'; void main()=>runApp( ...

  10. AT24 I2C EEPROM解析及测试

    关键词:AT24.I2C.nvmem.EEPROM. 1. AT24C介绍 AT24C是一款采用I2C通信的EEPROM,相关驱动涉及到I2C和nvmem. I2C是读写数据的通道,nvmem将AT2 ...