spring cloud alibaba

目录

1.spring cloud alibaba 的出现

2.服务注册到nacos

3.服务注册中心对比

3.nacos做配置中心

3.1 基础配置

    

3.2 分类配置

4.nacos集群和持久化配置


1.spring cloud alibaba 的出现

spring cloud netflix 进入了维护阶段,将不再开发新的组件

2.服务注册到nacos

yml配置:

spring:
    cloud:
        nacos:
            discovery:
                server-addr: localhost:8848

3.服务注册中心对比

框架cap模型控制台管理社区活跃度
eurakaAP支持
zookeeperCP不支持
ConsulCP支持
NacosAP支持

C是所有节点在同一时间看到的数是一致的。而A的定义是所有的请求都会受到响应。

一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式,当前主流的服务如spring cloud和Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。

如果需要在服务级别编辑或者存储配置信息,那么cp是必须,K8S服务和DNS服务则适用于CP模式。CP模式支持注册持久化实例,此时则是以Raft协议我集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则返回错误。

nacos支持AP与CP的切换

curl -X PUT '$nacos_server:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP

3.nacos做配置中心

3.1 基础配置

pom配置:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

    

nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载顺序存在优先级顺序的,bootstrap优先级高于application

yml配置:

spring:
    cloud:
        nacos:
            config:
                server-addr: localhost:8848
                file-extension: yaml

3.2 分类配置

namespace+group+dataId

1.nacos之group分组

配置文件yml中,增加group:组名

2.nacos之namespace空间方案

配置文件yml中,增加namespace: id

4.nacos集群和持久化配置

默认nacos使用嵌入式数据库实现数据的存储,所以,如果启动多个默认配置下的nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持mysql的存储。

nacos默认自带的嵌入式数据库derby

derby到mysql的切换步骤:

nacos-server\nacos\conf目录下找到sql脚本,执行sql;

nacos-server\nacos\conf目录下找到application.properties 配置mysql连接信息

集群配置:

nacos-server/nacos/conf/cluster.conf.example

cp cluster.conf.example cluster.conf

vim cluster.conf:

192.168.111.133:3333

192.168.111.144:4444

192.168.111.155:5555

修改start.sh启动脚本

5.raft

raft协议强依赖Leader节点来确保集群数据一致性。即client发送过来的数据先到达leader节点,leader接受到数据后,先将数据标记为uncommited状态,随后leader节点开始向所有follower复制数据并等待响应,在获得集群中大于N/2个Follower的已经成功接收数据完毕响应后,Leader将数据的状态标记为committed,随后向client发送数据已经接收确认,在向client发出数据接收后,再向所有Follower节点发送通知表名该数据状态为committed。

nacos server 有两种运行模式:1.standalone 单节点模式 2.cluster 集群模式

-m 用于指定启动方式 或 startup.cmd中设置 set MODE="standalone";

springboot 2.4之后的版本必须引入:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

否则无法读到bootstrap.yml文件

公共配置文件的common.yml的读取配置:

spring:
    cloud:
        nacos:
            config:
                extend-config[0]:
                    data-id: common.yml
                    refresh: true

extend-config[N] N值越大,配置优先级越高。

6.网关

spring cloud gateway具备一些网关的高级功能:动态路由、限流、路径重写

配置:

spring:
    cloud:
        gateway:
            routes:
                - id: url-proxy
                  url: https://blog.csdn.net
                  predicates:
                    - Path=/csdn

6.1路由配置方式

路由是网关配置的基本组成模式。一个Route模块由一个Id,一个目标URI,一组断言、一组过滤器定义,如果断言为真,则路由匹配,目标url会被访问。

6.1.1 基础路由配置

        请求的目标地址,是单个uri资源路径

6.1.2 基于代码的路由配置
6.1.3 和注册中心相结合的路由配置方式

lb开头的url

6.2 Predicate简介

目前springcloud gateway 支持多种方式,常见如:Path、Query、Method、Header等,写法必须遵守key=value形式

规则实例说明
Path
Before在某个时间之前的请求会转发到url
After某个时间之后的请求转发到url
Host-Host = xx.baidu.com
Cookie- Cookie = sessionId,test
Header- Header =X-Request-Id,\d+
Query- Query = 参数名或者 -Query = 参数名,参数值
Method-Method =put

                        

  curl 待cookie 请求:curl http://localhost:9000 --cookie "sessionId=test"

6.3过滤器规则

过滤规则实例说明
PrefixPath-PrefixPath=/app在请求路径上加/app
RewritePath-RewritePath=/test,/app/test访问localhost:9000/test,请求会转到localhost9000/app/test
default-filters对所有的请求都添加过滤器

   网关跨域配置:

spring:
    cloud:
        gateway:
            globalcors:
                cors-configuration:
                    '[/**]':
                     allowed-origin-patterns: "*"
                     allowed-headers: "*"
                     allowed-credentials: true
                     allowed-methods:
                        - GET
                        - POST
                        - DELETE
                        - PUT
                        - OPTION


 

7.分布式事务

7.1 两阶段提交

将整个事务流程分为两个阶段:准备阶段、提交阶段;整个过程由事务管理器和参与者组成;事务管理者负责决策整个分布式事务的提交和回滚,事务参与者负责自己本地事务的提交和回滚;

oracle、mysql支持两阶段提交协议:

1.准备阶段:事务管理者给每个参与者发送Prepare消息,每个数据库参与者在本地执行事务,并写本地的undo/rodo日志,此时事务没有提交;

undo是记录修改前的数据,redo是记录修改后的数据

2.提交阶段:如果事务管理器收到了参与者的执行失败或者超时消息时,直接给每个参与者发送回滚消息;否则,发送提交消息;参与者根据管理器发送的指令执行提交或回滚操作,并释放事务处理过程中使用的锁资源。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值