开源项目推荐系列(短信网关)

开源项目推荐系列(短信网关)

前言

文本已收录至我的仓库,欢迎Star:

种一棵树最好的时间是十年前,其次是现在

Tips

开源项目推荐系列是开源项目推荐系列(短信网关),小六六平时不是会逛逛开源平台嘛!然后就想着把一些项目分享给到大家php短信网关,给大家说说我对这个开源项目的一些看法,当然,在写的过程中,也可以让自己的知识面更广,希望能给大家带来不一样的东西。

短信网关

今天分享的项目是短信网关,这个项目呢?是某马在B站上放出来的项目,我也称之它为开源项目吧!哈哈

image.png

image.png为啥要用短信网关

随着企业业务扩张、应用成倍的增加、短信规模化使用,传统短信平台的接入方式和单一的信息发送功能,已经不能完全满足现代企业管理的需求,所以统一入口、减少对接成本、同时兼顾多种短信业务、简单易行的操作与维护、高稳定、高可靠的移动信息化应用成为短信平台发展趋势。

image.png

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

平台架构

集信达短信平台的整体架构如下:

image.png

主要有以下几个服务

业务架构

image.png

通过上面的业务架构可以看到,短信接收服务(pd-sms-api)提供3种方式供业务系统调用:

短信接收服务通过资质验证(可开关)、短信内容校验后将短信信息发送到对应中间件中(Redis、MySQL)。

短信发送方式分为两种类型:

项目结构

image.png

集信达短信平台,项目整体工程结构和模块功能如下:


pd-sms-backend       # 集信达 短信平台父工程
 ├── pd-sms-entity   # 短信平台实体
 ├── pd-sms-manage   # 系统管理服务
 ├── pa-sms-api    # 短信接收服务,应用系统调用接口、发送短信
 ├── pd-sms-server   # 短信发送服务,调用短信通道、发送短信
 └── pd-sms-sdk    # 短信SDK,应用系统引入、发送短信

集信达短信服务有三个:后台管理服务,短信接收服务,短信发送服务:

应用端口说明启动命令

pd-sms-

8770

后台管理服务

java -jar pd-sms-.jar &

pd-sms-api

8771

短信接收服务

java -jar pd-sms-api.jar &

pd-sms-

8772

短信发送服务

java -jar pd-sms-.jar &

业务方调用处理流程

调用方式:

处理流程:

短信接收服务接收到应用系统请求后,会进行相关的校验处理,校验通过则将信息保存到消息缓存区,具体处理流程如下:

image.png短信发送服务的发送过程

相关功能:

处理过程:

image.png项目亮点 架构的设计

架构的设计和耦合性还是很好的php短信网关,代码的风格也很优雅,代码通俗易懂,我随机截取一个类给大家看看

image.png短信发送服务核心类服务注册器

大家知道这个是干嘛的吧?哈哈往下看,保证让你觉得有点东西

其实这块的概念和我们服务的注册于发现其实差不多的,但是作用确是不同,为啥这里我们要服务注册呢?原因如下

短信发送服务支持分布式集群部署,可以是多个实例,实例越多,发送短信的能力越强。但是对于通道选举、持久化通道等操作,只能有一个服务实例执行,其他服务实例通过redis的广播机制获得通道变化。

如果要实现这一功能,需要将所有短信发送服务实例注册到某个地方,当前实现是将所有服务实例注册到Redis中。并且为了能够监控每个服务实例运行状态,需要每个服务实例定时上报并且定时进行服务检查。

业务逻辑

通道实例加载器

通道实例加载器对应的为类。

短信发送服务存在多个通道(例如阿里云短信、梦网短信等),这些通道是通过后台管理系统设置的,包括通道的名称、签名、模板、连接方式等信息。当短信发送服务启动时,或者后台管理系统设置通道时,将会初始化短信通道。

image.png

通道实例加载器的作用就是根据通道配置,初始化每个通道的Bean对象(例如、等)。

真正发送流程


/**
 * 短信发送工厂
     1. 获取构建好的短信通道
     2. 调用通道方法,发送短信
     3. 如果发送出现异常,触发通道选举和通道降级策略
     4. 当通道选举被触发时:smsConnectLoader.buildNewConnect()
     5. 当通道降级被触发时:smsConnectLoader.changeNewConnectMessage()
     6. 记录短信发送日志
 */

image.png

采用do while的模式,直到遍历所有的通道把短信成功发送

异步通道降级选举

再真正下发短信的流程中

image.png

在一次真正向第三方发送短信的时候php短信网关开源项目推荐系列(短信网关),如果发送失败,就会走进到这个重新排序通道逻辑,判断是否需要重排序

在这逻辑中有2个很关键的点

image.png

里面呢?有2个核心逻辑

异步通道选举流程

image.png

通道选择,只能再一台通道中选举,所以用分布式锁。

选择策略

* 通道选举,选举策略:
* 1、剔除掉第一级通道
* 2、查询最近一小时内通道发送短信数量,按数量排序通道
* 3、如果最近一小时没有发送短信,按最后发送成功排序

具体的逻辑还是有点东西的,哈哈。大家自己去看源码吧

结束

我觉得,这个项目的设计,技术,架构都是非常不错的,而且又全是crud,对于个人的帮助还是很不错的,如果有时间大家花点时间去吃透它,对于之后的架构设计,面试等都有很大的帮助,并且这个项目很小,代码量也少,花的时间也不多,我是非常推进的拉。好了,就到这了 我是小六六 三天打鱼,两天晒网,项目自己大家去B站找吧或者私聊我要。

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 开源项目推荐系列(短信网关)

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们