文章目录

  • ①. 电商系统基本模式
  • ②. 分布式基础概念
  • ③. 微服务架构图详解
  • ④. 微服务划分图

①. 电商系统基本模式

  • ①. B2C模式
  1. 就是我们经常看到的供应商直接把商品卖给用户,即"商对客"模式,也就是我们通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、天猫、小米商城
  2. 你去超市买东西
  • ②. B2B2C模式
  1. 企业对企业对个人
  2. 我是一家公司,开发天猫、京东平台,企业可以入住平台,对外提供课程供课程供用户学习
  3. 超市出租柜台给经销商卖东西
  • ③. O2O模式
  1. O2O即Online To Offline,也即将线下商务的机会与互联网结合在一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如饿了么、美团、京东到家等
  2. 你在网上下载个优惠券去KFC消费
  • ④. B2B模式
  1. 是指商家与商家建立了商业关系。如:阿里巴巴
  2. 超市找经销商进货
  • ⑤. C2B模式:消费者对企业。先由消费者需求产生后由企业生产,即先由消费者提出需求,后有生产企业按需求组织生辰

  • ⑥. C2C模式:客户之间自己把东西放上网去卖,如:淘宝、咸鱼(你在地摊买东西)

②. 分布式基础概念

  • ①. 微服务:拒绝大型单体应用,基于业务对微服务进行拆分,各个服务独立部署运行
    (微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器)

  • ②. 集群、分布式、节点

  1. 集群:几台服务集中在一起,实现同一业务
  2. 分布式:将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式)
  3. 节点:集群中的一个服务器
  4. 注意:集群(多个人在一起作同样的事情) 分布式(多个人在一起作不同的事)
  5. 分布式中的每一个节点都可以做集群,而集群不一定是分布式的

举例:
小饭店原来只有一个厨师,切菜洗菜备料炒菜全干
后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群
为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 … 厨师和配菜师的关系是分布式
一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。
一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群

  • ③. 远程调用
  1. 在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我们称为远程调用
  2. Springcloud中使用HTTP+JSON的方式完成远程调用
  • ④. 负载均衡
  1. 概念:为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提升网站的健壮性
  2. 常用算法:轮询、最小连接、散列
    轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,然后循环。
    最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。
    散列:根据请求源的IP的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。
  • ⑤. 服务注册、发现、注册中心
  1. A服务调用B服务,A服务并不知道B服务当前在哪几台服务器有,那些是正常的,那些服务已经下线。解决这个问题可以引入注册中心。配置中心用来几种管理微服务的配置信息。
  2. 如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的服务

  • ⑥. 配置中心
  1. 每一个服务最终都有大量的配置,并且每个服务都可能部署在多台机器上。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置
  2. 配置中心用来集中管理微服务的配置信息
  • ⑦. 服务熔断&服务降级
  1. 在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务
  2. 订单服务 --> 商品服务 --> 库存服务 情景(库存服务出现故障导致响应慢,导致商品服务需要等待,可能等到10s后库存服务才能响应。库存服务的不可用导致商品服务阻塞,商品服务等的期间,订单服务也处于阻塞。一个服务不可用导致整个服务链都阻塞。如果是高并发,第一个请求调用后阻塞10s得不到结果,第二个请求直接阻塞10s。更多的请求进来导致请求积压,全部阻塞,最终服务器的资源耗尽。导致雪崩)
  3. 服务熔断(解决方案1):设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据
  4. 服务降级(解决方案2):让线程不因为阻塞而等待,及时返回调用失败的结果,并给出友好提示

雪崩问题
微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:

  • ⑧. 网关Gatway:在微服务架构中,API Gateway作为整体架构的重要组件,是请求浏览的入口,常用功能包括路由转发,权限校验,限流控制等

③. 微服务架构图详解

