商城-学习整理-基础-项目简介和分布式概念(一)

news2024/10/6 14:23:41

目录

  • 前言:
  • 一、项目简介
    • 1、项目背景
    • 2、项目架构图
  • 二、分布式基础概念
    • 1、微服务
    • 2、集群&分布式&节点
    • 3、远程调用
    • 4、负载均衡
    • 5、服务注册/发现&注册中心
    • 6、配置中心
    • 7、服务熔断&服务降级
    • 8、APP网关

前言:

该项目基于逆向工程进行开发,采用微服务架构,前后端分离的方式,使用java各种技术进行实现功能。

一、项目简介

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的电商平台,销售自营商品给客户。

2、项目架构图

1)项目微服务架构图
在这里插入图片描述
2)微服务划分图
在这里插入图片描述

3、项目技术
1)逆向工程
2)前后端分离开发,基于vue的后台管理系统
3)SpringCloud的全新的解决方案
4)应用监控、限流、网关、熔断降级等分布式方法
5)分布式事务,分布式锁
6)高并发场景的编码方式,线程池,异步编排
7)压力测试、性能测试
8)CI/CD使用
4、项目前置要求
1)熟悉SpringBoot以及常见整合方案
2)熟悉SpringCloud
3)熟悉git,maven
4)熟悉linux,redis,docker
5)熟悉html,css,js,vue
6)熟悉使用idea开发项目

二、分布式基础概念

1、微服务

微服务架构风格,就像是把一个单独的应用程序开发为一套小服务,每个小服务运行在自
己的进程中,并使用轻量级机制通信,通常是 HTTP API。这些服务围绕业务能力来构建,
并通过完全自动化部署机制来独立部署。这些服务使用不同的编程语言书写,以及不同数据
存储技术,并保持最低限度的集中式管理。
拆分大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行。

2、集群&分布式&节点

集群是一个物理形态,分布式是个工作方式。
只要是一堆机器,就可以叫集群。
分布式系统是建立在网络之上的软件系统。
分布式是指将不同的业务分布在不同的地方
集群是指将几台服务器集中在一起,实现同一业务。
例如:淘宝是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群。每一个小的业务,比如用户系统,访问压力大的时候一台服务器是不够的。我们就
应该将用户系统部署到多个服务器,也就是每一个业务系统也可以做集群化;
分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。
节点:集群中的一个服务器。

3、远程调用

在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我
们称为远程调用。
SpringCloud 中使用 HTTP+JSON 的方式完成远程调用。(网络通信)
在这里插入图片描述

4、负载均衡

在这里插入图片描述
分布式系统中,A 服务需要调用 B 服务,B 服务在多台机器中都存在,A 调用任意一个
服务器均可完成功能。
为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提
升网站的健壮性。

常见的负债均衡算法:
轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直
到最后一个,然后循环。
最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下
可以考虑采取这种方式。
散列:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程
度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。

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

A 服务调用 B 服务,A 服务并不知道 B 服务当前在哪几台服务器有,哪些正常的,哪些服务
已经下线。解决这个问题可以引入注册中心
在这里插入图片描述
如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的
服务

6、配置中心

在这里插入图片描述
每一个服务最终都有大量的配置,并且每个服务都可能部署在多台机器上。我们经常需要变
更配置,我们可以让每个服务在配置中心获取自己的配置。
配置中心用来集中管理微服务的配置信息

7、服务熔断&服务降级

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,
有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务。
在这里插入图片描述
1)、服务熔断
a. 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开
启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认
的数据
2)、服务降级
a. 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业
务降级运行。降级:某些服务不处理,或者简单处理【抛异常、返回 NULL、
调用 Mock 数据、调用 Fallback 处理逻辑】。

8、APP网关

在微服务架构中,API Gateway 作为整体架构的重要组件,它抽象了微服务中都需要的公共
功能,同时提供了客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日
志统计等丰富的功能,帮助我们解决很多 API 管理难题。
在这里插入图片描述

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

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

