当前位置:网站首页>谷粒商城项目
谷粒商城项目
2022-06-29 11:25:00 【Wanjun1772】
1.分布式基础概念
1.1微服务
微服务架构风格,就像是把一个单独的应用程序开发成一套小服务,每个小
服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API 这些
服务围绕业务能力来构建, 并通过完全自动化部署机制来独立部署,这些服
务使用不同的编程语言书写,以及不同数据存储技术,并保持最低限度的集中式管理
简而言之,拒绝大型单体应用,基于业务边界进行服务微化拆分,每个服务独
立部署运行。

1.2集群&分布式&节点
集群是个物理状态,分布式是个工作方式
只要是一堆机器,也可以叫做集群,他们是不是一起协作干活,
这谁也不知道。
《分布式系统原理与范型》定义:
分布式系统是若干独立计算机的集合,这些计算机对于用户来说像单个系统
分布式系统 (distributed system) 是建立网络之上的软件系统
分布式是指根据不同的业务分布在不同的地方
集群指的是将几台服务器集中在一起,实现同一业务
例如:京东是一个分布式系统,众多业务运行在不同的机器上,所有业务构成
一个大型的分布式业务集群,每一个小的业务,比如用户系统,访问压力大的
时候一台服务器是不够的,我们就应该将用户系统部署到多个服务器,也就是
每一个业务系统也可以做集群化
分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的
节点:集群中的一个服务器
1.3 远程调用
在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要
互相调用,我们称之为远程调用
SpringCloud中使用HTTP+JSON的方式来完成远程调用
JSON在任意平台都可以使用,http请求什么都可以兼容,包括php系统,c++等都可以接受和发送http请求

1.4 负载均衡

分布式系统中,A 服务需要调用B服务,B服务在多台机器中都存在,
A调用任意一个服务器均可完成功能
为了使每一个服务器都不要太或者太闲,我们可以负载均衡调用每一个服务器,
提升网站的健壮性
**常见的负载均衡算法:**
轮询:为第一个请求选择健康池中的每一个后端服务器,然后按顺序往后依
次选择,直到最后一个,然后循环
最小连接:优先选择链接数最少,也就是压力最小的后端服务器,在会话较
长的情况下可以考虑采取这种方式
散列:根据请求源的ip的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户
能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采用这种方式
##·1.5 服务注册/发现&注册中心
A服务调用B服务,A服务不知道B服务当前在哪几台服务器上有,哪些正常
的,哪些服务已经下线,解决这个问题可以引入注册中心

如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,
从而避免调用不可用的服务
1.6 配置中心

实现改一处配置,该服务都生效,所有的服务都从配置中心获取它自己个的配置
每一个服务最终都有大量配置,并且每个服务都可能部署在多个服务
器上,我们经常需要变更配置,我们可以让每个服务在配置中心获取
自己的配置。
配置中心用来集中管理微服务的配置信息
1.7 服务熔断&服务降级
在微服务架构中,微服务之间通过网络来进行通信,存在相互依赖,
当其中一个服务不可用时,有可能会造成雪崩效应,要防止这种情
况,必须要有容错机制来保护服务

rpc
情景:
订单服务 --> 商品服务 --> 库存服务
库存服务出现故障导致响应慢,导致商品服务需要等待,可能等到10s后库存服
务才能响应。库存服务的不可用导致商品服务阻塞,商品服务等的期间,订单服
务也处于阻塞。一个服务不可用导致整个服务链都阻塞。如果是高并发,第一个
请求调用后阻塞10s得不到结果,第二个请求直接阻塞10s。更多的请求进来导致
请求积压,全部阻塞,最终服务器的资源耗尽。导致雪崩
1、服务熔断
设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保
护机制,后来的请求不再去调用这个服务,本地直接返回默认的数据
2、服务降级
在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级
运行,降级:某些服务不处理,或者简单处理【抛异常,返回NULL,调用
Mock数据,调用 FallBack 处理逻辑】
1.8 API 网关
前端是给后台发送http请求的方式完成各种各样的功能,我们希望前端发来的所有请求先到达
一个地方就叫网关,这个网关可以对我们所有的请求统一认证,比如看一下哪些请求合法,哪些非法
包括还可以进行限流,服务熔断,负载均衡等各种操作,就像是大商场的一个安检入口,唯一入口,我们从这个入口进来
能放行过来的请求就是需要后台处理的请求,放行不过来的请求后台也无需处理 ,在高并发级别,在网关处限流流控,比如
以恒定的速率将请求流向后台服务集群
在微服务架构中,API Gateway 作为整体架构的重要组件,抽象服务中
需要的公共功能,同时它提供了客户端负载均衡,服务自动熔断,灰度发布,统
一认证,限流监控,日志统计等丰富功能,帮助我们解决很多API管理的难题

1.9谷粒商城-微服务架构图