写在最前面
这部分内容很重要,可以根据自己的情况做完项目在看这部分内容

  • ①. 前后分离开发,分为内网部署和外网部署,外网是面向公众访问的,部署前端项目,可以有手机APP,电脑网页;内网部署的是后端集群,前端在页面上操作发送请求到后端,在这途中会经过Nginx集群,Nginx把请求转交给API网关(springcloud gateway)(网关可以根据当前请求动态地路由到指定的服务,看当前请求是想调用商品服务还是购物车服务还是检索),从路由过来如果请求很多,可以负载均衡地调用商品服务器中一台(商品服务复制了多份),当商品服务器出现问题也可以在网关层面对服务进行熔断或降级(使用阿里的sentinel组件),网关还有其他的功能如认证授权、限流(只放行部分到服务器)等

  • ②. 到达服务器后进行处理(springboot为微服务),服务与服务可能会相互调用(使用feign组件),有些请求可能经过登录才能进行(基于OAuth2.0的认证中心。安全和权限使用springSecurity控制)

  • ③. 服务可能保存了一些数据或者需要使用缓存,我们使用redis集群(分片+哨兵集群)。持久化使用mysql,读写分离和分库分表

  • ④. 服务和服务之间会使用消息队列(RabbitMQ),来完成异步解耦,分布式事务的一致性。有些服务可能需要全文检索,检索商品信息,使用ElaticSearch

  • ⑤. 服务可能需要存取数据,使用阿里云的对象存储服务OSS

  • ⑥. 项目上线后为了快速定位问题,使用ELK对日志进行处理,使用LogStash收集业务里的各种日志,把日志存储到ES中,用Kibana可视化页面从ES中检索出相关信息,帮助我们快速定位问题所在

  • ⑦. 在分布式系统中,由于我们每个服务都可能部署在很多台机器,服务和服务可能相互调用,就得知道彼此都在哪里,所以需要将所有服务都注册到注册中心。服务从注册中心发现其他服务所在位置(使用阿里Nacos作为注册中心)

  • ⑧. 每个服务的配置众多,为了实现改一处配置相同配置就同步更改,就需要配置中心,也使用阿里的Nacos,服务从配置中心中动态取配置

  • ⑨. 服务追踪,追踪服务调用链哪里出现问题,使用springcloud提供的Sleuth、Zipkin、Metrics,把每个服务的信息交给开源的Prometheus进行聚合分析,再由Grafana进行可视化展示,提供Prometheus提供的AlterManager实时得到服务的告警信息,以短信/邮件的方式告知服务开发人员

  • ⑩. 还提供了持续集成和持续部署。项目发布起来后,因为微服务众多,每一个都打包部署到服务器太麻烦,有了持续集成后开发人员可以将修改后的代码提交到github,运维人员可以通过自动化工具Jenkins Pipeline将github中获取的代码打包成docker镜像,最终是由k8s集成docker服务,将服务以docker容器的方式运行

④. 微服务划分图

  • ①. 前后分离开发。前端项目分为admin-vue(工作人员使用的后台管理系统)、shop-vue(面向公众访问的web网站)、app(公众)、小程序(公众)

  • ②. 各个服务详细说明
 商品服务:商品的增删改查、商品的上下架、商品详情支付服务优惠服务用户服务:用户的个人中心、收货地址仓储服务:商品的库存秒杀服务:订单服务:订单增删改查检索服务:商品的检索ES中央认证服务:登录、注册、单点登录、社交登录购物车服务:后台管理系统:添加优惠信息等

