GuLi商城-简介-项目介绍、分布式基础概念、微服务架构图

news2024/9/21 17:40:51

一、项目简介

1 、项目背景

1 )、电商模式

市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O;

1 、 B2B 模式

B2B (Business to Business), 是指商家与商家建立的商业关系。 如:阿里巴巴

2 、 B2C 模式

B2C (Business to Consumer), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客”

模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、

天猫、小米商城

3 、 C2B 模式

C2B (Customer to Business),即消费者对企业。先有消费者需求产生而后有企业生产,即先

有消费者提出需求,后有生产企业按需求组织生产

4 、 C2C 模式

C2C (Customer to Consumer) ,客户之间自己把东西放上网去卖,如:淘宝,闲鱼

5 、 O2O 模式

O2O 即 Online To Offline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线

下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家

2 )、谷粒商城

谷粒商城是一个 B2C 模式的电商平台,销售自营商品给客户。

谷粒商城项目是一套电商项目,包括前台商城系统以及后台管理系统,基于 SpringCloud、

SpringCloud Alibaba、MyBatis Plus实现。前台商城系统包括:用户登录、注册、商品搜索、商品

详情、购物车、订单、秒杀活动等模块。后台管理系统包括:系统管理、商品系统、优惠营销、库

存系统、订单系统、用户系统、内容管理等七大模块。


二、 项目架构图

1、 项目微服务架构图

2、集群、分布式、节点

3、远程调用

在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我

们称为远程调用。

SpringCloud 中使用 HTTP+JSON 的方式完成远程调用

4、负载均衡

分布式系统中,A 服务需要调用 B 服务,B 服务在多台机器中都存在,A 调用任意一个

服务器均可完成功能。

为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提

升网站的健壮性。

常见的负载均衡算法:

轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直

到最后一个,然后循环。

最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下

可以考虑采取这种方式。

散列: 根据请求源的IP的散列(hash)来选择要转发的服务器。这种方式可以一定程

度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到

和之前相同的服务器,可以考虑采取这种方式。

5、服务注册/ 发现& 注册中心

6、配置中心

7、服务熔断&服务降级

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时, 

有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务。

1)、服务熔断

a. 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的

请求不再去调用这个服务。本地直接返回默认的数据

2)、服务降级

a. 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些

服务不处理,或者简单处理【抛异常、返回 NULL、调用 Mock 数据、调用 Fallback 处理逻辑】。

8 、API网关

在微服务架构中,API Gateway 作为整体架构的重要组件,它抽象了微服务中都需要的公共

功能 ,同时提供了客户端负载均衡, 服务自动熔断, 灰度发布, 统一认证, 限流流控, 日

志统计等丰富的功能,帮助我们解决很多 API 管理难题。


三、 微服务划分图

项目技术&特色:

前后分离开发,并开发基于vue的后台管理系统

SpringCloud 全新的解决方案

应用监控、限流、网关、熔断降级等分布式方案全方位涉及

透彻讲解分布式事务、分布式锁等分布式系统的难点

分析高并发场景的编码方式,线程池,异步编排等使用

压力测试与性能优化

各种集群技术的区别以及使用

CI/CD 使用


参考:https://github.com/OYCodeSite/gulimall-learning

接口文档:1、分页请求参数 - 谷粒商城

组织结构

gulimall
├── gulimall-common -- 工具类及通用代码
├── renren-generator -- 人人开源项目的代码生成器
├── gulimall-auth-server -- 认证中心(社交登录、OAuth2.0)
├── gulimall-cart -- 购物车服务
├── gulimall-coupon -- 优惠卷服务
├── gulimall-gateway -- 统一配置网关
├── gulimall-order -- 订单服务
├── gulimall-product -- 商品服务
├── gulimall-search -- 检索服务
├── gulimall-seckill -- 秒杀服务
├── gulimall-third-party -- 第三方服务(对象存储、短信)
├── gulimall-ware -- 仓储服务
└── gulimall-member -- 会员服务

技术选型:


环境搭建:

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

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

相关文章

Win7安装高版本的NodeJS方法,亲测可用

Win7安装高版本的NodeJS方法 正常情况下,Win7所能支持的Node.js最高版本为:V13.14,在开发过程中,git下来的项目由于node版本比较高的原因,好多package都不能还原或出现诸多警告 网络大神分享的安装高版本的方法: 1、…

Express 通过 CORS 或 JSONP 解决跨域问题

文章目录参考描述同源策略同源同源策略示例CSRF 攻击解决跨域问题CORSCORS 响应头部Access-Control-Allow-Origin简单请求预检请求预检请求包含的两次请求解决CORS 中间件使用 CORS 中间件处理跨域请求JSONP通过原生 JS 向服务器端发起 JSONP 请求通过 jQuery 向客户端发起 JSO…

mysql:如何在windows环境下配置并随意切换两种mysql版本

系列文章目录 文章目录系列文章目录前言一、去官网下载zip安装包二、配置创建my.ini文件2.环境变量3、使用管理员身份打开dos命令窗口4、安装mysql8的服务和初始化data5、启动6 错误解决:修改mysql8服务的注册表最后前言 之前安装过5.7的版本 后来由于需要 就安装了…

