# 集信达【短信平台】项目概述及管理端
![输入图片说明](https://images.gitee.com/uploads/images/2021/0612/010815_689070aa_800553.jpeg "QQ截图20210612010758.jpg")
## 1. 项目概述
### 1.1 背景介绍
随着企业业务扩张、应用成倍的增加、短信规模化使用,传统短信平台的接入方式和单一的信息发送功能,已经不能完全满足现代企业管理的需求,所以统一入口、减少对接成本、同时兼顾多种短信业务、简单易行的操作与维护、高稳定、高可靠的移动信息化应用成为短信平台发展趋势。
![1605854246868](assets/1605854246868.png)
- 服务越来越多,每个服务都有可能发送短信,是否每个服务都需要对接一遍?
- 多应用对接短信,如何做到短信发送服务高效、稳定?
- 短信通道出现异常时,如何快速切换通道?
- 切换通道时,如何做到应用服务无感知?
- 如何统计各服务短信发送情况,以便进行后续营销分析?
本项目(集信达短信平台)的核心在于保证短信高效、准确的送达、简单易操作的对接方式。通过对服务的解耦、通讯方式的升级来提升系统的吞吐量。同时在多通道的加持下,通过智能动态的通道评级、选举、降级、热插拔,增强了系统的健壮性,摆脱对单一通道的依赖。并且提供多种对接方式,满足企业内部的各种需求。
集信达短信平台的整体架构如下:
![1605246967720](assets/1605246967720.png)
### 1.2 业务架构
![](assets/2020-08-05_5f2a6b10f361d.png)
### 1.3 技术架构
#### 1.3.1 系统管理服务
![](assets/2020-08-05_5f2a6b3c4cf9b.png)
#### 1.3.2 短信接收服务
![1606101348381](assets/1606101348381.png)
#### 1.3.3 短信发送服务
![1606101386917](assets/1606101386917.png)
### 1.4 项目模块介绍
集信达短信平台,项目整体工程结构和模块功能如下:
```
pd-sms-backend # 集信达 短信平台父工程
├── pd-sms-entity # 短信平台实体
├── pd-sms-manage # 系统管理服务
├── pa-sms-api # 短信接收服务,应用系统调用接口、发送短信
├── pd-sms-server # 短信发送服务,调用短信通道、发送短信
└── pd-sms-sdk # 短信SDK,应用系统引入、发送短信
```
集信达短信服务有三个:后台管理服务,短信接收服务,短信发送服务:
| 应用 | 端口 | 说明 | 启动命令 |
| ------------- | ---- | ------------ | ----------------------------- |
| pd-sms-manage | 8770 | 后台管理服务 | java -jar pd-sms-manage.jar & |
| pd-sms-api | 8771 | 短信接收服务 | java -jar pd-sms-api.jar & |
| pd-sms-server | 8772 | 短信发送服务 | java -jar pd-sms-server.jar & |
## 2. 项目环境准备
### 2.1 环境要求
- JDK : 1.8 +
- Maven: 3.3 +
http://maven.apache.org/download.cgi
- Docker: 18 +
docker-compose: 1.23 +
- Mysql: 5.7.0 +
https://downloads.mysql.com/archives/community
- Redis: 4.0 +
https://redis.io/downloa
- Nacos: 1.1.4
https://github.com/alibaba/nacos/releases
- Node: 11.3+(集成npm)
https://nodejs.org/en/download
### 2.2 Redis集群(自学)
Redis集群的哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
哨兵模式作用:
- 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
- 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
![img](assets/11320039-57a77ca2757d0924.png)
除了监控Redis服务之外,哨兵之间也会互相监控。本文采用一主、双从、三哨兵方式
![img](assets/11320039-3f40b17c0412116c.png)
部署方式为:docker compose:
第一步:创建redis docker-compose.yml配置文件 目录,并复制docs/dockerfile/redis/docker-compose.yml 到当前目录,配置文件可根据需要调整
~~~ docker-compose.yml
version: '3.4'
services:
master:
image: redis
container_name: redis-master
restart: always
command: redis-server --port 16380 --requirepass 123456 # 16380 是定义的主库端口,默认:6379; --requirepass 123456 是redis密码。
ports:
- 16380:16380 # 将容器的16380端口映射到宿主机的16380端口上,第一个16380为宿主机端口。
slave1:
image: redis
container_name: redis-slave-1
restart: always
command: redis-server --slaveof 127.0.0.1 16380 --port 16381 --requirepass 123456 --masterauth 123456 # 127.0.0.1 16380 为主库ip和端口(此处我们使用宿主机的ip和主库映射出来的端口);16381 是定义的从库端口,默认:6379; --requirepass 123456 是redis密码; --masterauth 123456 是主库的密码。
ports:
- 16381:16381
slave2:
image: redis
container_name: redis-slave-2
restart: always
command: redis-server --slaveof 127.0.0.1 16380 --port 16382 --requirepass 123456 --masterauth 123456 # 127.0.0.1 16380 为主库ip和端口(此处我们使用宿主机的ip和主库映射出来的端口);16382 是定义的从库端口,默认:6379; --requirepass 123456 是redis密码; --masterauth 123456 是主库的密码。
ports:
- 16382:16382
~~~
第二步:执行启动命令
在当前目录下执行启动命令
~~~
docker-compose -f docker-compose.yml up -d
~~~
![](assets/2020-08-11_5f32409702263.png)
第三步:创建sentinel docker-compose.yml配置文件 目录,并复制配置文件
复制 docs/dockerfile/sentinel/docker-compose.yml 到当前目录
复制 docs/dockerfile/sentinel/sentinel1.conf 到当前目录
复制 docs/dockerfile/sentinel/sentinel2.conf 到当前目录
复制 docs/dockerfile/sentinel/sentinel3.conf 到当前目录
docker-compose.yml
~~~
version: '3.4'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /home/ec2-user/dockerfile/sentinel/sentinel.conf # 自定义路径,可更改,但是需要和volumes中的路径相同。
restart: always
ports:
- 26380:26380
volumes:
- ./sentinel1.conf:/home/ec2-user/dockerfile/sentinel/sentinel.conf # 自定义路径,可更改,但是需要和command中的路径相同。
sentinel2:
image: redis
container_name: redis-sentinel-2
command: redis-sentinel /home/ec2-user/dockerfile/sentinel/sentine2.conf
restart: always
ports:
- 26381:26381
volumes:
- ./sentinel2.conf:/home/ec2-user/dockerfile/sentinel/sentine2.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
command: redis-sentinel /home/ec2-user/dockerfile/sentinel/sentine3.conf
restart: always
ports:
- 26382:26382
volumes:
- ./sentinel3.conf:/home/ec2-user/dockerfile/sentinel/sentine3.conf
~~~
sentinel1.conf
~~~
port 26380
daemonize no
pidfile /var/run/redis-sentinel.pid
dir /tmp
sentinel monitor mymaster 127.0.0.1 16380 2 # 主机 ip 与 端口;2表示当有两个sentinel认为主机失效时才会执行切换
sentinel auth-pass mymaster 123456 # 主机密码
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
~~~
sentinel2.conf
~~~
port 26381
daemonize no
pidfile /var/run/redis-sentinel.pid
dir /tmp
sentinel monitor mymaster 127.0.0.1 16380 2 # 主机 ip 与 端口;2表示当有两个sentinel认为主机失效时才会执行切换
sentinel auth-pass mymaster 123456 # 主机密码
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 18
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
软件资源-集信达,软件资源-集信达 (562个子文件)
.browserslistrc 30B
sentinel3.conf 416B
sentinel1.conf 416B
sentinel2.conf 416B
集信达2.0 PRD文档.docx 2.19MB
短信平台详细设计文档.docx 825KB
.gitignore 429B
.gitignore 230B
index.html 1KB
favicon.ico 5KB
StatisticsController.java 14KB
SmsSendServiceImpl.java 12KB
SmsFactory.java 11KB
HuaweiSmsService.java 10KB
TemplateController.java 9KB
ConfigController.java 8KB
SmsSendController.java 8KB
ConfigServiceImpl.java 7KB
SmsConnectLoader.java 7KB
SmsManageDatabaseAutoConfiguration.java 7KB
SmsServerDatabaseAutoConfiguration.java 7KB
SmsApiDatabaseAutoConfiguration.java 7KB
SignatureController.java 7KB
LogController.java 7KB
AliyunSmsService.java 6KB
JdSmsService.java 5KB
PlatformController.java 5KB
BlackListController.java 4KB
SendLogServiceImpl.java 4KB
MengWangSmsService.java 4KB
SmsSendServiceImpl.java 4KB
FeigeSmsService.java 4KB
RedisLock.java 4KB
SendLogPageVO.java 4KB
LexinSmsService.java 3KB
ServerRegister.java 3KB
BlackListServiceImpl.java 3KB
R.java 3KB
DefaultParamsAspect.java 3KB
ConfigServiceImpl.java 3KB
NettyServerHandler.java 3KB
SignatureServiceImpl.java 3KB
TemplateServiceImpl.java 3KB
TemplateServiceImpl.java 3KB
ConfigTemplateServiceImpl.java 2KB
ConfigSignatureServiceImpl.java 2KB
SignatureServiceImpl.java 2KB
NettyServer.java 2KB
AbstractSmsService.java 2KB
SendTimingSmsImpl.java 2KB
SmsManageApplication.java 2KB
SendLogEntity.java 2KB
SmsSendController.java 2KB
HighSmsListener.java 2KB
GeneralSmsListener.java 2KB
BlackListServiceImpl.java 2KB
SmsServerApplication.java 2KB
HighServerReceiver.java 2KB
SmsApiApplication.java 2KB
SendSmsJob.java 2KB
SubscriberConfig.java 2KB
SmsEncryptionUtils.java 1KB
SubscriberConfig.java 1KB
SmsEncryptionUtils.java 1KB
SmsEncryptionUtils.java 1KB
SignatureServiceImpl.java 1KB
LettuceConfig.java 1KB
LettuceConfig.java 1KB
TemplateServiceImpl.java 1KB
PlatformServiceImpl.java 1KB
ConfigEntity.java 1KB
ReceiveLogEntity.java 1KB
StringHelper.java 1KB
ReceiveLogServiceImpl.java 1KB
SdkTest.java 1KB
SendLogServiceImpl.java 1KB
SendLogMapper.java 1KB
SmsConfig.java 1KB
SmsBatchParamsDTO.java 1KB
ExceptionUtils.java 1KB
RedisListTest.java 1KB
PlatformEntity.java 1KB
SendLogService.java 1KB
ManualProcessEntity.java 971B
NettyServerInitializer.java 945B
Test.java 923B
TimingPushEntity.java 915B
TemplateEntity.java 892B
ConfigTemplateEntity.java 859B
SmsSendDTO.java 857B
ConfigSignatureEntity.java 849B
BaseEntity.java 836B
MarketingStatisticsCountVO.java 836B
ReceiveLogMapper.java 834B
ConfigServiceImpl.java 827B
ConfigDTO.java 819B
SmsBatchParamsDTO.java 815B
PlatformServiceImpl.java 793B
PlatformServiceImpl.java 793B
SignatureEntity.java 766B
共 562 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
爱你三千遍斯塔克
- 粉丝: 1w+
- 资源: 171
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功