互联酒旅项目总结

互联酒旅项目总结

开发流程部分:

在这里插入图片描述

项目流程部分:

在这里插入图片描述

流程梳理:

  1. 用户在客户端发起请求,进行DNS解析,其中包括WAF,CDN,防火墙

在这里插入图片描述

2.再通过nginx集群(作用:反向代理与虚拟主机)反向代理到Webflux网关中,通过网关微服务进行指定的Predicate(断言)和Filter(过滤器)来匹配对应的controller层的请求地址,其中Sentinel+Shard进行认证授权,中间还可以整合Redis来实现令牌限流(请求限制)。

在这里插入图片描述

3.另一方面还可以同时与Nacos合作为它提供监控报警和日志,集成服务注册发现功能,Nacos在整个项目架构中起到注册中心以及配置中心的作用,整合SpringBoot Admin进行服务监控。

在这里插入图片描述

4.同时Gateway可以通过Ribbon进行负载均衡、Sentine熔断降级和业务集群建立桥梁,先是通过SpringSencurity框架于OAuth2认证中心整合JWT进行公钥私钥的颁发、授权、与响应验证功能
在这里插入图片描述

5.SpringBoot在业务集群中通过openFeign来进行业务集群间业务的调用,在业务中,使用到一些工具:Mysql—>主从复制进行数据的持久化操作,RabbitMQ---->实现消息队列,用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用,ElasticSearch----->进行全文检索,阿里云OSS云存储服务----->进行对象存储、企业数据管理等

在这里插入图片描述

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最终和Alertmenager通过短信、微信或者邮件的形式给模块负责人发送警告通知。

在这里插入图片描述

9.最后由开发人员将代码上传到github,通过docker容器进行部署,在通过k8s进行资源的编排等,使用Jenkins Pipeline进行代码构建、代码测试、部署等,最后由运维人员进行运维

在这里插入图片描述

工程架构部分:

工程结构-黑白 (2).jpg

关于本次项目学到的一些东西

1、设计数据库部分:

开始时间:22-03-25

结束时间:22-04-13

此次开发时按照阿里开发手册(黄山版),学到了很多东西

数据库必备的4大字段:id、deleted、update_time、create_time

  • id:主键,BIGINT类型,对应java中的Long
  • deleted:删除,TINYINT,所有的删除都必须是逻辑删除,除非业务需求是物理删除
  • update_time:更新时间,要求有默认值,CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  • create_time:创建时间,要求又默认值,CURRENT_TIMESTAMP

数据库中的字段,都应该需要设置默认值,主外键字段除外

一对多或者多对多表的设计,使用中间表来进行连接。

字段名需要见名知意,多个字母要用下划线_隔开

推荐使用的工具:CHINER元数建模,个人根据挺好用的,很是方便

2、接口部分:

开始时间:22-04-13

结束时间:22-04-20

接口方面要有人与前端方面人员进行沟通,确定所需的接口

注意事项

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

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

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

  • 参数名采用驼峰命名

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

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

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

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

个人负责的接口是:获取前端参数查询单个房型所有信息

在这里插入图片描述

3.开发编码部分:

此次使用mybatis-plus进行开发,不用自己去写sql语句,下面说一下这次学到的东西吧

(1)service层

  • mybatis-plus,service不要引入dao层的东西,因为已经在IService接口已经引入,只需通过this即可调用mybatis-plus提供的方法
  • 开发时尽量采用lambda表达式进行表达,使代码更加简便
  • 操作数据库时不要出现数据库字段,应使用数据库映射出的实体类字段

(2)controller层

  • 我的参数是通过定义一个实体类来进行接收,判断传的参数是必填项,应在实体类上方加@NotNull,如果没有传必填参数就提示
  • 参数查数据库查不到的时候报错不能在controller层解决,所有的报错解决应在service层完成,controller层只负责接受参数跟返回响应。
  • 接收日期类型时,应看接口前端传的是什么格式的日期,然后在实体类进行格式化,例如我前端传的是2022-05-03,在对应字段的实体类上方需加上@JsonFormat(pattern = “yyyy-MM-dd”,timezone = “GMT+8”)注解

4、其他收获

掌握了git的使用以及如何进行团队的开发,了解了一个项目从0到1的大致的开发流程,以前学的项目都是有前端的页面,如何我们通过浏览前端的页面判断他需要什么功能,而进行编写代码。而这次是没有前端页面,而是提出了一个项目,然后谈论这个项目需要什么模块,进行数据库设计,各种开会讨论,最终订出来一套暂定的数据库,接着再进行接口设计,通过接口文档来进行开发,实现了前后端分离开发。这次项目让我学到了很多东西,包括技术方面,与人沟通方面,团队协作方面,这是一次很不错的体验,希望把这个当作自己的一个新起点,不忘初心,继续奋斗,不再只会CRUD了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值