天龙八部TLBB从0到1搭建教程-上

服务器的配置选择与购买 我们需要准备的东西,是环境安装和4核8G的服务器一台。 其实购买服务器的地方很多以下这些服务商都可以,具体看服务器的配置选择,像这种4核8G的 服务器价格在260-400之间一台仅供参考,当然还有带防的服务器价格就偏高了阿里云、腾讯、百度、西部数码…

年后公司新来一00后卷王,我们这帮老油条真干不过.....

都说00后躺平了,但是有一说一,该卷的还是卷。这不,我们公司来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 2023年春…

MySQL深分页 + 多字段排序场景的优化方案【三百万级数据量】

需求背景 目前产品需要针对一个大范围地区内的所有用户做排行榜功能,且这个排行榜有几个比较蛋疼的附加需求: 排行榜需要全量展示所有用户,且做分页展示(大坑💥) 排行榜有4种排序条件,且每个排…

fatal error怎么解决,有什么快捷的解决方法

fatal error怎么解决,其实是有多种的解决方法的,主要是看你想用哪种解决方法去进行解决,下面一起来看看。 一.fatal error的解决方法 1、按winR,弹出运行窗口。 2、输入regedit点击确定,弹出注册表编辑器。 3、在注…

2023年数据库优化顶级原理

毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信…

Acwing-1116. 马走日

本题求有多少路径遍历棋盘上的所有点,属于外部搜索,所以需要回溯。另外,对于递归终止条件,我们添加一个参数用来表示当前遍历到第几个点,如果是n*m表明已经将棋盘遍历一遍了,方案数1,return即可…

Linux常用命令——screen命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) screen 用于命令行终端切换 补充说明 Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是…

Linux学习笔记本(不定期持续更新)

一、概述 2023年,打算系统自学一遍Linux,分享到这里来,和大家一起相互学习,探讨。 二、Linux基础知识 Linux学习环境搭建学习每一门技术,系统环境很重要,好的系统环境能够极大提高学习效率。学习Linux也是一…

33. 实战:实现某网站店铺信息的查询与批量抓取(附源码)

目录 前言 目的 思路 代码实现 1. 请求URL,获取源代码 2. 解析源代码,获取数据 3. 完善保存数据的函数save_data 4. 理清main函数逻辑,循环传递每一页有效信息的参数 完整代码 运行效果 总结 前言 近日,我们每周四都能…

ESP-C3入门5. 使用通用计时器

ESP-C3入门5. 使用通用计时器一、 简介二、使用步骤三、操作函数1. 基本操作(1)定时器实例 gptimer_handle_t (2) 定时器配置结构体 gptimer_config_t(3) 定时器初始化 timer_init()(3&#xff…

探索 Vue.js 中引用的力量:访问和操作 DOM 元素”

0.简介 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它由 Evan You 于 2014 年创建,此后作为构建 Web 应用程序的工具越来越受欢迎。 Vue 的核心特性包括: 反应式数据绑定:Vue 使用反应式系统来跟踪对数据模型的更改并自动更新…

22年部署之docker学习

以下记录的是,我在学习中的一些学习笔记,这篇笔记是自己学习的学习大杂烩,主要用于记录,方便查找https://hub.docker.com/ 镜像中心Docker 常用命令: docker 运行相关运行: service docker start停止&#…

【三年面试五年模拟】算法工程师的独孤九剑秘籍(前十二式汇总篇)V1版

写在前面 【三年面试五年模拟】栏目专注于分享AI行业中实习/校招/社招维度的必备面积知识点与面试方法,并向着更实战,更真实,更从容的方向不断优化迭代。也欢迎大家提出宝贵的意见或优化ideas,一起交流学习💪 大家好&a…

ABB机器人系统输入输出信号System Input和Output详解(一)

ABB机器人系统输入输出信号System Input和Output详解 System Input类型: 输入I/O信号可指定具体的系统输入项,比如Start或Motors on。该输入项会在不使用FlexPendant示教器或其它硬件装置的情况下触发一项交由系统处理的系统行动。 可以用一个PLC来触发相应的系统输入项。 注…

Node.js教程笔记(三)express

学习目标 能够使用express.static()快速托管静态资源 能够使用express路由精简项目结构 能够使用常见的express中间件 能够使用express创建API接口 能够在express中启用cors跨域资源共享 目录 初识Express Express路由 Express中间件 使用Express写接口 1、初识Expres…

【通信原理(含matlab程序)】实验三 数字基带信号及其频谱特性

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

Android OpenCV(二)主体识别 位置检测

前言 工作中遇到需要通过OpenCV找到图片主体体积占图片百分比的比例,这里做一个问题解决思路的记录。该方面新手小白,有不对的地方可以评论指出哈 。 重要API Sobel算法 Sobel 计算参考文章 索贝尔算子是计算机视觉领域的一种重要处理方法。 主要用于…