目录
一、项目目标
1.针对用户
2.针对开发者
二、项目完成情况
1.初期时间计划
2.项目过程
2.1 熟悉产品
2.2 任务分配
2.3 数据库设计
2.4 接口设计
2.5 开始编码
三、项目技术栈
1.技术架构
2.项目流程说明
四、微服务工程架构
五、项目结构
一、项目目标
1.针对用户
- 提高了用户搜索酒店和预定酒店的效率
- 售后功能保障了用户的合法权益
- 基于数据分析提供给用户多需求场景的组合产品
2.针对开发者
- 熟悉工作当中的工作流程
- 巩固以前学习的知道,运用其中
-
工程化实践
-
提高技术视野
- 整改代码规范等
二、项目完成情况
1.初期时间计划
- 提高了用户搜索酒店和预定酒店的效率
- 售后功能保障了用户的合法权益
- 基于数据分析提供给用户多需求场景的组合产品
2.针对开发者
- 熟悉工作当中的工作流程
- 巩固以前学习的知道,运用其中
-
工程化实践
-
提高技术视野
- 整改代码规范等
二、项目完成情况
1.初期时间计划
工程化实践
提高技术视野
1.初期时间计划
2.项目过程
2.1 熟悉产品
时间:
开始时间:22-03-20
结束时间:22-03-25
要求:
每人整理一份文档,最后小组这整理出一个最终文档
个人收获:
刚开始很盲目,感觉功能很多很乱很杂,分析时抓不住重点,甚至不清楚那一块是大数据负责的。
2.2 任务分配
分配规则:按小组进行分配主要任务,最后再由小组细分到每位成员
小组任务:酒店房型
2.3 数据库设计
开始时间:22-03-25
结束时间:22-04-13
任务要求:
每人出一份设计方案,最后小组整合提价一份
参考文档
阿里开发手册:Java开发手册(黄山版)
个别字段根据开发需求而定
命名必须要见名知意
使用工具:
CHINER元数建模
个人方案
小组最终讨论方案:
收获:
学习数据库的设计规范
学习使用CHINER元数建模
知道了原来以前自己给字段命名就就跟闹着玩似的,
2.4 接口设计
时间:
开始时间:22-04-13
结束时间:22-04-20
任务分配:
个人任务:编辑房型、新增房型
使用工具:
以ApiPost为主
规范:
小驼峰
大致内容:
收获:
接口设计依旧是从零到一,起初对接口的认识只用 interface ,当时也是在网上找了好久什么是接口设计,最后在与组员的交流中晕了过来
2.5 开始编码
时间:
开始时间:22-04-20
结束时间:22-04-25
数据的处理使用mybatis-puls,文件的存储使用minio
代码规范:
期间改了好多好多次,最终也算是半只juo踏入了正规军
实体类:
例如
使用了lombok、swagger、mybatisplus,其中数据的逻辑删除使用mybatisplus的@TableLogic
DAO层
例如
其中要求DAO全大写(以前不知道),
service接口层
例如
首先是接口的命名,以I开头,继承IService
service实现类
继承serviceimpl,泛型为dao和实体类,实现service接口
注意事项:
- 所有的业务逻辑,异常处理都在service。
- 重写所需要的mybatispuls的方法,然后在service实现类实现,使用this调用。
- mybatisplus统一使用lambda表达式。
- 非空判断不准使用 if(!=null)
- 集合使用:if(CollUtil.isNotEmpty())
- 实体类使用: if(ObjectUtil.isNotEmpty()){
- 尽可能减少甚至不要出现多层嵌套的代码
- 必须要有方法注解说明
controller层
注意事项:
- 不准有业务逻辑,全放到service层
- 不准出现多层嵌套
- 不准出现if else 代码,service层返回true,解决else
- 不准出现try catch,service层处理异常
- url不准出现驼峰
- 必须要有方法注解说明
收获:
minio是使用,mybatispuls的使用,代码规范,业务逻辑
三、项目技术栈
1.技术架构
2.项目流程说明
- 请求DNS解析中(包括了WAF、CDN、防火墙)进入nginx集群(作用:反向代理与虚拟主机)
- 由nginx集群进入到Webflus网关 ,作用:↓
- 通过SpringClousGetway网关中的Predicate(断言)、Filter(过滤)
- Sentinel+Shard(认证+令牌限流)、中间还可以整合Redis来实现令牌限流(请求限制)
- 结合nacos进行动态配置、服务注册发现、监控报警、日志。
- Webflus网关由Ribbon(负载均衡)和Sentinel(熔断降级)链接业务集群,业务集群作用:↓
- 先通过SpringSecurity框架也OAth2认证中心整合JWT进行公钥私钥的颁发授权与相应验签认证功能。
- SpringBoot在业务集群中通过openFeign来进行业务集群间业务的调用
- 整合Redis:分布式缓存
- 整合MySQL:持久化操作
- 整合RabbitMQ:异步调用
- 整合ES:全文索引
- 整合OSS:阿里云OSS云存储服务
- 整合JOB:xx-job进行分布式任务调度
- 整合kibana、logstash ... ... 等
- 业务集群使用分布式有
- 分布式主键
- 分布式锁
- 分布式事务
- 分布式事务采用CAP和Base定理
- 日志收集使用下
- 通过Beats:数据采集器
- 进入Logstash:实时数据传输与过滤
- 进入Kafka:分布式发布订阅消息
- 进入ElasticSearch:全文搜索引擎
- 进入Kibana:可视化管理ElasticSearch
- 以Skywalking为核心的运维监控中心可用提供链路追踪和监控报警机制,与运维报警系统Prometheus结合Grafana最终和Alertmanager通过短信、微信或者邮件的形式给模块负责人发送警告通知。
- 最后Developer将代码文件上传到GitHub上通过docker容器部署,使用K8s AP对资源进行编排,管理应用的全生命周期,同时也提高发布与更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测试、交付等持续集成,运维人员继续对这些进行维护。
四、微服务工程架构
2.项目流程说明
- 请求DNS解析中(包括了WAF、CDN、防火墙)进入nginx集群(作用:反向代理与虚拟主机)
- 由nginx集群进入到Webflus网关 ,作用:↓
- 通过SpringClousGetway网关中的Predicate(断言)、Filter(过滤)
- Sentinel+Shard(认证+令牌限流)、中间还可以整合Redis来实现令牌限流(请求限制)
- 结合nacos进行动态配置、服务注册发现、监控报警、日志。
- Webflus网关由Ribbon(负载均衡)和Sentinel(熔断降级)链接业务集群,业务集群作用:↓
- 先通过SpringSecurity框架也OAth2认证中心整合JWT进行公钥私钥的颁发授权与相应验签认证功能。
- SpringBoot在业务集群中通过openFeign来进行业务集群间业务的调用
- 整合Redis:分布式缓存
- 整合MySQL:持久化操作
- 整合RabbitMQ:异步调用
- 整合ES:全文索引
- 整合OSS:阿里云OSS云存储服务
- 整合JOB:xx-job进行分布式任务调度
- 整合kibana、logstash ... ... 等
- 业务集群使用分布式有
- 分布式主键
- 分布式锁
- 分布式事务
- 分布式事务采用CAP和Base定理
- 日志收集使用下
- 通过Beats:数据采集器
- 进入Logstash:实时数据传输与过滤
- 进入Kafka:分布式发布订阅消息
- 进入ElasticSearch:全文搜索引擎
- 进入Kibana:可视化管理ElasticSearch
- 以Skywalking为核心的运维监控中心可用提供链路追踪和监控报警机制,与运维报警系统Prometheus结合Grafana最终和Alertmanager通过短信、微信或者邮件的形式给模块负责人发送警告通知。
- 最后Developer将代码文件上传到GitHub上通过docker容器部署,使用K8s AP对资源进行编排,管理应用的全生命周期,同时也提高发布与更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测试、交付等持续集成,运维人员继续对这些进行维护。
四、微服务工程架构
- 通过SpringClousGetway网关中的Predicate(断言)、Filter(过滤)
- Sentinel+Shard(认证+令牌限流)、中间还可以整合Redis来实现令牌限流(请求限制)
- 结合nacos进行动态配置、服务注册发现、监控报警、日志。
- 先通过SpringSecurity框架也OAth2认证中心整合JWT进行公钥私钥的颁发授权与相应验签认证功能。
- SpringBoot在业务集群中通过openFeign来进行业务集群间业务的调用
- 整合Redis:分布式缓存
- 整合MySQL:持久化操作
- 整合RabbitMQ:异步调用
- 整合ES:全文索引
- 整合OSS:阿里云OSS云存储服务
- 整合JOB:xx-job进行分布式任务调度
- 整合kibana、logstash ... ... 等
- 分布式主键
- 分布式锁
- 分布式事务
- 分布式事务采用CAP和Base定理
- 通过Beats:数据采集器
- 进入Logstash:实时数据传输与过滤
- 进入Kafka:分布式发布订阅消息
- 进入ElasticSearch:全文搜索引擎
- 进入Kibana:可视化管理ElasticSearch



