〇、课程内容

课程规划

Day1 介绍及应用场景

Day2 组件介绍及 广度

Day3 设计思想、原理和源码

Day4 与容器化的容器(服务迁移、容器编排)

一、业务架构的演进

1、单体架构时代

缺陷:修改小功能,需要重新打包部署

需要:按照业务的维度进行拆分,每个应用有对应的数据库

2、垂直化拆分的时代

更该商品,无需修改用户及订单

优势:将大系统拆分为不同的子系统

劣势:部署的复杂性增加

存在问题:并发量大、用户数大时(不断查询),经验值qps读写;尤其大促场景

3、集群化时代

集群化之前加负载均衡器,应用高可用的部署方案(负载均衡)

存在问题:访问积分信息,需要进行认证请求,各个服务均需要进行登录,很多功能代码冗余

方案:把不同模块(登录、注册、邮件)抽离出来,得到基础服务

4、SOA架构

业务访问基础服务

5、微服务架构microservices--SOA架构的变体

是一个开发的独立系统,该系统由多个小的服务组成,每个服务都会运行在独立的Java进程中,并且各个服务之间会使用轻量级的通信机制进行通信(调用)

调用方式:HTTP协议

通过自动化运维机制完成部署:CICD(Continious Intergatation Continious Delivery DevOps)

这些服务是去中心化的(某个服务节点挂掉,其他服务也可以提供完整的功能)

可以采用不同的编程语言完成,不局限于Java进行开发

不同服务可以采用不同的数据存储技术(搜索es,缓存redis)

二、具体介绍

1、单体架构与微服务架构的比较

(1)单体架构

优势:所有代码部署在一个war包,方便部署和测试

劣势:开发效率-需要联调、代码维护难、扩展性比较低、可用性低--系统挂了无法为用户提供服务

(2)微服务架构

优势:各个服务的独立性、技术栈灵活、数据库选择灵活、团队高效

劣势:额外的工作【DDD领域驱动设计】、保证数据的一致性

2、微服务需要解决的问题

调用--跨网络方式通信

负载均衡如何解决

服务调用失败,如何处理-容错机制(立即返回、等待、休眠一段时间再访问)

入口层网关

数据一致性如何保证(事务如何保证)

3、解决

阿里开发了一系列组件,用于解决上述问题,如dubbo、seata

Netflix开发了一系列组件,解决上述问题,eureka、ribbon等

微软……

即大公司内部搞了一些中间件

一家小公司,对Spring服务拆分之后,会形成一个spring工程

A:整合dubbo、seata、nacos、

对一个普通的spring工程而言,

4、介绍

提供了一个标准,包含很多组件

阿里巴巴实现了标准,并将很多组件进行整合

各个厂商使用装饰者模式对标准的接口进行实现

左边是Spring Cloud自己写了接口和实现类

右边是各个厂商写的实现类(实现Spring Cloud的标准)

需要基于Spring生态作为标准

三、使用

1、创建项目及工程

大项目中,构建多个工程

2、更改配置

两个工程的配置文件改为 yml格式,改成不同的端口

3、版本的兼容性

改为统一的版本

4、Spring Cloud组件进行整合

整合顺序:整合Spring Cloud的版本

父pom整合插件,子pom无需整合插件和测试包

无需写每个组件的版本

5、设置并行运行

四、注册中心

1、服务的ip地址及端口维护(注册中心)

注册中心:存储服务及服务的URL

不同服务注册到那台机器,实现服务的统一维护

解决

即服务注册与发现

服务发现:根据注册中心找到对应的URL地址

在注册中心中,可以进行选择,例如netflix可以使用Eureka或阿里巴巴的Nacos(那扣死)

或者也可以选择zookeeper、Etcd等

2、注册启动--启动服务端

可以采用源码启动或二进制包启动

以Nacos为例,可以先启动Nacos的server进行启动

默认使用8848端口进行监听

Nacos会通过集群的方式启动,为了避免寻找,可以配置组内启动,表示以单机的方式启动Nacos Server

设置单机启动的参数

3、Nacos Server上进行服务注册

服务注册的命令:

服务发现的命令:

在InstanceController中接收参数

4、启动Nacos

5、配置

指定Nacos服务(注册中心)的地址

指定不同服务的地址(采用当前机器作为 默认地址)

6、总结:基于Spring Boot+Nacos,整合了服务注册与注册发现

可以从客户端浏览器查看Nacos的状态

需要向Nacos发送

7、不同服务的注册

可以注册到不同的Nacos上

8、服务发现

写接口测试

使用@Resources注解表示从IOC容器中获取注册信息,同@AutoWired

服务发现是一个接口

不同厂商编写实现类

那么UserService就能够访问oder-service

9、负载均衡

有多个url,进行负载均衡操作

可以自定义负载,筛选出想要的内容

可以自定义负载均衡算法:轮训、权重、随机

拿到随机的url地址

默认的是使用ribbon

五、服务调用使用restTemplate

1、选型

2、注入

3、调用

4、总结

缺陷:需要手写负载均衡,算法单一

六、使用Netflix的Ribbon进行负载均衡

1、步骤

引入依赖、写配置、写注解

2、负载均衡方法体验

Ribbon使用LoadBalancerClient接口,Ribbon对其实现,返回的是实现类

使用Idea的Restful Tool进行测试

3、使用注解测试

自带负载均衡的restTemplate-服务发现

@LoadBalance将

4、Ribbon的使用方式

原生+配合RestTemplate

5、与Nginx的对比

服务端负载均衡

客户端负载均衡--Ribbon

6、选择不同负载均衡的方式

