微服务SpringCloud
未读ES文档### 创建 indexPUT http://localhost:9200/questions
### 删除一个IndexDELETE http://localhost:9200/questions
### 设置index中的文档属性采用ik分词POST http://localhost:9200/questions/_mappingContent-Type: application/json{ "properties": { "title": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" }, "content": { "type": "text&quo ...
微服务SpringCloud
未读简单网关演示Spring Gateway不是一个软件,而是一个依赖,所以我们要使用它需要创建一个Spring Boot项目
这个项目也要注册到注册中心,因为网关项目也是微服务项目的一部分
beijing和shanghai的项目,这个就是简单的Spring Boot项目也需要注册到注册中心,但是只需要控制层即可
创建gateway项目gateway项目就是网关项目,需要添加配置
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0. ...
微服务SpringCloud
未读Gateway:Spring Cloud API网关组件在微服务架构中,一个系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。
这种客户端直接请求服务的方式存在以下问题:
当服务数量众多时,客户端需要维护大量的服务地址,这对于客户端来说,是非常繁琐复杂的。
在某些场景下可能会存在跨域请求的问题。
身份认证的难度大,每个微服务需要独立认证。
我们可以通过 API 网关来解决这些问题,下面就让我们来看看什么是 API 网关。
API 网关API 网关是一个搭建在客户端和微服务之间的服务,我们可以在 API 网关中处理一些非业务功能的逻辑,例如权限验证、监控、缓存、请求路由等。
API 网关就像整个微服务系统的门面一样,是系统对外的唯一入口。有了它,客户端会先将请求发送到 API 网关,然后由 API 网关根据请求的标识信息将请求转发到微服务实例。图1:两种服务访问方式对比
对于服务数量众多、复杂度较高、规模比较大的系统来说, ...
微服务SpringCloud
未读如何在idea中启动sentinel官网下载地址:https://github.com/alibaba/Sentinel/releases
一、找到Edit Configurations(两种方式),并在里面的Shell Script中进行添加
二、配置方法有两个(Scrip file,Script text) 可能会因idea版本的不同配置选择方式不一致(1)Scrip file配置信息:-Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar D:\sorftware\sentinel\sentinel-dashboard-1.8.1.jar提示:其中-jar后后面为自己的sentinelde 的jar包路径自行修改及版本号(2)Script text配置信息:java '-Dserver.port=8180' '-Dcsp.sentinel.dashboard.server=localhost:818 ...
事务ACID特性
原子性、一致性、隔离性、永久性
单体架构中,学习过事务,但是只能保证一个项目的数据一致性,在分布式中如何保证?需要用到一个工具:seata
Seata什么是Seata?
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,也是Spring Cloud Alibaba提供的组件
Seata保证微服务远程调用业务的原子性
Seata将为用户提供了AT、TCC、SAGA、XA事务模式,为用户打造一站式的分布式解决方案
Seata的运行原理(AT模式)Seata构成部分包含:
TC:事务协调器
TM:事务管理器(事务的起点)
RM:资源管理器
我们项目使用的AT模式(默认)来完成分布式事务的解决方案
AT模式的运行过程
事务的发起方(TM)会事务协调器(TC)申请一个全局事务id,并保存
Seata会管理事务中所有相关的参与方的数据源,将数据操作之前和之后的镜像都保存在undo_log表中,这个表是seata组件规定的表,没有它就不能实现效果,依靠它来实现提交或回滚的操作
事务的发起方会联通全局id一起通过远程调用运行 ...
微服务SpringCloud
未读Sentinel什么是Sentinel
Sentinel也是Spring Cloud Alibaba的组件
Sentinel英文翻译“哨兵/门卫”,限制并发数
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断、降级、系统负载保护等多个维度保护服务的稳定性
为什么需要Sentinel丰富的应用场景
双十一、秒杀、抢火车票等等
完备的实时状态监控
可以支持显示当前项目各个服务的运行和压力状态,分析出每台服务器处理的秒级别的数据
广泛的开源生态
很多技术可以和Sentinel进行整合,Spring Cloud、Dubbo,而且依赖少配置简单
完善的SPI的扩展
Sentinel支持程序设置各种自定义的规则……
基本配置和限流效果我们的限流针对的是控制器方法
我们在csmall-stock-webapi模块中进行测试和观察限流效果
添加sentinel的依赖<!--添加sentinel依赖--> <dependency> <groupId>com.alibaba.cl ...
微服务SpringCloud
未读简介Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。
说功能明
服务限流降级:默认支持 Servlet,RestTemplate,Dubbo 和 RocketMQ 限流降级功能的介入,可以再运行时通过控制台实时修改限流降级规则,还支持查看限流降级的 Metrics 监控 ;解决服务异常问题
服务注册与发现:适配 SpringCloud 服务注册与发现标准,默认集成了 Ribbon 的支持 解决服务治理问题
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新
消息驱动能力:基于 SpringCloud Stream 为微服务应用构建消息驱动能力 异步通信,解决组件间通信问题
阿里云对象存储:阿里云提供的海量,安全,低成本,高 ...
微服务SpringCloud
未读服务之间进行调用RPC
什么是RPC
RPC是Remote Procedure Call的缩写,翻译为:远程过程调用
目标是为了实现两台(多台)计算机\服务器,相互调用方法\通信的解决方案
RPC只是显示远程调用的一套标准,该标准主要规定了两部分内容
序列化协议
通信协议
通信协议
通信协议指的就是远程调用的通信方式
实际上这个通知的方法可以有多种
例如:写信、闪送
序列化协议
序列化协议指通信内容的格式,双方都要理解这个格式
发送信息是序列化过程,接收信息需要反序列化
Dubbo上面对RPC有基本认识之后,再学习Dubbo就简单了
Dubbo是一套RPC框架。既然是框架,我们可以再框架结构高度,定义Dubbo中使用的通信协议,使用的序列化协议框架技术,而数据格式由Dubbo定义,我们负责配置之后直接通过客户端调用服务端代码。
可以说Dubbo就是RPC概念的实现
Dubbo是Spring Cloud Alibab提供的框架,能够实现微服务之间相互调用的功能
Dubbo的发展历程
最早是阿里巴巴内部的框架技术
2011年,阿里巴巴把dubbo对外开放
2012年底,阿里巴巴对d ...
注册中心注册中心就是专门对服务的信息进行存储和管理的服务器如果没有注册中心,在微服务时代我们是把一个大项目拆分成细粒度的小项目,小项目之间需要维护关系,那么维护成本高没有注册中心,服务之间调用时需要在配置文件或代码中写死服务的地址,如果需要修改则需要停止项目进行修改常用的注册中心有:nacos、eureka、zookeeper、consul
CAP理论分布式系统设计中设计了CAP理论中,需要符合其中的两项
C:consistency 一致性,所有节点在同一时间的数据完成一致
A:availabilty 可用性,服务在正常的响应时间内是可用的
P:partition tolerance 分区容错性,以实际效果而言,分区相当于对通信的时限要求,系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择
注册中心一般选择AP
NacosNacos是Spring Cloud Aliaba提供的一个软件
这个软件主要具有注册中心和配置中心(最后再讲)的功能微服务中的所有项目都必须先注册到注册中心才能成为微服务的一部分
Nacos的安装及启动
解压nacos的 ...
npm 图床搭建我的博客主题版本为:hexo5.4、Butterfly3.6.2
如果与我的版本不一样可能会有略微差别,届时请自行百度。
本文参考文章:Akilar の糖果屋的《npm 图床的使用技巧》。
1. 创建一个 GitHub 仓库存储图片
首先创建一个图床仓库用来存放图片,仓库名随意。以下会以 [AssetsRepo] 指代这个静态资源仓库。
访问 (Github-> 头像(右上角)->Settings->Developer Settings->Personal access tokens)Personal Access Tokens (Classic) (github.com)->generate new token, 创建的 Token 名称随意,但必须勾选 repo 项。
token 只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token。之后如果忘记了就只能重新生成重新配置了。
2. npm 图床使用
首先需要注册一个 npm 的账号。访问 npm 注册页面
完成邮箱验证,注册完成后进入账号管理界面:头 ...