相关文章

nginx+lua+redis环境搭建(文末赋上脚本)

目录 需求背景 环境搭建后nginx和redis版本 系统环境 搭建步骤 配置服务器DNS 安装ntpdate同步一下系统时间 安装网络工具、编译工具及依赖库 创建软件包下载目录、nginx和redis安装目录 下载配置安装lua解释器LuaJIT 下载nginx NDK(ngx_devel_kit&#xff09…

51单片机学习--独立按键控制LED

功能&#xff1a;按下K1时D1亮&#xff0c;松开时D1灭&#xff0c;P3_1对应K1 , P2_0对应D1 #include <REGX52.H>void main() {while(1) {if(P3_1 0) //按下K1{P2_0 0;}else{P2_0 1;}}} 按下按钮和松开按钮时会有抖动&#xff0c;所以需要用延时函数来避免抖动造成的…

C国演义 [第十章]

第十章 最佳买卖股票时机含冷冻期题目理解步骤dp数组递推公式初始化遍历方向 代码 买卖股票的最佳时机含手续费题目理解步骤dp数组递推公式初始化遍历方向 代码 最佳买卖股票时机含冷冻期 力扣链接 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格…

瀚高数据库企业版V4单机版-安装手册(Windows)

目录 瀚高数据库企业版V4单机版-安装手册&#xff08;Windows&#xff09; 1. 环境准备 2. 软件安装 3.设置环境变量 4 配置数据库文件 瀚高数据库企业版V4单机版-安装手册&#xff08;Windows&#xff09; 1. 环境准备 ①.安装数据库之前&#xff0c;请确保vcredist_x6…

鸽了百万用户四年的赛博皮卡终于要来啦

作者 | Amy 编辑 | 德新 本月15号&#xff0c;特斯拉官方宣布&#xff0c;第一辆 赛博皮卡已在特斯拉得州工厂下线。 而就在本月初&#xff0c;马斯克还发推预热了一波&#xff0c;「开着赛博皮卡在奥斯汀&#xff08;特斯拉得州工厂所在地&#xff09;溜了一圈&#xff01…

网页动态表单 ,网页动态参数

有的时候因为参数太多 无法 一一 创建 所有采用动态创建 自己遇到的一个实际情况今天写个例子 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>form demo</title><link rel"stylesheet" href&quo…

Windows查看电脑出厂时间

方法一&#xff1a;CMD命令查询 CMD输入命令 >systeminfoBIOS版本时间大概就是出厂时间

基于Mybatis-Plus的代码自动生成器

代码自动生成器 由于在普通业务开发中大多数增删改查操作都是重复的大量的&#xff0c;修改的内容也是相当的少&#xff0c;就如一个模版一样。所以在此构造一个基于Mybatis-Plus的代码生成器&#xff0c;旨在于快速生成项目结构和基础代码。 1、搭建环境 新建一个Springboo…

C语言实现通讯录——动态内存

好与不好&#xff0c;干嘛从别人口中找答案 大家好&#xff0c;我是纪宁。 考试周过去了&#xff0c;刚放暑假也陆陆续续有一些事&#xff0c;这两天才开始静下心来好好学习。希望你我都能过一个充实且快乐的暑假&#xff01; 今天的文章是用C语言实现一个动态版的通讯录 文章…

ARM基础(5):内存屏障的必要性、内存类型和内存排序

在我们写代码的过程中&#xff0c;经常会发现在SDK中会出现__ISB()或__DSB()等语句&#xff0c;这也做的目的是建立一个内存屏障&#xff0c;内存屏障可以由处理器内的硬件操作或内存屏障指令触发&#xff0c;它能够让CPU或编译器对屏障指令之前和之后的内存操作施加排序约束。…

cmake默认编译模式Debug or Release

CMAKE的编译选项 在阅读一些工程源码中&#xff0c;CMakeLists文件通常看到一下内容&#xff1a; set(CMAKE_CXX_FLAGS_DEBUG "-fPIC -O0 -g -Wall") set(CMAKE_CXX_FLAGS_RELEASE "-fPIC -O2 -g -Wall")那我们的编译时&#xff0c;用的到底是哪一个呢&a…

TypeScript 学习笔记(五):泛型

一、泛型是什么&#xff1f;有什么作用 软件工程中&#xff0c;我们不仅要创建一致的定义良好的API&#xff0c;同时也要考虑可重用性。 组件不仅能够支持当前的数据类型&#xff0c;同时也能支持未来的数据类型&#xff0c;这在创建大型系统时为你提供了十分灵活的功能。 在像…

【MySQL异常解决】Operation not allowed when innodb_forced_recovery > 0 的解决办法

Operation not allowed when innodb_forced_recovery > 0 的解决办法 一、背景描述二、解决方案三、拓展 一、背景描述 Spring Boot 项目&#xff0c;能正常启动&#xff0c;就是访问数据库时后台报错&#xff0c;Cause: java.sql.SQLException: Operation not allowed whe…

禁用 OPTIONS 请求

背景&#xff1a; 渗透测试结果为 不安全的HTTP方法 OPTIONS 描述 验证 curl -v -X OPTIONS http://localhost/xcall/token/refresh?_t1689589608解决方案&#xff08;2选1&#xff09;&#xff1a; 1.spring项目加上&#xff1a; import org.apache.tomcat.util.descript…

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)