外网部署:面向公众访问部署前端项目
内网部署:部署的是后台服务集群
完整的请求流程:
任意客户端发请求-->请求来到Nginx集群-->Nginx将请求转交给后台服务(不是直接转,中间的流程如下)
Nginx将请求转交给API网关(使用的是SpringCloud Gateway)-->处理服务(是采用SpringBoot写的一个个的微服务)
网关完成的功能是:网关可以根据当前请求动态路由到指定服务/负载均衡调用服务/认证授权/限制瞬时流量
##1.10 微服务划分图
2.环境搭建
2.1 virtualbox-linux虚拟机下载安装
virtualbox下载地址
安装的时候要开启CPU虚拟化
使用Vagrant安装系统镜像,可以快速帮我们创建出一个虚拟机(在virtualbox里面安装linux)
vagrantup镜像仓库
vagrantup下载地址,推荐使用迅雷下载
初始化centos7系统:
打开window cmd窗口,运行vagrant init centos/7
执行`vagrant up
使用vagrant ssh连接 虚拟机 使用的账户名是:vagrant
退出虚拟机:exit;
关机:右键虚拟机->退出->正常关机
开机:vagrant up必须确定敲这个命令所在的目录下有Vagrantfile这个文件
如果出现Rsyncing folder:/cygdrive/c/user/**/ => /vagrant表明虚拟机启动成功,以后只需要vagrant ssh连上虚拟机即可
在vagrant up出现了如下错误:
这是因为virtubox的安装路径中有中文
解决办法:
并将C/user/用户下的vagrantfile文件迁移到一个不包含中文的路径,切换到该路径并执行:vagrant up

配置虚拟机的IP:
在dos下执行ipconfig查看virtualbox的ip地址,然后将vagrantfile的35行修改为这个ip,最后一个8位可以不一样
遇到问题
解决办法:
将C:\HashiCorp\Vagrant\embedded\gems\2.2.5\gems\vagrant-2.2.5\lib\vagrant\util/io.rb进行修改
重启虚拟机命令:vagrant reload
Maven环境搭建
下载安装Maven,并对Maven进行配置
配置阿里云镜像,下载jar包会更快
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
配置jdk1.8编译项目
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
给IDEA配置Maven
Files–>Settings–>Build
安装插件MyBatisX(是MybatisPlus开发的一个为了简化从一个mapper的方法快速定位到xml文件)

VScode安装(前端开发工具)
安装好后,需要安装一些插件



边栏推荐
- 杰理之WiFi干扰蓝牙【篇】
- Meichuang was selected as one of the first member units of the "business security promotion plan" of the ICT Institute
- PyTorch学习之归一化层(BatchNorm、LayerNorm、InstanceNorm、GroupNorm)[通俗易懂]
- Jerry's about TWS pairing mode configuration [chapter]
- 助力极致体验,火山引擎边缘计算最佳实践
- 杰理之关于 TWS 配对方式配置【篇】
- RepOptimizer: 其实是RepVGG2
- & 4 express framework
- Oracle NetSuite 助力 TCM Bio,洞悉数据变化,让业务发展更灵活
- AOSP ~ 初始化语言
猜你喜欢

申请uniapp离线打包时的AppKey

Introduction to software engineering - Chapter 5 - overall design

& 3 view request message and response message in browser

QT learning 09 calculator interface code reconstruction

助力极致体验,火山引擎边缘计算最佳实践

Pytoch - distributed communication primitive (with source code)

pod安全策略(PSP)
![Jerry's about TWS channel configuration [chapter]](/img/2c/58a49dea7a7931c4d1f055548c2493.png)
Jerry's about TWS channel configuration [chapter]
联想领像 lenovoimage 部分打印机 驱动 PPD 文件

win11网页版
随机推荐
基于鲲鹏开发套件实现x86平台到Kunpeng平台的源码迁移【玩转华为云】
记一次 MSI 笔记本 GE63 播放网页视频 闪屏和随机发绿 问题解决
pod安全策略(PSP)
Discussion on QT learning 10 message processing in QT
matlab fmincon 精度,fmincon与quadprog误差
哈希Hash竞猜游戏系统开发详解技术丨哈希竞猜游戏系统开发方案解析
AOSP ~ 初始化语言
【高并发】2.8万字的Callable和Future面试知识点总结,看完我直接面进了字节跳动,原谅我有点飘了(上)
启泰观察:职业精英创业必踩巨坑之 --- 学习效果坑
Intelligent trash can (IV) -- raspberry pie Pico realizes ultrasonic ranging (hc-sr04)
[pbootcms模板]作文网站/文档下载网站源码
Ensure drinking water safety! Panyu Shawan waterway water quality online monitoring system passed the acceptance
信息技术应用创新专业人员(数据库)中级培训火热招生中(7月6-10日)
Oracle netsuite helps TCM bio understand data changes and make business development more flexible
Information technology application and innovation professionals (database) intermediate training hot enrollment (July 6-10)
基础类型变量声明
Pytoch - distributed communication primitive (with source code)
[VTK] MFC grid editor based on vtk8.2
AutoCAD - text display mode and how CAD can directly open Tianzheng drawings
杰理之关于 TWS 声道配置【篇】