乐友商城学习笔记(一)

news2024/11/30 6:43:40

SpringCloud

  • 什么是SpringCloud
    • 在SpringBoot基础上构建的微服务框架
    • 固定步骤
      • 1.引入组件的启动器
      • 2.覆盖默认配置
      • 3.在引导类上添加相应的注解
  • eureka
    • 注册中心,服务的注册与发现
    • 服务端
      • 1.引入服务器启动器:eureka-server
      • 2.添加了配置
        • spring.application.name 服务名
        • eureka.client.service-url.defaultZone http://localhost:10086/eureka
        • eureka.server.eviction-interval-timer-in-ms 剔除无效连接的间隔时间
        • eureka.server.enable-self-preservation 关闭自我保护
      • 3.@EnableEurekaServer 开启eureka服务端功能
    • 客户端
      • 1.引入启动器:eureka-client
      • 2.添加配置
        • spring.application.name
        • eureka.client.service-url.defaultZone
        • eureka.instance.lease-renewal-interval-in-seconds 心跳时间
        • eureka.instance.lease-expiration-duration-in-seconds 过期时间
        • eureka.client.register-with-eureka
          • 是否注册给eureka容器
          • 默认true
        • eureka.client.fetch-registry
          • 是否拉取服务列表
          • 默认true
        • eureka.client.registry-fetch-interval-seconds 拉取服务的间隔时间
      • 3.@EnableDiscoveryClient 启用eureka客户端
  • ribbon
    • 负载均衡组件
    • eureka、feign以及zuul已集成
    • 配置负载均衡策略
      • <服务名>.ribbon.NFLoadBalancerRuleClassName 负载均衡策略的全路径
    • @LoadBalanced
      • 在RestTenplate的@Bean方法上
  • hystrix
    • 容错组件
    • 降级
      • 1.引入hystrix的启动器
      • 2.添加配置,超时时间的配置
      • 3.@EnableCircuitBreaker 启动熔断组件
        • @SpringCloudApplication
          • @SpringBootApplication
          • @EnableDiscoveryClient
      • 代码
        • 全局
          • 返回值和被熔断的方法返回值一致,不能有参数列表
          • 在类上@DefaultProperties(defaultFallback=“全局熔断方法名”)
          • 在具体的被熔断方法上@HystrixCommand
        • 局部
          • 返回值和参数列表与被熔断的方法一致
          • 在被熔断的方法上@HystrixCommand
          • (fallbackMethod=“熔断方法名”)
    • 熔断
      • close
        • 关闭状态
        • 所有请求都正常访问
      • open
        • 打开状态
        • 所有请求都无法访问
        • 触发:连续失败的比例大于50%或者失败次数不少于20次
        • 维持5s的休眠时间
      • half open
        • 半开状态
        • 释放部分请求通过
          • close 正常
          • open 不正常
        • 触发:休眠时间之后
  • feign
    • 远程调用组件
      • 集成ribbon和hystrix
      • 使代码更加优雅
    • 1.引入feign的启动器
    • 2.feign.hystrix.enable=true 开启熔断
    • 3.@EnableFeignClients 开启feign的功能
    • 代码
      • 定义一个接口
        • @FeignClient(value=“服务名” fallback=实现类.class)
        • 方法上的注解使用的是SpringMVC的注解
  • zuul
    • 网关组件
      • 路由
      • 过滤器
    • 1.引入启动器
    • 2.添加配置
      • 路由的配置
      • zuul.prefix 路由前缀
      • 四种路由配置方式
        • 1
          zuul.routes.<路由名>.path=/service-provider/** 
          zuul.routes.<路由名>.url=http://localhost:8081
          
        • 2
           zuul.routes.<路由名>.path=/service-provider/**  
           zuul.routes.<路由名>.serviceId=service-provider
          
        • 3
           zuul.routes.<路由名:服务名>=/service-provider/**  
          
        • 4 不配置,默认服务的入口就是以服务名为前缀
    • 3.@EnableZuulProxy 开启zuul网关组件
    • 自定义过滤器
      • IZuulFilter
        • 默认的抽象实现类:ZuulFilter
      • filterType
        • pre
        • post
        • route
        • error
      • filterOrder 执行顺序:返回值越小优先级越高
      • shouldFilter
        • 是否执行run方法
        • 执行 true
      • run 过滤器的具体逻辑
      • 四种执行顺序
        • pre–>route–>post
        • 异常
          • 直接执行error–>post,pre或者route出现异常
          • error–>响应,post出现异常
          • error–>post,error出现异常

项目分类

  • 传统项目
    • 各种企业里面用的管理系统
    • 需求方:公司、企业内部
    • 盈利模式:项目本身卖钱
    • 技术侧重点:业务功能
  • 互联网分类
    • 门户网站、电商网站
    • 需求方:广大用户群体
    • 盈利模式:虚拟币、增值服务、广告收益
    • 技术侧重点:网站性能、业务功能

常见的电商模式

在这里插入图片描述

专业术语

在这里插入图片描述
在这里插入图片描述

项目开发流程

  • 项目经理:管人
  • 产品经理:设计需求模型
  • 测试
  • 前端:大前端。UI、前端、nodejs、reactjs、vuejs、mongoDB
  • 后端
  • 移动端:IOS Android
  • 在这里插入图片描述
  • 在这里插入图片描述

项目介绍

  • 乐友商城是一个全品类的电商购物网站(B2C)
  • 用户可以在线购买商品、加入购物车、下单
  • 可以评论已购买商品
  • 管理员可以在后台管理商品的上下架、促销活动
  • 管理员可以监控商品销售情况
  • 客服可以在后台处理退款操作
  • 希望未来3到5年可以支持千万用户的使用

系统架构

在这里插入图片描述
在这里插入图片描述

系统架构解读

整个乐友商城可以分为两部分:后台管理系统、前台门户系统。

  • 后台管理
    • 后台系统主要包含以下功能:
      • 商品管理:包括商品分类、品牌、商品规格等信息的管理
      • 销售管理:包括订单统计、订单退款处理、促销活动生成等
      • 用户管理:包括用户控制、冻结、解锁等
      • 权限管理:整个网站的权限控制,采用JWT鉴权方案,对用户以及API进行权限控制
      • 统计:各种数据的统计分析展示
    • 后台系统会采用前后端分离开发,而且整个后台管理系统会使用Vue.js框架搭建出单页应用(SPA)
  • 前台门户
    • 前台门户面向的是客户,包含与客户交互的一切功能。例如:
      • 搜索商品
      • 加入购物车
      • 下单
      • 评价商品等等
    • 前台系统我们会使用Themeleaf模板引擎技术来完成页面开发,处于SEO(搜索引擎)优化的考虑,我们将不采用单页应用。

项目搭建

技术选型

  • 前端技术
    • 基础的HTML、CSS、JavaScript(基于ES6标准)
    • JQuery
    • Vue.js 2.0 以及基于Vue的框架:Vuetify(UI框架)
    • 前端构建工具:WebPack
    • 前端安装包工具: NPM
    • Vue脚手架:Vue-cli
    • Vue路由:Vue-router
    • ajax框架:axios
    • 基于Vue的富文本框架:quill-editor
  • 后端技术
    • 基础的SpringMVC、Spring 5.x和Mybatis3
    • Spring Boot 2.0.6版本
    • Spring Cloud最新版 Finchley.SR2
    • Redis-4.0
    • RabbitMQ-3.4
    • Elasticsearch-6.3
    • nginx-1.14.2
    • FastDFS-5.0.8
    • MyCat
    • Thymeleaf
    • mysql-5.6

开发环境

  • IDE:idea2017以上版本
  • JDK:JDK1.8
  • 项目构建:maven3.3.9以上版本
  • 版本控制工具:git

域名

我们在开发过程中,为了保证以后的生产,测试环境统一。尽量都采用域名来访问项目。
一级域名:www.leyou.com leyou.com leyou.cn
二级域名:manage.leyou.com/item api.leyou.com
我们可以通过switchhost来修改自己的host对应的地址,只要把这些域名指向127.0.0.1,那么跟你用localhost的效果是完全一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Git】使用Git上传项目到远程仓库Gitee码云步骤详解

电脑里存放了很多项目&#xff0c;有的备份&#xff0c;有的没备份&#xff0c;如果不仔细分类管理的话&#xff0c;时间一长&#xff0c;到时看到那就会觉得非常杂乱&#xff0c;很难整理&#xff0c;这里有一个叫源代码托管&#xff0c;用过它的都知道&#xff0c;方便管理和…

如何下载阅读Spring源码-全过程详解

这篇文章记录了下载spring源码和在IDEA中打开运行的全过程&#xff0c;并且记录了过程中遇到的问题和解决方案&#xff0c;适合需要学习spring源码的同学阅读。 1.spring源码下载地址 通过Git下载spring-framework项目源码&#xff1a; git clone https://github.com/spring…

Document-Level event Extraction via human-like reading process 论文解读

Document-Level event Extraction via human-like reading process 论文&#xff1a;2202.03092v1.pdf (arxiv.org) 代码&#xff1a;无 期刊/会议&#xff1a;ICASSP 2022 摘要 文档级事件抽取(DEE)特别困难&#xff0c;因为它提出了两个挑战:论元分散和多事件。第一个挑战…

TPM 2.0实例探索2 —— LUKS磁盘加密(1)

本文大部分内容取自&#xff1a; LUKS磁盘格式_小写的毛毛的博客-CSDN博客_luks 如何破解LUKS加密 一、LUKS介绍 1. 什么是LUKS LUKS是“Linux Unified Key Setup”的简写&#xff0c;是 Linux 硬盘加密的标准。LUKS通过提供标准的磁盘格式&#xff0c;不仅可以促进发行版之…

短链或H5唤醒(跳转)APP应用

唤醒APP(两种方法) 一.短链唤醒(跳转)app ⭐ 短链跳转到APP&#xff0c;当如果用户手机不存在APP(某个应用)将会进入到官网页面。 app links实现 在android studio菜单栏Tools->App Links Ass点击,效果图如下 2.配置如下 点击ok,生成如下效果图 3.完成第二步后,会自动…

深度解读 | 数据资产管理面临诸多挑战,做好这5个措施是关键

日前&#xff0c;大数据技术标准推进委员会&#xff08;中国通信标准化协会下&#xff08;CCSA&#xff09;的专业技术委员会&#xff0c;简称TC601&#xff09;发布《数据资产管理实践白皮书》&#xff08;6.0 版&#xff09;&#xff08;以下简称&#xff1a;报告&#xff09…

网友说socket通信讲的不彻底,原来这才是Socket

关于对 Socket 的认识&#xff0c;大致分为下面几个主题&#xff0c;Socket 是什么&#xff0c;Socket 是如何创建的&#xff0c;Socket 是如何连接并收发数据的&#xff0c;Socket 套接字的删除等。 Socket 是什么以及创建过程 一个数据包经由应用程序产生&#xff0c;进入到…

linux下安装mongoDB

一、下载mongoDB包 下载地址&#xff1a; https://www.mongodb.com/try/download/community 个人建议&#xff1a;如果是学习阶段&#xff0c;使用5以下版本更好些。 二、安装及配置 1、安装 # 1、解压 $ tar -zxvf mongodb-linux-x86_64-rhel70-4.4.19-rc1.tgz# 2、迁移目…

【二叉树】

1&#xff0c;利用类来构建结点&#xff0c;利用函数递归来构建树2&#xff0c;因为左子树的结点编号是父节点的2倍&#xff0c;右子树的结点编号是父节点的2倍1&#xff0c;所以可以用数组模拟建树的过程构建二叉树第一种构建方式class treenode():#二叉树节点def __init__(se…

【西安】Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用

目录 第一章 理论基础 第二章 开发环境搭建 第三章 遥感大数据处理 基础 第四章 典型案例操作实践 第五章 输入输出及数据 资产高效管理 第六章 云端数据论文出版级可视化 ​随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&…

使用代码生成器生成代码

一、新建数据源配置 因考虑到多数据源问题&#xff0c;代码生成器作为一个通用的模块&#xff0c;后续可能会为其他工程生成代码&#xff0c;所以&#xff0c;这里不直接读取系统工程配置的数据源&#xff0c;而是让用户自己维护。 新建数据源 参数说明 数据源名称&#xff1…

CIMCAI intellgent ship product applied by world top3 shipcompany

CIMCAI智慧船公司集装箱管理产品ceaspectusS™全球规模应用全球前三大船公司认可验箱标准应用落地全球港航人工智能AI独角兽 CIMCAI中集飞瞳CIMCAI Intellgent shipping product ceaspectusS ™which applied by the worlds top three shipping companiesGlobal port and shipp…

关于ch340驱动安装

这是一个悲伤的故事&#xff0c;搞了一上午&#xff0c;最后的解决办法是我找到了开发板的原装数据线&#xff0c;一换上去&#xff0c;板卡上电后&#xff0c;点击安装&#xff0c;就安装驱动成功了。。。。。把我走过的弯路记录在下面&#xff0c;链接里的办法是能解决阶段问…

【Go】使用Go语言打造定时提醒小工具,从基础到优化全方位探索

文章目录一、引言1.目的和背景2.选择GO语言的原因二、GO语言中的时间和定时器1.时间相关的包和函数2.定时器相关的包和函数三、使用GO语言实现功能四、代码改进1.time.AfterFunc()2.sync.WaitGroup3.接收参数五、总结一、引言 1.目的和背景 本文为征文活动“CSDN 征文活动&am…

(二十二)、实现评论功能(2)【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;渲染评论列表 1.1&#xff0c;在detail页面中定义评论列表数组和getcomment方法&#xff1a; commentList: [],getcomment方法&#xff1a; //获取评论列表async getComment() {let commentTemp db.collection("quanzi_comment").where(article_id …

浏览器跨域问题

跨域问题什么是跨域问题如何解决跨域问题JSONPCORS方式解决跨域使用 Nginx 反向代理使用 WebSocket跨源请求是否能携带Cookie什么是跨域问题 跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为…

【离线数仓-3-数仓建模方法理论汇总】

离线数仓-3-数仓建模方法理论汇总离线数仓-3-数仓建模方法理论汇总1.数仓概述2.数据仓库核心架构&#xff08;Hive&#xff09;3.数据仓库建模概述4.数据仓库建模方法论1.ER&#xff08;Entity Relationship&#xff09;模型2.维度模型1.维度建模理论-事实表1. 事实表概述2.事实…

RabbitMQ学习(十):发布确认高级

一、概述在生产环境中由于一些不明原因&#xff0c;导致 RabbitMQ 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败导致消息丢失&#xff0c;需要手动处理和恢复。在这样比较极端的情况&#xff0c;当RabbitMQ 集群不可用的时候&#xff0c;无法投递的消息该如何处理呢…

面试题:HashMap为什么是线程不安全的?解决办法是什么?

在JDK1.7中容易造成死循环和数据丢失&#xff0c;造成的原因如下图假设某个时刻t1,t2都访问到了链表&#xff0c;t1,t2的下一个节点都是b,如图此时内存耗尽&#xff0c;线程t2线程进入等待状态&#xff0c;假设此时刚好达到临界点需要扩容&#xff0c;t1进行扩容&#xff0c;并…

【20230210】二叉树小结

二叉树的种类二叉树的主要形式&#xff1a;满二叉树和完全二叉树。满二叉树深度为k&#xff0c;有2^k-1个节点的二叉树完全二叉树除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干位置。二叉搜索树…