集信达项目总结

本文详细总结了集信达项目,涵盖了项目结构、中台概念、核心技术如Spring AOP、自定义注解、反射、Redis发布订阅模式、短信接收与发送服务、策略模式和异常处理等。此外,还讨论了设计模式、Redis实现的分布式锁、DTO与Entity的使用场景,以及API和SDK项目中的挑战与解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集信达项目总结

1.项目结构介绍

1.1 pd-sms-api:这个是给需要调用这个服务的使用的 发送短信的 短信接收服务
1.2 pd-sms-entity:对应数据库的字段 实体类
1.3 pd-sms-manage:系统管理服务就是后台管理
1.4 pd-sms-server: 发送短信服务 发送请求到第三方短信平台
1.5 pd-sms-sdk:开发工具包,提高代码的重复使用,提高效率

2. 什么是中台

中台,互联网术语,一般应用于大型企业。一般是指搭建一个灵活快速应对变化的架构,快速实现前端提的需求,避免重复建设,达到提高工作效率目的。

3. 项目核心

本项目(集信达短信平台)的核心在于保证短信高效、准确的送达、简单易操作的对接方式。通过对服务的解耦、通讯方式的升级来提升系统的吞吐量。同时在多通道的加持下,通过智能动态的通道评级、选举、降级、热插拔,增强了系统的健壮性,摆脱对单一通道的依赖。并且提供多种对接方式,满足企业内部的各种需求。

4.项目架构

在这里插入图片描述

在这里插入图片描述

5. 项目中用了哪些技术?

SpringBoot,Nacos,mybaties,mysql,redis

6.功能清单

在这里插入图片描述

7. 数据模型与类

序号 表名 类名 说明
1 signature SignatureEntity 短信签名
2 template TemplateEntity 短信模板
3 config ConfigEntity 通道配置
4 config_signature ConfigSignatureEntity 通道与签名关系
5 config_template ConfigTemplateEntity 通道与模板关系
6 platform PlatformEntity 接入平台(应用管理)
7 receive_log ReceiveLogEntity 短信接收日志
8 manual_process ManualProcessEntity 人工处理任务
9 send_log SendLogEntity 短信发送日志
10 black_list BlackListEntity 黑名单
11 timing_push TimingPushEntity 定时发送

8.后台管理服务

在这里插入图片描述

8.1 基础工程

在这里插入图片描述

基础工程为pd-sms-entity工程,主要是一些实体类、DTO、工具类、Mapper接口等,作为基础模块,其他几个服务都会依赖此基础模块。

8.2 管理端工程

在这里插入图片描述

pd-sms-manage作为后台管理服务的maven工程,主要功能是对基础数据进行维护操作,例如签名管理、模板管理、通道管理、通道优先级配置、数据统计等。

8.3 基础属性自动注入

功能:通过自定义注解和切面,在进行数据维护时实现实体中基础属性的自动赋值(创建者、创建时间、修改者、修改者)。

9. 自定义注解

注解@interface 与interface class是同一个级别的,相当于一种记号,注解本身是没有功能的,只有在解析注解的时候才可以添加一些功能,注解的底层是通过反射来实现的

@Documented

类和方法的 Annotation 在缺省情况下是不出现在 javadoc 中的。如果使用 @Documented 修饰该 Annotation,则表示它可以出现在 javadoc 中。定义 Annotation 时,@Documented 可有可无;若没有定义,则 Annotation 不会出现在 javadoc 中。

@Target(ElementType.TYPE)

ElementType 是 Annotation 的类型属性。而 @Target 的作用,就是来指定 Annotation 的类型属性。@Target(ElementType.TYPE) 的意思就是指定该 Annotation 的类型是 ElementType.TYPE。这就意味着,MyAnnotation1 是来修饰"类、接口(包括注释类型)或枚举声明"的注解。

定义 Annotation 时,@Target 可有可无。若有 @Target,则该 Annotation 只能用于它所指定的地方;若没有 @Target,则该 Annotation 可以用于任何地方。

@Targer() 约束自定义注解可以在什么地方,值是从ElementType里获取的,可以添加多个

public enum ElementType {
TYPE, /* 类、接口(包括注释类型)或枚举声明 /
FIELD, /
字段声明(包括枚举常量) /
METHOD, /
方法声明 /
PARAMETER, /
参数声明 /
CONSTRUCTOR, /
构造方法声明 /
LOCAL_VARIABLE, /
局部变量声明 /
ANNOTATION_TYPE, /
注释类型声明 /
PACKAGE /
包声明 */
}

@Retention:自定义注解保留到什么阶段(生命周期),值是从枚举类RetentPolicy里获取的

​ RetentionPolicy.SOURCE:自定义注解保留到源码阶段,字节码阶段和运行阶段是没有的

​ RetentionPolicy.CLASS:自定义注解保留到字节码阶段,运行阶段是没有的

​ RetentionPolicy.RUNTIME:自定义注解保留到运行阶段

public enum RetentionPolicy {

SOURCE, /* Annotation信息仅存在于编译器处理期间编译器处理完之后就没有该Annotation信息了 /
CLASS, /
编译器将Annotation存储于类对应的.class文件中。默认行为 /
RUNTIME /
编译器将Annotation存储于class文件中,并且可由JVM读入 */
}

10.什么是Spring AOP

AOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。
这里我们用到的是静态AOP切面
主要是由切面和切点构成的:
·切点(PointCut): 可以插入增强处理的连接点。
·切面(Aspect): 切面是通知和切点的结合。

10.1Spring AOP 中有 5 中通知类型,分别如下:

在这里插入图片描述

11.反射

获取Class常用API

11.1.调用运行时类本身的.class属性
Class clazz = String.class;
11
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值