学习笔记 谷粒02 Cloud

分布式

  • 注册中心统一管理服务,配置中心统一管理配置
  • 网关对所有前端请求 路由,过滤,限流

8、SpringCloud Alibaba简介

SpringCloud的几大痛点:

  • SpringCloud部分组件停止维护和更新,给开发带来不便;
  • SpringCloud部门环境搭建复杂没有完善的可视化界面,我们需要大量的二次开发和定制
  • SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用

 SpringCloud Alibab的优势:

  • 性能强悍,搭建简单

 SpringCloud Alibab组件

  • SpringCloud Alibaba -Nacos:注册中心(服务发现/注册)
  • SpringCloud Alibaba -Nacos:配置中心(动态配置管理)
  • SpringCloud Alibaba-Sentinel:服务容错(限流、降级、熔断)
  • SpringCloud-Gateway:API网关(webflux编程模式)
  • SpringCloud Alibaba-Seata:分布式事务解决方案
  • SpringCloud-Sleuth:调用链监控
  • Feign是声明式,模板化的HTTP客户端,支持负载均衡
  • OpenFeign对Feign增强,支持Spring mvc注解(如:GetMapping)

版本号决定

  • cloud Hoxton.SR6 ,alibaba ,2.2.1.RELEASE,boot  2.3.2.RELEASE

在common的pom.xml中加入

  • dependencies

dependencyManagement

  • 让子项目引用依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,使用这个dependencyManagement元素中指定的版本号

dependencyManagement(统一管理依赖版本)

  • 字模块使用父模块的版本号
  • import避免单继承限制,引入模块使用import的版本号(scope必须是import,type必须是pom)  

 依赖引入

  • 引入discovery 自动引入discovery依赖的cloud,cloud alibaba,只需要对应版本号的控制,(可使用import控制)
  • 使用import控制版本号只能控制当前pom所有引入依赖的版本号,如果所有pom有相同控制,必须在所有pom添加一份。

最后决定

  • 使用父模块定义版本号,子模块使用父模块的版本号,不然每个pom依然要定义一份属于自己的版本号
  • 只会引用一次的依赖加入common作为公共引入即可,多次引入的需要规定版本号放入父pom(boot,cloud,alibaba)

生成spring boot,勾选cloud服务时(不用spring boot 生成任何东西)

  • 初始的boot版本也选定,声明一个dependencyManagement控制版本号

新建module,新建maven创建(不用boot)

  • 一个基本的可访问服务只需要,boot,web,test

 Cloud代码和安装

新建bootstrap.yaml配置 Nacos Config 元数据

说明(user.name会取系统名字,需要区分开)

说明(优先使用配置中心配置)

新建配置文件 

  • bootstrap配置文件后缀,file-extension: yaml
  • dataId默认为服务名+后缀名 gulimall-coupon.yaml

Nacos 命名空间(配置隔离)

  • 利用命名空间作环境隔离。(开发,测试,生产)
  • bootstrap配置命名空间。config.namespace

配置分组(环境隔离)

最终方案:

  • 每个微服务创建自己的命名空间(namespace),然后使用配置分组区分环境(group)(dev/test/prod)

使用方法:克隆到命名空间,克隆到分组

加载多个配置集

配置中心有的,使用配置中心,没有使用默认的

总结

  • 任何配置文件都能放在配置中心
  • bootstrap配置配置中心地址,上线后把所有配置 配置到配置中心。

Gateway 网关

解决问题

  • (服务掉线后,重新修改地址)
  • 一次调用链路多次请求不同的微服务,增加客户端的复杂性
  • 认证复杂,每个服务都要进行认证

Gateway 网关

  • 流量的统一入口,常用功能包括路由转发,认证授权,限流

.1 核心概念

  • 路由(route),路由信息包括ID、目的URI、断言工厂、Filter组成。如果断言为真,则说明请求的URL和配置的路由匹配。
  • 断言(predicates)  断言函数允许开发者去定义匹配Http request中的任何信息,比如请求头和参数等。
  • 过滤器(Filter)    Gateway FilIer和Global Filter。Filter可以对请求和响应进行处理

Gateway 网关快速入门

  • 前提:注册到Nacos(Nacos依赖,Nacos配置,@EnableDiscoveryClient )
  • 引入网关依赖:starter-gateway
  • yml配置

路由配置  cloud:   gateway: routes: 

  • id: 唯一标识。默认是一个UUID
  • uri: lb://service-openfeign 需要转发路径
  • predicates: 断言, 路径的匹配规则
  • filters: 过滤器 (经过的过滤器)

创建gateway

  • 创建,使用initilizer,Group:com.atguigu.gulimall,Artifact: gulimall-gateway,package:com.atguigu.gulimall.gateway。 搜索gateway选中。
  • 引入common,引入数据库配置需要移除 (@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}))

Query=uri,baidu

  • 参数,uri=baidu 就跳过去

Path=/goods/**

filters

  • RewritePath 重写路径 api替换为renren-fast/
  • RewritePath=/api/(?<segment>/?.*), /renren-fast/$\{segment}

谷粒商城-个人笔记(基础篇一)_代码的知行者的博客-CSDN博客_谷粒商城

Linux开发环境配置(Docker) · 语雀

https://blog.csdn.net/qq_25744257/article/details/125647955

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值