关键词:
①. 电商系统基本模式
- ①. B2C模式
- 就是我们经常看到的供应商直接把商品卖给用户,即"商对客"模式,也就是我们通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、天猫、小米商城
- 你去超市买东西
- ②. B2B2C模式
- 企业对企业对个人
- 我是一家公司,开发天猫、京东平台,企业可以入住平台,对外提供课程供课程供用户学习
- 超市出租柜台给经销商卖东西
- ③. O2O模式
- O2O即Online To Offline,也即将线下商务的机会与互联网结合在一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如饿了么、美团、京东到家等
- 你在网上下载个优惠券去KFC消费
- ④. B2B模式
- 是指商家与商家建立了商业关系。如:阿里巴巴
- 超市找经销商进货
-
⑤. C2B模式:消费者对企业。先由消费者需求产生后由企业生产,即先由消费者提出需求,后有生产企业按需求组织生辰
-
⑥. C2C模式:客户之间自己把东西放上网去卖,如:淘宝、咸鱼(你在地摊买东西)
②. 分布式基础概念
-
①. 微服务:拒绝大型单体应用,基于业务对微服务进行拆分,各个服务独立部署运行
(微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器) -
②. 集群、分布式、节点
- 集群:几台服务集中在一起,实现同一业务
- 分布式:将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式)
- 节点:集群中的一个服务器
- 注意:集群(多个人在一起作同样的事情) 分布式(多个人在一起作不同的事)
- 分布式中的每一个节点都可以做集群,而集群不一定是分布式的
举例:
小饭店原来只有一个厨师,切菜洗菜备料炒菜全干
后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群
为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 … 厨师和配菜师的关系是分布式
一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。
一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群
- ③. 远程调用
- 在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我们称为远程调用
- Springcloud中使用HTTP+JSON的方式完成远程调用
- ④. 负载均衡
- 概念:为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提升网站的健壮性
- 常用算法:轮询、最小连接、散列
轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,然后循环。
最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。
散列:根据请求源的IP的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。
- ⑤. 服务注册、发现、注册中心
- A服务调用B服务,A服务并不知道B服务当前在哪几台服务器有,那些是正常的,那些服务已经下线。解决这个问题可以引入注册中心。配置中心用来几种管理微服务的配置信息。
- 如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的服务
- ⑥. 配置中心
- 每一个服务最终都有大量的配置,并且每个服务都可能部署在多台机器上。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置
- 配置中心用来集中管理微服务的配置信息
- ⑦. 服务熔断&服务降级
- 在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务
- 订单服务 --> 商品服务 --> 库存服务 情景(库存服务出现故障导致响应慢,导致商品服务需要等待,可能等到10s后库存服务才能响应。库存服务的不可用导致商品服务阻塞,商品服务等的期间,订单服务也处于阻塞。一个服务不可用导致整个服务链都阻塞。如果是高并发,第一个请求调用后阻塞10s得不到结果,第二个请求直接阻塞10s。更多的请求进来导致请求积压,全部阻塞,最终服务器的资源耗尽。导致雪崩)
- 服务熔断(解决方案[一]):设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据
- 服务降级(解决方案[二]):让线程不因为阻塞而等待,及时返回调用失败的结果,并给出友好提示
雪崩问题
微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:
- ⑧. 网关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_电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图商城项目02_环境搭建、安装VAGRANT、DOCKER、MYSQL、REDIS、从0搭建各个微服务项目等商城项目03_人人前后端项目、逆向工程、com... 查看详情
谷粒商城-分布式基础项目环境搭建(代码片段)
目录1. 项目背景2.项目架构3.分布式基础概念3.1.微服务3.2.集群&分布式&节点3.3.远程调用3.4.负载均衡3.5.服务注册/发现&注册中心3.6.配置中心3.7.服务熔断&服务降级 3.8.API网关 4.环境搭建4.1.安装Docker4.2.docker安装mysql1.... 查看详情
day396.项目简介&分布式基础概念-谷粒商城(代码片段)
一、项目简介1、项目背景1)、电商模式市面上有5种常见的电商模式B2B、B2C、C2B、C2C、O2O;B2B模式B2B(BusinesstoBusiness),是指商家与商家建立的商业关系。如:阿里巴巴B2C模式B2C(BusinesstoConsumer),就是我们经常看... 查看详情
谷粒商城学习笔记--项目简介和分布式基础概念(代码片段)
...gCloud全新的解决方案应用监控、限流、网关、熔断降级等分布式方案全方位涉及透彻讲解分布式事务、分布式锁等分布式系统的难点分析高并发场景的编码方式,线程池,异步编排等使用压力测试与性能优化各种集群技... 查看详情
微服务基础概念
...网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。1.1单体应用架构Web应用程序发展的早期,大部分web工程(包含前端页面,web层代码,ser... 查看详情
全网最全-谷粒商城项目-面试总结-简历优化
...级微商城系统项目简介:本系统采用微服务架构设计,在分布式环境下利用SpringCloud框架,通过业务划分,设计独立模块的微服务,拆分为订单服务、购物车服务、支付服务、用户管理服务、商品管理服务、文件上传服务等模块,结... 查看详情
谷粒商城-分布式基础项目环境搭建(代码片段)
目录1. 项目背景2.项目架构3.分布式基础概念3.1.微服务3.2.集群&分布式&节点3.3.远程调用3.4.负载均衡3.5.服务注册/发现&注册中心3.6.配置中心3.7.服务熔断&服务降级 3.8.API网关 4.环境搭建4.1.安装Docker4.2.docker安装mysql1.... 查看详情
传智播客大型分布式电商项目-淘淘商城
课程目录及下载地址01.第一天(项目介绍,搭建maven工程)02.第二天(框架整合,后台系统搭建)03.第三天(实现商品添加)04.第四天(商品规格实现)05.第五天(前台工程搭建、首页商品类目显示)06.第六天(CMS系统)07.第七... 查看详情
传智播客大型分布式电商项目-淘淘商城
课程目录及下载地址01.第一天(项目介绍,搭建maven工程)02.第二天(框架整合,后台系统搭建)03.第三天(实现商品添加)04.第四天(商品规格实现)05.第五天(前台工程搭建、首页商品类目显示)06.第六天(CMS系统)07.第七... 查看详情
新版淘淘商城_01_简介
...,在这里记录一下。电商行业技术特点技术新技术范围广分布式高并发、集群、负载均衡、高可用海量数据业务复杂系统安全1. 淘淘商城介绍淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在 查看详情
2018高级系统架构,ssm大型分布式架构电商项目,高并发,微服务,缓存技术
...p;1.2了解整体电商的架构特点 1.3能够运用Dubbox+SSM搭建分布式应用 1.4搭建工程框架,完成品牌列表后端代码 2.电商行业技术特点 2.1技术新 2.2技术范围广 2.3分布式 2.4高并发、集群、负载均衡、高可用&nb 查看详情
易购网上商城01
...行业介绍2.1 电商行业技术特点技术新技术范围广分布式高并发、集群、负载均衡、高可用海量数据业务复杂系统安全3 易购商城3.1 易购商城简介3.1.1 电商行业的模式:B2B:企业对企 查看详情
大型分布式电商项目---品优购
...项目采用Spring+SpirngMVC+Mybatis框架搭建的maven工程,并采用分布式架构按功能将系统分为不同的子系统,将不同的子系统部署到不同的节点服务器独立运行。在各个系统之间采用dubbox+zookeeper进行通信,实现了基于SOA面向服务的架构... 查看详情
第一天:开始‘京西商城’的电商项目(ssm)
...最后都要整合一起3、系统的扩展性差4、不能灵活的进行分布式部署。 解决方法:使用分布式架构。优点:把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受 查看详情
谷粒商城项目总结-基础篇
...1a;客户端,高并发等复杂业务3.集群篇:k8s部署P3.分布式基础介绍基础概念:1.微服务2.集群,分布式,节点3.远程调用:HTTP+JSON4.负载均衡:轮询,最小连接数,散列5.服务注册/发现&注册... 查看详情
微服务架构day01
1.微服务架构的基本概念 分布式:将一个项目模块化区分为多个子项目(自己理解:将业务逻辑层和数据库访问层独立化 通过rpc远程调用(rpc框架 springCould httpCliend hessioan dubbo),由此可见分布式开发相当... 查看详情
java微服务架构
...现企业能力提升及创新。查看详情个性定制开发微服务、分布式服务安全架构电商/教育/医疗/办公/分销/短信等系统会员、积分、兑换、核销、等闭环流程出行、购物、酒店、娱乐的旅行软件专属定制化解决方案,在线信息... 查看详情
多租户系统微服务开发平台(代码片段)
...平台、应用监控、慢sql监控、统一日志、单点登录、Redis分布式高速缓存、配置中心、分布式任务调度、接口文档、代码生成等等____________________|//_____\______________________/|_//________/_//__`/____/____/_///_/_____/____///_//_(__)_(__)/_//_//_/\__,_//... 查看详情