Spring Cloud微服务技术栈学习(导读)

目录标题

  • 前言
    • 微服务架构解决方案
    • 什么是spring cloud
    • 技术组件
  • 概念区分
    • 1、spring cloud alibaba与spring cloud netflix
    • 2、微服务技术之间的关系
    • 3、springcloud是通过http协议通讯的
    • 4、RestTemplate
  • 一、Nacos(阿里 - 注册中心)
    • 1、学习笔记
    • 2、相关文档
    • 3、安装教程
  • 二、Ribbon(阿里 - 负载均衡器+远程调用服务)
    • 1、学习笔记
    • 2、相关文档
  • 三、Feign(Netflix - 替换Ribbon)
    • 1、学习笔记
    • 2、相关文档
    • 3、安装教程

前言

记录Spring Cloud微服务技术栈相关知识。

微服务架构解决方案

常见的微服务架构方案有四种,分别是ZeroC lceGrid、基于消息队列、DockerSwarm和Spring Cloud。下面主要学习Spring Cloud解决方案。

什么是spring cloud

  • Spring Cloud是一个基于SpringBoot实现的云应用开发工具,是一系列框架的集合,当添加这些工具库到应用后会增强应用的行为。SpringBoot秉持约定优于配置的思想,因此可以利用这些组件基本的默认行为来快速入门,并在需要的时候可以配置或扩展,以创建自定义解决方案。
  • Spring Cloud利用Spring Boot的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以基于Spring Boot组件进行开发,做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前比较成熟、经得起实际考验、优秀的开源服务框架组合起来,通过Spring Boot进行封装,屏蔽掉复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

以下为Spring Cloud的核心功能:

  • 分布式/版本化配置
  • 服务注册和发现
  • 服务路由
  • 服务和服务之间的调用
  • 负载均衡
  • 断路器
  • 分布式消息传递

还有很多基础的功能没有列出,每个功能对应Spring Cloud中的一个组件,包括Spring Cloud Config、Spring Cloud Netflix (Eureka、Hystrix、Zuul、Archaius…) . Spring Cloud Bus等组件。

技术组件

概念区分

1、spring cloud alibaba与spring cloud netflix

spring cloud alibabaspring cloud netflix分别是两家公司(阿里和Netflix)对微服务系系列技术栈的两种实现方式。

2、微服务技术之间的关系

  1. nacos是注册中心:所有的服务都会注册到nacos里面去;但是光注册不行,服务之间应该如何调用呢?因此引出ribbon
  2. ribbon是负载均衡+远程调用(HttpURLConnectio):如果A服务做了集群部署,那么B服务想要调用A服务具体哪个机器是由ribbon负责;但是ribbon的方式进行服务调用太麻烦,因此引出fei’g’n
  3. feign替换ribbon:feign的使用比ribbon要简单;feign底层集成了ribbon,同样具备负载均衡功能;
    Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Eureka,从而使得Feign的使用更加方便。

3、springcloud是通过http协议通讯的

Spring Cloud也是⼀种RPC框架,但是区别是它使⽤的是http协议的传输,整体技术和普通RPC如dubbo/thrift有很⼤区别,所以⼀般会分开说。但实际上⽐如美团的pigeon类似于dubbo,但是它也是⽀持http协议调⽤的。

4、RestTemplate

在服务的调用过程中,使用到了一个工具,叫做RestTemplate,RestTemplate 是由 Spring 提供的一个 HTTP 请求工具。在上文的案例中,开发者也可以不使用 RestTemplate ,使用 Java 自带的 HttpUrlConnection 或者经典的网络访问框架 HttpClient 也可以完成上文的案例,只是在 Spring 项目中,使用 RestTemplate 显然更方便一些。

RestTemplate 用法详解

一、Nacos(阿里 - 注册中心)

1、学习笔记

微服务架构介绍

01 Alibaba微服务组件Nacos注册中心实战

代码位置:
D:\A-MyFileSpace\MyIdeaSpace-demo\xxxx-4-micro-service\03\vip-spring-cloud-alibaba

2、相关文档

Nacos官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

3、安装教程

Nacos安装教程(Windows版本、Linux版本)
Nacos - nacos-mysql.sql源文件与application.properties配置文件

二、Ribbon(阿里 - 负载均衡器+远程调用服务)

  • 阿里的Ribbon是基于Netflix的Ribbon开发;
  • Nacos依赖于Ribbon;

1、学习笔记

02 微服务负载均衡器Ribbon实战
02-1 微服务负载均衡器LoadBalancer实战
a、ribbon和loadbalancer都是springcloud的负载均衡组件

代码位置:
D:\A-MyFileSpace\MyIdeaSpace-demo\xxxx-4-micro-service\04\vip-spring-cloud-alibaba (2)

2、相关文档

客户端负载均衡Ribbon
如何选择ribbon还是loadbalancer

三、Feign(Netflix - 替换Ribbon)

  • Feign其实不是做负载均衡的,负载均衡是Ribbon的功能, Feign只是集成了Ribbon而已。但是负载均衡的功能还是Feign内置的Ribbon再做,而不是Feign。

  • Feign的作用是替代RestTemplate, Feign的性能比较低,但是可以使代码可读性很强。

  • Ribbon的负载均衡策略,默认的常见有随机规则,轮询规则,权重规则
    随机不用说,轮询也不用说,权重意思是,请求时间越久的server,其被分配给客户端使用的可能性就越低。

  • Ribbon也可以自定义策略。具体方法包括:
    方法1.实现IRule接口
    方法2.集成AbstractLoadBalancerRule 、PredicateBasedRule。
    只要在配置中自动注入自定义的策略bean就可以。

1、学习笔记

03 微服务调用组件Feign实战

个人博客 - Spring Cloud - OpenFeign使用
OpenFeign 入门教程 - 基础篇

2、相关文档

OpenFeign中文文档

3、安装教程

你可能感兴趣的:(分布式与微服务篇,spring,cloud,微服务)