SpringCloud学习笔记(微服务入门)

SpringCloud学习笔记(微服务入门)

一、文章大纲:

SpringCloud Netflix五大组件

  • 服务注册与发现—— Netflix Eureka

  • 负载均衡:

    ​ 客户端负载均衡——Netflix Ribbon

    ​ 服务端负载均衡:——Feign(其也是依赖于Ribbon,只是将调用方式RestTemplete 更改成Service 接口)

  • 断路器——Netflix Hystrix

  • 服务网关——NetFlix Zuul

  • 分布式配置——Spring Cloud Config

二、常见面试题

大家可以带着这些问题去看看

1 什么是微服务?

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

3 SpringCloud 和 Dubbo有那些区别?

4 SpringBoot 和 SpringCloud,请谈谈你对他们的理解

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

6 微服务的优缺点分别是什么?说下你在项目开发中遇到的坑

7 你所知道的微服务技术栈有哪些?列举一二

8 Eureka和Zookeeper都可以提供服务注册与发现的功能,请说说两者的区别

三、微服务

1、微服务概述

什么是微服务?

微服务(Microservice Architecture) 是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。

究竟什么是微服务呢?我们在此引用ThoughtWorks 公司的首席科学家 Martin Fowler 于2014年提出的一段话:

就目前而言,对于微服务,业界并没有一个统一的,标准的定义。
但通常而言,微服务架构是一种架构模式,或者说是一种架构风格,它将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值,服务之间采用轻量级的通信机制(HTTP)互相沟通,每个服务都围绕着具体的业务进行构建,并且能狗被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应该根据业务上下文,选择合适的语言,工具(Maven)对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。

再从技术维度角度理解下:

  • 微服务就是将一个传统的一站式的应用,根据业务去拆分成一个个的服务,彻底地去解耦,一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。

1.2、微服务与微服务架构

微服务

狭义的看,可以看作是IDEA中的一个个微服务工程,或者Moudel。IDEA 工具里面使用Maven开发的一个个独立的小Moudel,它具体是使用SpringBoot开发的一个小模块,专业的事情交给专业的模块来做,一个模块就做着一件事情。强调的是一个个的个体,每个个体完成一个具体的任务或者功能。

微服务架构

微服务架构是一种架构模式,它体长将单一应用程序划分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制**(如HTTP)互相协作,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具(如Maven)**对其进行构建。

1.3、微服务带来的问题

把之前的单体程序架构变成一个个微服务之后,会面临些什么问题呢?

首先,就是模块之间的通信,由于整个工程进行了拆分,所以各个模块之间不像单体架构那样,导个包,直接调用就可以,而且各个模块拆分过后是可以部署在不同计算机上的,部署后的模块是一个独立的进程。(HTTP、RPC通信

其次,就是那么多微服务,怎么访问呢,大的项目有几十几百个微服务,学过Dubbo的小伙伴就知道,消费者(调用者)可以通过服务名进行调用,可用户是不知道这些服务名的呀,而且也不能让用户知道。那么就需要一个外部访问统一入口。(API网关

再者,万一某个微服务崩掉了怎么办,有些小伙伴可能想到了集群,确实,集群可以给服务提供一定的保障性,可当调用到崩掉的那个服务时,流程还是得走,这就会浪费很多时间,造成用户不好的体验。(熔断机制

最后,这么多微服务,怎么进行管理呢?(服务注册与发现

解决方案

Spring Cloud生态

1.SpringCloud NetFlix :一站式解决方案

 api网关,zuul组件

通信: Feign ----HttpClinet ----Http通信方式,同步,阻塞

服务注册与发现:Eureka

熔断机制:Hysstrix

2.Apache Dubbo Zookeeper:半自动,需要整合别人的

API网关:没有,需要找第三方组件,或者自己实现

通信:Dubbo,异步非阻塞

服务注册与发现:Zookeeper

Dubbo这个方案并不完善

3.Spring Cloud Alibaba 一站式解决方案,更简单

归其原因,网络不可靠

1.3、微服务技术栈有那些?

在这里插入图片描述

四、SpringCloud入门概述

1、SpringCloud是什么?

在这里插入图片描述

Spring官网:https://spring.io/

Spring Cloud为开发人员快速构建分布式系统中的一些常见模式提供了工具(例如,配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导层选举、分布式会话、集群状态)。分布式系统的协调导致了锅炉板模式,使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们将在任何分布式环境中很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台,如Cloud Foundry。

学习一样东西还是得多去官网!(狂老师说的哈),虽然我经常一看就会,一写就废,但会看官网,或者官网的的很多帮助文档,真的很重要。

2、SpringCloud和SpringBoot的关系

SpringBoot专注于开苏方便的开发单个个体微服务;
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、为代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务;
SpringBoot可以离开SpringCloud独立使用,开发项目,但SpringCloud离不开SpringBoot,属于依赖关系;
SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架;

使用微服务架构很简单,代码很简单,因为SpringBoot的自动装配,加上善良的注解开发,用起来还是挺简单,无非就是第一步导入依赖,第二步添加yml配置,最后加注解。但关键在于这些微服务组件的实现原理与机制,所以理论知识非常重要,今天就不上代码了,慢慢更吧,争取一个星期内把代码更完…

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值