软件资源-集信达,软件资源-集信达
立即下载
资源介绍:
软件资源----集信达
# 集信达【短信平台】项目概述及管理端
![输入图片说明](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
资源文件列表:
jixinda-master.zip 大约有719个文件