互联酒旅项目总结

互联酒旅项目总结

项目时间

3.20:熟悉产品产品流程管理
3.25:环境搭建、项目熟悉(阿里规范手册)
4.2:基础服务、功能分配
4.13:第一阶段需求开发、第一阶段技术需求
4.22:第二阶段需求开发、第二阶段技术需求
4.26:代码review、代码优化
4.30:技术博客、项目整体验收
5.5:项目结束总结

项目背景

依托微信小程序和App 客户端提供线上预定酒店和旅游产品的互联网产品

  • 解决用户痛点1:提高了用户搜索酒店和预定酒店的效率
  • 解决用户痛点2:售后功能保障了用户的合法权益
  • 解决用户痛点3:基于数据分析提供给用户多需求场景的组合产品

项目的开发流程图

在这里插入图片描述

项目架构图

项目大体架构如下图所示:
在这里插入图片描述

架构解析

1>用户在客户端发起请求,进行DNS(Domain Name System域名服务器)解析,其中包括WAF(Web Application Firewall)、CDN(Content Distribution Network内容分发网络)、防火墙

2>再通过Nginx集群反向代理到Spring5.0之后添加的Webflux网关,通过SpringCloud Gateway进行动态路由指定Predicate(断言)和Filter(过滤器)寻址与Sentinel+Shard进行认证授权和令牌限流,中间还可以整合Redis;

3>另一方面还可以同时与Nacos合作为它提供监控报警和日志,集成服务注册发现功能,Nacos集群在整个架构中都能提供服务注册发现与动态配置和配置管理功能,整合SpringBoot Admin进行服务监控

4>同时Gateway可以通过Ribbon进行负载均衡、Sentinel熔断降级和业务集群建立桥梁,形成联系,先是通SpringSecurity框架与OAuth2认证中心整合JWT进行公钥私钥的颁发授权与相应验签认证功能。

5>SpringBoot应用在业务集群中通过OpenFeign进行相互调用,中间还整合Redis、Mysql、MQ、ES、OSS、JOB等工具,其中Redis集群可以用来做分布式数据缓存,Mysql主从复制进行数据的持久化,RabbitMQ进行系统解耦削峰填谷异步调用,ES全文搜索引擎整合Kibana、Logstash进行近乎实时搜索、分析和可视化的全文检索,使用阿里云OSS云存储服务进行对象存储、企业数据管理,使用xxl-job进行分布式任务调度。

6>业务集群还与分布式相挂钩,有着分布式主键,分布式锁,分布式事务,其中有两个理论,一个是CAP(分别是Consistency一致性、Availability可用性、Partitiontolerance 分区容错性)理论(这三个要素最多只能同时实现两点,不可能三者兼顾),一个是BASE(Basically Available基本可用、Soft State软状态、Eventual Consistency最终一致性)理论(即使无法做到强一致性,CAP的核心就是强一致性,但应用可以采用适合的方式达到最终一致性)

7>日志收集通过Beats、ELK、和Kafka整和完成,具体过程是这样的:Beats用于日志数据采集使用,Logstash收集日志,发送给Kafka进行解耦、异步处理和流量削峰,然后通过Elasticsearch集群存储日志数据,索引日志数据,再通过Kibana视图形式展现日志信息,更加人性化地在客户端进行检索以及相关操作。

8>以Skywalking为核心的运维监控中心可用提供链路追踪和监控报警机制,与运维报警系统Prometheus结合Grafana最终和Alertmanager通过短信、微信或者邮件的形式给模块负责人发送警告通知。

9>最后Developer将代码文件上传到GitHub上通过docker容器部署,使用K8s AP对资源进行编排,管理应用的全生命周期,同时也提高发布与更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测试、交付等持续集成,运维人员继续对这些进行维护。

具体的工程架构

在这里插入图片描述

项目架构层次模块

在这里插入图片描述

项目开发

数据库设计

依据阿里开发规范进行数据库的设计

在设计的过程中,对索引的类型,对索引类型的选择进一步加深了印象,选择合适的索引类型能够大大加快访问数据的速度

在这里插入图片描述

接口设计

由于是前后端联调开发,通过统一的api文档可以更方便前后端进行交互,提高开发效率

接口的规范大致遵循RESTFUL开发,通过APIPST进行api文档页面的展示工作

在这里插入图片描述

接口开发注意事项

1.请求的方式一般使用GET/POST

2.请求路径接口文档为准,与代码对应controller层一致

3.GET 请求的参数在 Query 里面填写,POST 在 Body 里写。不要混用

4.不要使用 RESTFul 的路径传参

5.参数名采用驼峰命名

6.数据库中存在的字段的参数,命名要保持一致,参数描述简单

7.如果参数中用多个 id 参数,必须区分命名,且要与数据库一致

8.响应数据示例的格式必须依据实际的格式

9.响应数据的类型和描述和请求参数的要求一致

需求开发

由于是前后端分离项目,前端以小程序展示,后端以boot脚手架构建起的微服务分布式项目,这里我负责的是小程序页面订单相关的,例如我的订单,历史订单,一年前的订单等等,后端负责对房型信息进行相关的业务逻辑的操作,然后与订单开发组联调,实现小程序页面的数据渲染

总结

在一个不算短不算长的开发周期里,不仅学到了很多小程序方面的知识,也加强了自己在微服务,分布式方面的能力,提高了与其他人合作的能力,更加熟悉了项目开发的流程,根据阿里规约进行开发,对未来的工作也有了更加全面的认识

注意事项

在组与组之间进行协作开发时,如果遇到问题要及时沟通,当天的代码当天pull,在进行新的开发之前要拉取最新的代码,保证组内项目的一致。

前端

小程序开发以uniapp为主,基于vue的语法实现,加强了vue的语法,同时对uniapp的生态有了进一步的了解,分页面开发->本地分支commit->远程仓库的合并,实现了一个完整的前端组的开发

后端

配置统一规范的层次结构,采取约定大于配置大于编码的规范,快速搭建了简单业务的实现,对全局配置例如相关连接池,模板生成等等,提高了开发的效率

本地分支commit->远程仓库的合并,实现了一个完整的前端组的开发

后端

配置统一规范的层次结构,采取约定大于配置大于编码的规范,快速搭建了简单业务的实现,对全局配置例如相关连接池,模板生成等等,提高了开发的效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值