分布式基础篇已经学习完成,包含了以下4个部分的知识:
- 1,分布式基础概念
- 2,基础开发
- 3,环境搭建
- 4,开发规范
学习并掌握这部分内容,已经具备了进入公司进行真实开发的能力,实际上在工作中,大部分时间,我们用的都是这些非常基础的知识。
当然,观看视频是不够的,还必须亲自动手写代码,且是先理解需求,然后写代码,不是照着视频一行一行抄。只有这样,才能体会一个需求是怎么通过代码实现的,通过解决编码和测试过程中遇到的问题,掌握各个技术栈的原理和他们之间的关系,才能在开发过程中运用自如。
在学习过程中,以下几点行动是值得参考的:
- 1,在理解商城需求的基础上编写代码,不要抄代码
- 2,每一集做一个简单的总结,记录做了什么,思考为什么要这么做
- 3,记录每一个遇到的问题,为什么出现这个问题,如何解决的
- 4,总结商城业务,SPU、SKU、三级分类、品牌、分组、规格参数、销售属性的概念及相互之间的更新,商品发布的流程,采购流程及其与库存的关系
一、分布式基础概念
在本篇文章中,我们将对分布式系统中的核心概念和技术进行总结。
1. 微服务
微服务是一种将单个应用程序开发为一组小型服务的方法,每个服务运行在其独立的进程中并使用轻量级机制(通常是HTTP资源API)进行通信。这种架构允许快速、可靠地独立构建、部署和扩展服务。
2. 注册中心
随着服务数量的增长,服务间如何发现彼此成为了一个问题。注册中心(如Eureka、Consul等)用于管理服务实例的生命周期,帮助服务发现彼此的位置。
3. 配置中心
配置中心(如Spring Cloud Config)允许我们在不修改代码的情况下,动态地管理和更新配置。这对于生产环境中频繁变更的配置特别有用。
4. 远程调用
Spring Cloud提供了多种远程调用框架,如Feign,它简化了HTTP请求的发送过程。通过@EnableFeignClients注解启用Feign客户端,即可轻松实现服务间的调用。
5. 网关
网关(如Zuul或Spring Cloud Gateway)作为所有外部请求的入口点,可以集中处理跨域、认证、鉴权等通用功能。
二、基础开发
在基础开发阶段,我们主要使用了Spring Boot 2.0、Spring Cloud、Mybatis-Plus以及Vue.js进行组件化的视图开发。
1. Spring Boot 2.0
Spring Boot 2.0基于Spring Framework 5,引入了Reactor框架,带来了响应式编程模型WebFlux。这使得开发者能够更加高效地构建高性能和高并发的应用程序。
2. Mybatis-Plus
Mybatis-Plus是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。
3. Vue.js组件化
在项目实践中,我们通过Vue.js进行了视图组件化开发,实现了商品分类维护、品牌管理等功能,为开发者提供了全面的前端解决方案。
三、环境搭建
为了更好地进行分布式系统的开发和测试,我们需要搭建一套完整的开发环境。
1. Vagrant
Vagrant是一款开源的虚拟机管理软件,可以帮助我们快速创建和销毁虚拟机环境。
2. Linux
Linux是一套免费用户使用的类Unix操作系统,具有良好的稳定性和安全性。
3. Docker
Docker是目前最流行的容器技术之一,它可以让我们以更轻量级的方式打包和分发应用。
4. MySQL & Redis
MySQL和Redis分别是关系型数据库和键值存储数据库,它们为我们提供数据持久化和缓存能力。
四、开发规范
在实际开发过程中,我们需要遵循一定的开发规范,以保证代码质量和团队协作效率。
1. 数据校验JSR303
JSR303是Java EE平台的一部分,定义了一组标准的验证注解,可用于验证对象属性是否符合特定规则。
2. 全局异常处理
全局异常处理是指在统一的地方捕获和处理可能出现的所有异常,避免因未被捕获的异常导致程序崩溃。
3. 全局统一返回
全局统一返回指在服务端统一处理所有接口的返回结果,包括状态码、错误信息等内容,方便客户端解析。
4. 全局跨域处理
由于前后端分离的开发模式,需要解决跨域访问的问题。我们可以使用Spring Boot提供的CORS机制来实现全局跨域处理。
5. 枚举状态、业务状态码
在开发中,我们通常会使用枚举来表示一些固定的状态,同时设置相应的业务状态码,以便于日志记录和异常处理。
6. VO与TO与PO划分
VO(Value Object)、TO(Transfer Object)和PO(Persistent Object)分别代表不同的数据传输对象,根据需求合理选择和设计这些对象,有助于提升代码可读性和可维护性。
7. 逻辑删除
逻辑删除是指当需要删除某条记录时,不是物理上真正删除,而是设置一个标志位标记该记录已删除。这样做的好处是可以防止误删数据,便于后期恢复。
8. Lombok
Lombok是一个可以通过注解自动添加getter/setter、equals()、hashCode()、toString()等方法的库,减少了大量冗余代码。
分布式基础篇的内容涵盖了微服务、注册中心、配置中心、远程调用、网关等多个方面,同时也介绍了Spring Boot 2.0、Spring Cloud、Mybatis-Plus、Vue组件化等技术在实际项目中的应用。此外,还提到了Vagrant、Linux、Docker、MySQL、Redis等环境搭建方案,以及数据校验、全局异常处理、全局统一返回、全局跨域处理等开发规范。最后,我们还讨论了枚举状态、业务状态码、VO与TO与PO划分、逻辑删除以及Lombok等编码技巧。