ToB企服应用市场:ToB评测及商务社交产业平台
标题:
分布式微服务相关概念【分布式微服务笔记01】
[打印本页]
作者:
北冰洋以北
时间:
2024-7-16 14:50
标题:
分布式微服务相关概念【分布式微服务笔记01】
分布式微服务相关概念【分布式微服务笔记01】
什么是SpingCloud&SpringCloudAlibaba?
SpingCloud 和 SpringCloudAlibaba 是一套
标准化的微服务办理方案
微服务可以根据业务差别,将一个大项目拆解成差别的服务(搜刮服务/网关服务/配置服务/存储服务/发现服务......)
各个服务通过
分布式方式举行工作
,从而可以高效、快速、稳定的完成复杂的功能
微服务的须要性以及演变过程:
在高并发时,要办理服务熔断降级问题,保证系统的高可用性 ------引出------熔断降级模块
在服务器使用集群时,要办理负载均衡问题 ------引出------负载均衡模块
在复杂的网络情况下,要保证数据存储的稳定性和一致性 ------引出------数据存储模块
提供网关服务 ------引出------网关模块
由于每家公司都是本身开发的模块用的不一样,最终Spring社区整合了优质组件【NetFlix + Alibaba + 本身开发】统一起来
熔断降级模块【Sentinel】
服务发现和注册【Nacos】
负载均衡【Ribbon】
网管组件【Gateway】
系统架构演变过程
↓单体架构
SpringMVC 和 SpringBoot 类似的单个应用服务器+数据库服务器
↓动静分离架构【静态缓存 + 文件存储】
动静分离:加上了Nginx服务器来判断请求的资源是动态还是静态的,动态放行,静态就让Nginx请求文件服务器直接返回,从而减轻应用服务器的压力
静态缓存:加入缓存产物,放入缓存服务器,不会直接去DB操作,从而减少对数据库服务器的压力
↓分布式事务【业务拆分+负载均衡】
业务拆分:将应用服务器拆分为多个应用服务器
负载均衡:Nginx需要举行负载均衡,均衡的分配给服务器
数据库主从分离:数据库分为一个主数据库和多个从数据库,主服务器对业务修改,从服务器对业务分别查询
↓微服务架构【SpringCloud】
SpringCloud介绍
SpringCloud 来源于Spring, 是更高层次的、架构视角的综合性大型项目, 目标旨在构建一套标准化的微服务办理方案, 让架构师在使用微服务理念构建系统的时, 面临各环节的问题都可以找到相应的组件来处理
Spring Cloud 是Spring 社区为微服务架构提供的一个"全家桶" 套餐。套餐中各个组件之间的配合, 可以减少在组件的选型和整合上花费的精力,可以快速构建起底子的微服务架构系统,是微服务架构的最佳落地方案
Spirng Cloud 天然支持Spring Boot(有版本对应要求),使用门槛较低
办理与分布式系统相关的复杂性– 网络问题,延迟开销,带宽问题,安全问题
处理服务发现的能力– 服务发现允许集群中的进程和服务找到彼此并举行通信
办理冗余问题– 冗余问题经常发生在分布式系统中
办理负载均衡– 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布
SpringCloud核心组件
SpringCloud
Spring Cloud 是微服务的落地
Spring Cloud 体现了微服务的弹性计划
微服务的工作方式一般是基于分布式的.
Spring Cloud 仍然是Spring 家族一员,可以办理微服务的分布式工作方式带来的各种问
题
Spring Cloud 提供许多组件,好比服务发现, 负载均衡, 链路中断, 分布式追踪和监控,
甚至提供API gateway 功能.
SpringCloud和SpringBoot版本的对应
SpringCloud组件选型
服务注册中心【Erueka(现在使用较少了)、Nacos(主流)、Zookeeper、Consul】
服务负载均衡【Ribbon、LoadBalancer】
服务熔断降级【Hystrix(现在使用较少了)、Sentinel(主流)】
服务调用 【Feign(现在使用较少了)、Open Feign(主流)】
服务网关 【Zuul(现在使用较少了)、GateWay(主流)】
服务配置 【Config、Nacos(推荐)】
服务总线 【Bus、Nacos(推荐)】
SpringCloud Alibaba 基本介绍
● Spring Cloud 原生组件的几大痛点
Spring Cloud 部门组件停止维护和更新, 给开发带来不便
Spring Cloud 部门环境搭建复杂,没有美满的可视化界面,我们需要大量的二次开发和定
制
Spring Cloud 配置复杂,难以上手
● Spring Cloud Alibaba 的优势
阿里使用过的组件经历了考验[
高并发,高性能,高可用
],性能强悍,计划公道,现在开源出来供各人使用
搭配美满的可视化界面, 给开发运维带来极大的便利搭建简朴,学习曲线低
● 分布式微服务技能选型建议
Spring Cloud Alibaba 组件为主、
Spring Cloud 为辅, 好比(SpringCloud- Ribbon∶ 负载均衡、SpringCloud-OpenFeign∶ 调用远程服务、SpringCloud-Gateway∶ API 网关、SpringCloud-Sleuth∶ 调用链监控等) 还黑白常不错的.
微服务底子环境搭建
创建父项目【去管理多个子模块/微服务模块】【编码设置/jdk设置/删src/配置pom.xml】
dependencyManagement 分析
Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常在项目packaging 为POM, 中使用dependencvManadement 元素。
使用pom.xml 中的dependencyManagement 元素能让所有在子项目中只引用一个依赖, Maven 会沿着父子层次向上走, 直到找到一个拥有
dependencyManagement 元素的项目, 然后它就会使用这个dependencyManagement 元素中指定的版本号。
好处∶假如有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,当升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要分别在子项目的修改;另外假如某个子项目需要另外的一个版本,只需要声明version 就可。
dependencyManagement 里只是声明依赖,并不实现引入
,因此子项目需要显示的声明需要用的依赖。
假如不在子项目中声明依赖,是不会从父项目中继承下来的; 只有在子项目中写了该依赖项,而且没有指定具体版本,才会从父项目中继承该项,而且version 和scope 都读取自父pom
假如子项目中指定了版本号,那么会使用子项目中指定的jar 版本
org.springframework.boot spring-boot-dependencies 2.2.2.RELEASE pom import
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
复制代码
RestTemplate
基本介绍
RestTemplate 是Spring 提供的用于访问Rest 服务的模板类
RestTemplate 提供了多种便捷访问远程Http 服务的方法【访问接口/方法】
通过RestTemplate, 我们可以发出http 请求(支持Restful 风格), 去调用Controller 提供的API 接口, 就像我们使用浏览器发出http 请求,调用该API 接口一样.
//配置注入 RestTemplate
@Configuration
public class CustomizationBean {
@LoadBalanced //赋予 restTemplate 负载均衡 的能力
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
复制代码
本文学习内容来自韩顺平老师的课程
仅供个人参考学习
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4