1、什么是SaaS平台,它有什么特点?
SaaS平台:供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商订购所需的应用软件服务,按照订购服务的多少和时间长短向软件供应商支付费用,并通过互联网获得SaaS平台供应商提供的服务。
-
互联网特性 :快速的实施、便捷的使用、低廉的价格
-
多重租赁特性 : 不同租户之间的数据和配置的隔离
-
服务特性 :以互联网为载体的服务形式被客户使用
-
可扩展特性 : 最大限度的提高系统的并发性,更有效的使用系统资源
2、餐掌柜业务有哪些,业务流程是什么样的?
SaaS餐饮管理软件,具有餐饮O2O应用场景(Online To Offline)所有功能,如自助点餐、线上外卖、自动收银等,既节约了顾客的用餐时间又节省了成本,还方便了店铺之间的管理,更提高了店铺线上与线下的数据实时更新。
餐掌柜管理系统分为三个模块:
点餐平台:H5点餐平台,客户实现开桌、点餐、追加菜品等功能
商家平台:点餐后台核心业务,提供员工、店铺、桌台、菜品、订单、结算等功能
运营平台:运营商管理基础数据模块【统一权限、日志、图片、数字字典、短信服务】以及商家管理的平台
3、你能说餐掌柜的核心架构、数据库结构吗?
餐掌柜通用服务:
敏捷(适应需求变化快)、解耦(大拆小,独立)、复用
通用非业务系统的中台系统:权限、支付、图片、数字自动、日志中心、邮件服务等
核心业务:
请求接入:
H5:客户点餐接入
运营商:运营管理接入
商家:商家主业务接入
阿里云:OSS、ECS、部署平台接入
网关:
Nginx:反向代理,路由承压力
Gateway:第二代网关服务,路由分发、权限鉴定
核心业务:
点餐平台:负责客户点餐业务,为Android、IOS、H5提供统一服务接口
商家平台:负责基础数据配置,同时提供店员及交易结算服务
运营平台:负责商家管理及运营报表系统
系统架构:
展现层:负载与用户的交互,分为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个库:
带来的好处:
- 解决业务层面的耦合,业务清晰
- 能对不同业务的数据进行分级管理、维护、监控、扩展等
- 高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈
4、实际开发过程中你们是怎么进行工作协调的?
一个开发团队大约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的分层构架,来维护整体的项目架构,各个模块相对独立,达到功能及组件的复用,从而减少开发成本的投入,避免反复造轮子的现象,整体的分层构建如下图所示:
主项目结构说明:
|——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 交易平台,提供商家平台支付业务的结算功能
标签:01,服务,平台,业务,概述,模块,点餐,restkeeper,day From: https://www.cnblogs.com/-turing/p/16610031.html