day-01-项目概述及环境搭建

1、什么是SaaS平台,它有什么特点?

SaaS平台:供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商订购所需的应用软件服务,按照订购服务的多少和时间长短向软件供应商支付费用,并通过互联网获得SaaS平台供应商提供的服务。

  1. 互联网特性 :快速的实施、便捷的使用、低廉的价格

  2. 多重租赁特性 : 不同租户之间的数据和配置的隔离

  3. 服务特性 :以互联网为载体的服务形式被客户使用

  4. 可扩展特性 : 最大限度的提高系统的并发性,更有效的使用系统资源

2、餐掌柜业务有哪些,业务流程是什么样的?

SaaS餐饮管理软件,具有餐饮O2O应用场景(Online To Offline)所有功能,如自助点餐、线上外卖、自动收银等,既节约了顾客的用餐时间又节省了成本,还方便了店铺之间的管理,更提高了店铺线上与线下的数据实时更新。

餐掌柜管理系统分为三个模块:

点餐平台:H5点餐平台,客户实现开桌、点餐、追加菜品等功能

商家平台:点餐后台核心业务,提供员工、店铺、桌台、菜品、订单、结算等功能

运营平台:运营商管理基础数据模块【统一权限、日志、图片、数字字典、短信服务】以及商家管理的平台

 

img

3、你能说餐掌柜的核心架构、数据库结构吗?

餐掌柜通用服务:

敏捷(适应需求变化快)、解耦(大拆小,独立)、复用

通用非业务系统的中台系统:权限、支付、图片、数字自动、日志中心、邮件服务等

img

核心业务:

img

请求接入:

H5:客户点餐接入

运营商:运营管理接入

商家:商家主业务接入

阿里云:OSS、ECS、部署平台接入

网关

Nginx:反向代理,路由承压力

Gateway:第二代网关服务,路由分发、权限鉴定

核心业务:

点餐平台:负责客户点餐业务,为Android、IOS、H5提供统一服务接口

商家平台:负责基础数据配置,同时提供店员及交易结算服务

运营平台:负责商家管理及运营报表系统

系统架构

image-20220803172033730

展现层:负载与用户的交互,分为Android、IOS、web应用,他们都是通过访问统一的gateway网关来实现业务数据的访问

代理层:选用高性能的nginx服务,通过域名与不同servrce的绑定,通过gateway路由到不同的服务器组

权限控制层:使用无状态的JWT认证,结合Spring Security实现统一的权限控制

服务治疗:使用nacos注册中心,配置中心实现服务的治理

服务调用:使用Spring Cloud alibaba 的核心组件dubbo进行服务之间的调用

流量控制:使用 Sentinel把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性

缓冲层:spring cache 配合redis轻松无侵入的实现业务数据的缓冲

基础业务支撑:基于spring boot脚手架,轻松集成OSS图片存储、sharding-jdbc分库分表、mybatis-plush 、docker、接口文档swagger2、分布式事务seate、MySQL、RocketMQ等组件

数据库结构:

按照功能模块领域垂直把数据库分为5个库:

image-20220803174457257

带来的好处:

- 解决业务层面的耦合,业务清晰

- 能对不同业务的数据进行分级管理、维护、监控、扩展等

- 高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈

4、实际开发过程中你们是怎么进行工作协调的?

img

一个开发团队大约16个人左右,20个人已经算比较大的项目。一个业务的不同领域,每个领域大约3个人,产品经理1个,项目经理1个,UI设计约2-3个。

1)单一职责:项目是微服务架构的,每个人负责每个人各自的业务模块,整个项目具体到每个小服务,拆分粒度是很小的

2)服务的调用:对外暴露统一RESTFUL风格的接口

3)技术选型上:每个服务对于技术的使用程序员自由选择

4)前后端分离的开发模式

5)数据库分离:每个服务操作自己的数据源

6)独立部署:每个人的服务开发好后可以独立部署独立运行,服务重启不影响其他服务

5、spring-cloud-alibaba的生态圈有哪些,各个组件的作用是什么?

- Sentinel:

阿里巴巴开源产品,把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性.

- Nacos:

阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台.

- RocketMQ:

Apache RocketMQ基于Java的高性能,高吞吐量的分布式消息和流计算平台.

- Dubbo:

Apache Dubbo是一款高性能的Java RPC框架.

- Seata:

阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案.

- Alibaba Cloud OSS

阿里云对象存储服务器(Object Storage Service,简称OSS),是阿里云提供的海量,安全,低成本,高可靠的云存储服务.

- Alibaba Cloud Schedulerx

阿里中间件团队开发的一款分布式调度产品,支持周期性的任务与固定时间点触发任务.

6、餐掌柜需要安装哪些组件,各个组件的作用是什么?

nginx:反向代理、路由分发、配置权重

sentinel:微服务保护、流量控制、熔断降级、负载均衡保护微服务

seata:分布式事务管理

nacos:注册中心和配置中心、服务治理

Springsecurity:统一权限控制

redis:缓存

mysql:关系型数据库存储数据

OSS:云存储

rabbitMQ:消息队列(生产者/消费者)

7、运营平台采用怎样的maven分层构建,每个模块有什么作用?

在餐掌柜项目中采用maven的分层构架,来维护整体的项目架构,各个模块相对独立,达到功能及组件的复用,从而减少开发成本的投入,避免反复造轮子的现象,整体的分层构建如下图所示:

image-20211101125650054

主项目结构说明:

|——restkeeper-super 负责整个项目的模块定义,pom.xml文件定义 | |———— restkeeper-framework 核心组件模块,主要是对各个框架集成:mybatis-plus、seata、jwt、redis等等 | |———— restkeeper-gateway 前后端分离的边界,对外的统一接口,集成对日志client、鉴权client、knife4j组件 | |———— restkeeper-model-basic 基础服务模块,与业务无关的组件都在这里集成 | |———— restkeeper-model-report 报表模块,提供统一的日志报表,对各个子系统报表提供接口支撑 | |———— restkeeper-model-security 统一鉴权模块,依赖spring-security各个gateway只需要引入简单鉴权client则实现权限控制 | |———— restkeeper-model-shop 商家中心模块:各个主业务功能的实现,并且提供H5点餐端的dubbo接口服务 | |———— restkeeper-model-trading 交易平台,提供商家平台支付业务的结算功能

posted @ 2022-08-21 15:00  忘了鱼尾纱的猫  阅读(185)  评论(0)    收藏  举报