商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图相关推荐

  1. 一个页面区分管理者和普通用户如何设计_电商系统:优惠券原型设计说明(二)...

    编辑导读:在整个产品发展的整个周期中,运营活动必不可少,而发放优惠券已成为运营活动的一种基本形式,而关于优惠券设计就尤为重要.本文作者分享了优惠券后台页面的相关设计步骤,推荐给对优惠券感兴趣的童鞋阅读 ...

  2. 机票预定系统类图_电商系统延时任务机制源码分享

    需求分析: 在javashop电商系统中,各种促销活动都有开始时间和结束时间,想要让一个活动在预定的时间开始或结束,使用定时任务轮询,存在耗性能并且不能在准确的时间点开始或结束的缺点,为了可以在指定的 ...

  3. php开源商城 yii,Yii2开源电商系统 fecshop

    Fecshop 全称为 Fancy ECommerce Shop,是基于一款优秀的开源电商系统,遵循 OSL 3.0 协议, 系统是基于PHP的Yii2框架进行的开发,目的是为了方便 Yii2 开发者 ...

  4. 电商扣减库存_电商系统秒杀架构设计

    作者:曹林华 https://blog.51cto.com/13527416/2085258 前言 最近在部门内部分享了原来在电商业务做秒杀活动的整体思路,大家对这次分享反馈还不错,所以我就简单整理了 ...

  5. python电商项目介绍_电商大数据项目-推荐系统实战(一)

    本项目是基于Spark MLLib的大数据电商推荐系统项目,使用了scala语言和java语言.基于python语言的推荐系统项目会另外写一篇博客.在阅读本博客以前,需要有以下基础: 1.linux的 ...

  6. javaweb的在线鲜花商城源码(购电商系统)

    <javaweb实现的在线鲜花商城源码>该项目采用技术:jsp +servlet +mysql+jdbc+css+js等相关技术,项目含有源码.文档.配套开发软件.软件安装教程.项目发布教 ...

  7. Athena电商系统(01)——Athena电商系统需求分析

    摘要 一.Athena电商系统需求概述 1.1 电商系统业务需求分析 总体业务流程设计 顾客在进行网上购物时将从浏览商品.挑选商品开始,然后经过结算.支付,生成一个交易订单.商家通过后台的订单管理,可 ...

  8. 这10个功能模块,手把手教你从零设计电商系统

    导读:电商业务与我们的生活息息相关,大家可能对电商多少也有一些了解,事实上,即使是一个最小化的电商系统,也依然是非常复杂的. 所以,我们先花一点时间,一起以一个创业公司的CTO的视角,设计一个最小化的 ...

  9. 强烈推荐国内几款优秀的开源电商系统

    一.背景需求 我玩得好的朋友刚创业,搞电商最一块,想做个全套的电商框架系统,希望支持公众号.小程序.H5.pc后台管理等功能,创业初期资金非常紧张,请开发人员做成本太高,然后就咨询我,有没有最低代价就 ...

最新文章

  1. 大数据分布式集群搭建(2)
  2. storm集群和单点安装
  3. 1. 青蛙跳跳FrogJmp Count minimal number of jumps from position X to Y.
  4. android parcelable 详细介绍
  5. 非常好的bert中文预训练资料
  6. 第二节 -- python的基础语法
  7. 海量服务 | 论服务器极致化海量运营交付的未来
  8. php分享二十四:数组
  9. springboot学习笔记-01-springboot-helloworld的编写以及原理初步了解(自动装配)
  10. JS 字符串常用函数
  11. Rabbitmq消息过期时间设置
  12. Visual Studio [即时窗口] [命令窗口] (Immediate Window Command Window) 转
  13. 数据结构——单链表操作(一)——基础用法
  14. 程序应该怎样写比较规范
  15. AutoJs 4.1.1 实战教程
  16. STM32 RTC闹钟中断和唤醒待机模式
  17. Tera Term宏语言介绍
  18. c语言零基础自学软件下载,C语言入门学习下载-C语言入门学习app下载v1.0-52PK下载中心...
  19. 英雄联盟数据分析专题(二)
  20. Cannot assign requested address问题总结

热门文章

  1. 【TARS】TarsWeb 说明
  2. 栈的应用——数制转换
  3. 新发现,新挑战,技术出海的机遇与挑战丨PingCAP DevCon 2022 出海专场
  4. Windows搭建Jenkins教程
  5. Ubuntu 编译jdk源码
  6. 三维空间中平面的法向量计算
  7. 解决WebRTC视频通话,NAT穿透时,局域网有效而4G网无效的问题。
  8. 几种常见Mysql数据库高可用方案
  9. MySQL存储过程示例
  10. Android导入OpenCV库