• 学习笔记 谷粒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/(?/?.*), /renren-fast/$\{segment}

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

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

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

  • 相关阅读:
    【计算机网络】Socket的OOBInline选项与UrgentData
    HTML 与 CSS 有什么区别?
    1. 开发环境搭建
    金纳米粒子/钯纳米粒子/纳米银颗粒修饰聚苯乙烯微球/表面合成CdSe纳米晶制备过程
    [C++基础]-初识模板
    WebRTC实战-第一章-理论基础
    浙大数据结构慕课课后题(03-树2 List Leaves)
    Linux命令大全
    【Oracle篇】rman时间点异机恢复:从RAC环境到单机测试环境的转移(第六篇,总共八篇)
    一键生成大学、专业甚至录取概率,AI填报志愿卡这么神奇?
  • 原文地址:https://blog.csdn.net/qq_25744257/article/details/126237884