如果想要更改某个组件的具体配置

方式1:定义一个java类去配置对应的一些Bean

方式2:在yml文件中进行配置

七、服务调用-fen

1、面向对象开发思想

Object#Method

可以使用OpenFeign

使用MVC注解完成客户端的调用

可以改变使用方式

符合面向对象的开发方式

2、步骤

引入依赖、写配置、写注解

创建feign的包,创建一个接口

注解替换

使用

3、总结

原理:会根据服务名称获取到URL地址,并与方法进行拼接

debug会生成动态代理实现类,完成query的实现

不同的服务使用不同的Feign(在feign包下的不同接口)

4、使用HttpClient客户端调用方式

@RequestMapping的注解和接口中的注解的区别与联系:之前开发接口时,定义在服务端(服务端声明好等待客户端进行调用)

而现在使用feign:将其定义在客户端,在客户端发挥作用,(客户端调用服务端)

八、更改组件的行为

1、Ribbon

修改负载均衡策略

2、Feign

例如修改feign的日志级别

修改调用方式

3、修改位置yml配置文件--修改组件的行为

打印出了日志

【Day01】Spring Cloud入门-架构演进、注册中心Nacos、负载均衡Ribbon、服务调用RestTemplate与OpenFeign的更多相关文章

  1. spring cloud 入门系列五:使用Feign 实现声明式服务调用

    一.Spring Cloud Feign概念引入通过前面的随笔,我们了解如何通过Spring Cloud ribbon进行负责均衡,如何通过Spring Cloud Hystrix进行服务断路保护,两 ...

  2. spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)

    Ribbon是Netflix公司开源的一个负载均衡组件,将负载均衡逻辑封装在客户端中,运行在客户端的进程里. 本例子是在搭建好eureka的基础上进行的,可参考spring boot 2.0.3+sp ...

  3. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  4. Spring Cloud 系列之 Consul 注册中心(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Consul 注册中心(一) 本篇文章讲解 Consul 集群环境的搭建. Consul 集群 上图是一个简单的 Co ...

  5. spring cloud实战 1-高可用注册中心

    创建父maven项目 提交代码至GitHub 创建eureka-server-1 项目搭建两种方式: 父pom中继承spring-boot-starter-parent,子pom中直接结成父pom.该 ...

  6. 阿里架构师的工作总结:Spring Cloud在架构演进中起到的作用

    Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,本篇主要解答这两个问题:Spring Cloud在微服务的架构中都做了哪些事情?Spring Cloud提供的这些功 ...

  7. Spring Cloud 系列之 ZooKeeper 注册中心

    什么是注册中心 服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串.路由信息等.服务注册中心是微服务架构中最基础的设施之一. 注册中心可以说 ...

  8. Spring Cloud(Dalston.SR5)--Eureka 注册中心搭建

    基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现 服务注册:在 ...

  9. Spring Cloud Eureka 高可用注册中心

    参考:<<spring cloud 微服务实战>> 在微服务架构这样的分布式环境中,各个组件需要进行高可用部署. Eureka Server 高可用实际上就是将自己作为服务向其 ...

  10. 笔记:Spring Cloud Eureka 高可用注册中心

    在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对与微服务和服务注册中心都需要高可用部署,Eureka 高可用实际上就是将自己作为服务向其 ...

随机推荐

  1. Elasticsearch基础但非常有用的功能之二:模板

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484584&idx=1&sn=accfb65 ...

  2. vue通过插件实现PDF生成以及下载

    第一步: 安装插件 npm install --save html2canvas //将html转换成图片 npm install jspdf --save //将图片生成pdf 第二步: 在需要的地 ...

  3. httpd常用配置之虚拟主机

    httpd常用配置 目录 httpd常用配置 虚拟主机: 相同IP不同端口 不同IP相同端口 相同IP相同端口不同域名 切换使用MPM(编辑/etc/httpd/conf.modules.d/00-m ...

  4. .NET 5 设计 API (资源站)

    跟新于 2022-11日 数据抓取端 随着数据的增多,问题也越来越多 用redis 主要是为了 以后进行,多个数据库写入. 例如我搭建一个 别的数据库论坛,我直接拿数据去redis里面拿,就不用跨库查 ...

  5. java常用注解校验参数

    validation中内置的constraints 注解 描述 @AssertFalse 所注解的元素必须是Boolean类型,且值为false @AssertTrue 所注解的元素必须是Boolea ...

  6. input框限制只能输入数字的两种方法

    方法一: <input type="text"   oninput="value=value.replace(/[^\d.%]/g,'')"> 方法 ...

  7. 超好用的截图软件Snipaste(包含安装包)、如何设置Snipaste开机自启

    文章目录 1.设置开机自动启动 2.基本使用 链接: https://pan.baidu.com/s/1oR2qkOZl5-etPxr7kWip7Q 提取码:8888 1.设置开机自动启动 2.基本使 ...

  8. 齐博x1直播要设置回调地址才能播放

    因为通过扫码或推流网址给第三方用,也能让圈子实现直播,所以系统就改为必须要设置回调地址才能播放视频了.下面阿里与腾讯的都是大同小异的.腾迅的有多项,阿里的只有一项,不过阿里其实还有另一项,就是录制的时 ...

  9. Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

    本文主要介绍 Windows 环境下搭建 PostgreSQL 的主从逻辑复制,关于 PostgreSQl 的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置 ...

  10. JWT中token的理解

    今天我们来聊一聊关于JWT授权的事情. JWT:Json Web Token.顾名思义,它是一种在Web中,使用Json来进行Token授权的方案. 既然没有找好密码,token是如何解决信任问题的呢 ...