学习笔记 谷粒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}

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

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

https://blog.youkuaiyun.com/qq_25744257/article/details/125647955

<think>嗯,用户想要找关于谷粒商城项目的最详细笔记资料。首先,我需要回顾一下用户提供的引用内容。引用[1]提到了谷粒商城项目的学习笔记一到五,特别是第四章关于品牌管理。这可能是一个重要的部分。用户还提到了引用[2]中的检索页功能和商品详情,以及引用[3]中的Nacos配置信息。 用户的需求是找到最详细的笔记,所以我需要从这些引用中提取相关信息。首先,检查引用[1],里面提到了多个学习笔记,可能涵盖了项目的不同模块。需要指出这些笔记的章节内容,比如品牌管理、数据库设计、分布式基础等,这些可能对用户有帮助。 然后,引用[2]讨论了检索页的功能,包括商品、品牌、分类、属性的处理,以及排序、分页和导航功能。这部分内容可能属于商品服务模块,用户可能对实现细节感兴趣,比如如何整合Elasticsearch进行搜索。 引用[3]提到了Nacos的配置,这在微服务架构中很重要,尤其是在配置管理和服务发现方面。这部分信息可能位于分布式服务或配置管理的相关章节中。 接下来,用户可能需要知道如何系统地学习这个项目。因此,建议他们按照笔记的顺序从一到五逐步学习,并重点关注核心模块如商品服务、检索服务和分布式架构。此外,实践环节和配置管理也是关键部分,需要结合代码和配置进行实际操作。 另外,用户可能没有明确说出来的需求是希望了解项目的结构、技术栈以及实际应用场景。所以,在回答中应该提到项目使用的技术,如Spring Cloud、Nacos、Elasticsearch等,以及电商系统的典型模块,帮助他们理解项目的整体架构。 最后,生成相关问题时要考虑用户可能进一步询问的内容,比如项目架构设计、商品服务实现、检索服务优化、分布式事务处理以及配置管理等,这些都是深入学习的常见问题。</think>关于谷粒商城项目的详细笔记资料,根据引用内容可梳理出以下关键信息: ### 一、核心学习模块 1. **商品服务** - 品牌管理章节包含品牌增删改查、数据库设计、前后端联调实现[^1] - 属性分组与SPU/SKU管理模块,涉及商品规格参数体系设计 - 商品发布流程包括数据校验、事务控制、OSS存储集成 2. **检索服务** - 实现多条件筛选(品牌/分类/属性)、排序规则、库存状态过滤[^2] - 使用Elasticsearch构建商品检索模型,支持关键词匹配和聚合分析 - 面包屑导航与条件筛选联动逻辑开发 3. **分布式架构** - Nacos配置中心管理高优先级配置项(如服务地址、应用名称)[^3] - Spring Cloud Alibaba组件集成方案 - 多线程技术在商品详情页的应用 ### 二、详细学习路径 1. **基础篇(笔记1-3)** - 微服务环境搭建:`Spring Boot 2.3 + Spring Cloud Hoxton` - 分布式组件集成:`Nacos注册中心 → Gateway网关 → OpenFeign调用` - 数据库设计规范:`PDManer建模工具使用` 2. **进阶篇(笔记4-5)** ```java // 典型业务代码结构示例 @DistributedLock(prefix = "product:lock:") public void updateSpuStatus(SpuInfoEntity spuInfo) { // 分布式锁控制商品状态修改 } ``` - 分布式事务解决方案:`Seata AT模式` - 性能优化手段:`三级缓存设计(本地缓存+Redis+数据库)` 3. **项目实践环节** - 前端模板:`Vue + ElementUI实现管理后台` - 压力测试:`JMeter模拟秒杀场景` - 部署方案:`Docker容器化编排` ### 三、资料获取建议 1. 按笔记顺序系统学习(笔记一至五为完整知识链路) 2. 重点关注商品服务与检索服务的代码实现[^1] 3. 结合Nacos配置实践微服务治理[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值