这种搭建方法需要你先装好docker&#xff0c;关于docker命令的安装这里就不过多介绍了&#xff0c;下面讲的是基于你已经安装好了docker&#xff0c;我们再使用xinetd在CTFd上部署pwn题目。 首先讲一下我自己搭建pwn题的一些经历&#xff0c;我最开始参考的是用socat命令来搭&a…

【DC-DC】APS54083 降压恒流驱动器大功率深度调光 舞台 RGB 汽车照明 台灯驱动芯片

产品描述 APS54083 是一款 PWM 工作模式,高效率、外围简单、外置功率 MOS 管&#xff0c;适用于 5-220V 输入高精度降压 LED 恒流驱动芯片。输出最大功率150W最大电流 6A。APS54083 可实现线性调光和 PWM 调光&#xff0c;线性调光脚有效电压范围 0.5-2.5V.PWM 调光频率范围 1…

MySQL第四章、表的增删查改(进阶)

目录 一、数据库约束 1.1约束类型 1.2NULL约束 1.3 UNIQUE&#xff1a;唯一约束 1.4 DEFAULT&#xff1a;默认值约束 1.5 PRIMARY KEY&#xff1a;主键约束 1.6 FOREIGN KEY&#xff1a;外键约束 1.7 CHECK约束&#xff08;了解&#xff09; 二、表的设计 2.1 一对一…

轻量级锁实现2——上锁、释放

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;14,13,12,11 文档用途 从底层理解轻量级锁的实现&#xff0c;从保护共享内存的角度理解轻量级锁的使用场景&#xff0c;包括上锁、等待、释放&…

SpringCloud(二)Eureka简介与依赖导入

一、Eureka Eureka能够自动注册并发现微服务&#xff0c;然后对服务的状态、信息进行集中管理&#xff0c;这样当我们需要获取其他服务的信息时&#xff0c;我们只需要向Eureka进行查询就可以了。 像这样的话&#xff0c;服务之间的强关联性就会被进一步削弱。 二、服务注册与…

图像处理之梯度及边缘检测算子

文章目录 一、sobel 算子二、Scharr算子三、Roberts算子四、拉普拉斯算子 梯度是一个量变化的速度&#xff0c;在数学中通常使用求导、求偏导获取梯度或者某一方向上的梯度。 在数字图像中梯度可以看为像素值分别在x,y方向上的变化速度&#xff0c;因为数字图像的离散型&#x…