谷粒商城项目简介

目录

        • 一. 谷粒商城项目简介
        • 二. 项目背景
          • 1. 电商模式
            • (1) B2B模式
            • (2) B2C模式
            • (3) C2B模式
            • (4) C2C模式
            • (5) O2O模式
          • 2. 项目技术与特色
          • 3. 技术要求
        • 三. 分布式基本概念
          • 1. 微服务
          • 2. 集群&分布式&节点
          • 3.远程调用
          • 4.负载均衡
          • 5.服务发现与注册中心
          • 6.配置中心
          • 7.服务的熔断与降级
          • 8.API网关
        • 附录:
          • 项目微服务划分图

一. 谷粒商城项目简介

尚硅谷谷粒商城项目分成分布式基础篇章,分布式高级篇章以及高可用集群篇章,基于真实企业流水线构建的项目值得大家学习,项目使用后端技术SpringBoot+SpringCloud+Docker和前端Vue和ElementUI前后端分离开发。项目从环境的搭建,编码测试以及最后的集群部署,增强全栈的能力。项目中的集群技术就包括MySql集群,Redis集群等,项目架构图如下所示:
谷粒商城项目简介_第1张图片

除了一般的逻辑业务需求之外,进行服务远程调用使用的是Feign,网关使用Spring Cloud Gateway,链路追踪使用Sleuth+Zipkin,服务的注册与配置中心使用nacos,线上监控系统则使用PrometheusGrafana,还有整套的预警系统AlterManager,日志的ELK日志分析系统,存储使用Redis集群和Mysql的主从分片,RabbitMq消息队列以及配合ElasticSearch的全文检索功能,最后将写完的代码从GitHub上自动化拉取打包成docker镜像,再使用JenkinsPipeline的整个流水线加入参数化构建手动确认后将项目部署到K8S集群中,完成一个完整的项目

二. 项目背景

1. 电商模式

常见的模式B2B,B2C,C2B,C2C,O2O

(1) B2B模式

B2B (Business To Business), 是指商家与商家建立的商业关系。 如:1688网站,商户与商户的批发

(2) B2C模式

B2C(Business To Consumer),就是我们经常看到的供应商直接把商品卖给用户,即“商对客”模式,也就是通常说的商业零售, 直接面向消费者销售产品和服务。如:苏宁易购、京东、天猫、小米商城。

(3) C2B模式

C2B(Customer To Business),即消费者对企业。先有消费者需求产生而后有企业生产,即先有消费者提出需求,后有生产企业按需求组织生产

(4) C2C模式

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

(5) O2O模式

O2O即Online To Offline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家

谷粒商城是B2C模式

2. 项目技术与特色
  • 前后分离开发,基于vue的后台管理系统
  • SpringCloud 全新的解决方案
  • 应用监控、限流、网关、熔断降级等分布式方案全方位涉及
  • 透彻讲解分布式事务、分布式锁等分布式系统的难点
  • 分析高并发场景的编码方式,线程池,异步编排等使用
  • 压力测试与性能优化
  • 各种集群技术的区别
  • 以及使用 CI/CD 使用
3. 技术要求
  • 熟悉SpringBoot以及常见的整合方案
  • 了解过SpringCloud
  • 熟悉Git,Maven
  • 了解过Html Css JavaScript
  • 熟练使用IDEA开发项目

三. 分布式基本概念

1. 微服务

将大型的单体应用拆分成各个独立运行的小模块,模块与模块之间独立部署运行

2. 集群&分布式&节点

集群是物理状态,分布式是个工作方式;

分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统,分布式系统是建立在网络上的网络系统,分布式是指将不同的业务分布在不同的地方,集群就是指将几台机器集中在一起,实现同一业务。

例如:京东是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群。每一个小的业务,比如用户系统,访问压力大的时候一-台服务器是不够的。我们就应该将用户系统部署到多个服务器,也就是每一个业务系统也可以做集群化;

分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的

节点:集群中的一个服务器

3.远程调用

分布式系统中,各个服务可能处于不同的主机,但是服务之间需要的是互相的调用,称为远程调用

对于SpringCloud是使用的是HTTP+JSON进行远程调用

4.负载均衡

分布式系统中,A服务要调用B服务,B服务在多个机器中存在,A调用任意一个都能成功;为了使每个机器上的服务不闲置和过于忙碌,使用负载均衡的调用每个服务器,提升网站的健壮性

常见的负载均衡的算法:

  • 轮询

    为每一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,一次循环

  • 最小连接数

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

5.服务发现与注册中心

A服务调用B服务,A服务不知道B服务在哪几台服务器有,哪些服务是正常的还是下线状态的,这个时候就引入了注册中心,如果某些服务下线,就会感知到其他服务的状态。从而避免调用不可用的服务

6.配置中心

每个服务都可能有大量的配置,并且每个服务都可能部署在多台服务器上,我们经常需要更改服务的配置,我们可以让每个服务在配置中心获取自己的配置

7.服务的熔断与降级

微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,有可能会造成雪崩效应,要防止这样的情况,必须要有容错机制来保护服务

  • 服务熔断

    设置服务的超时,当被调用的服务经常失败到达某个阈值,可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据

  • 服务降级

    在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者简单处理(抛异常,返回NULL,调用Mock数据,调用Fallback处理逻辑)

8.API网关

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

附录:

项目微服务划分图

谷粒商城项目简介_第2张图片

你可能感兴趣的:(java)