合作客户
合作客户
今日特惠
特惠仅剩10
距离抢购结束仅剩
10
 
50
 
20
 
 
咨询万商超信

sms短信平台(sms短信平台有哪些)

sms短信平台(sms短信平台有哪些)

三网捷信-高品质106通道的短信平台

sms短信平台(sms短信平台有哪些)

  • 作者:admin
  • 发表时间:2022年5月18日下午4:02
  • 来源:未知

为应对传统单体架构的缺陷,微服务架构被企业广泛应用。Spring Cloud 为开发人员提供了快速构建微服务的系列工具,但是并没有进行相关整合, sms-platform 是在其基础上搭建的一套可以快速实现微服务的基础脚手架工具。

1、传统单体架构的缺陷

传统单体应用将所有功能的表示层、业务逻辑层、数据访问层、包括静态资源等全部糅合在一个工程内,编译 打包 部署在单台服务器上线,比如打成 war 包放在 Tomcat 的 webapp 目录中部署。这样的开发部署流程适合小型项目,系统功能不复杂,访问量不大的情况下有绝对的优势,开发速度快且运维方便。但是,当业务越来越复杂,功能越来越多,参与的开发人员越来越多,该流程就暴露出如下问题:

  • 业务复杂,代码量增大,代码可读性、可维护性、可扩展性下降。一旦要新同事接手代码,需要花很多时间理解 ;
  • 测试难度增大 ;
  • 单体应用并发能力有限,访问量高,用户体验差 ;
  • 单体应用容错率低,一旦出错,可能导致整个项目崩亏 ;
  • 将单体应用做集群部署,添加负载均衡服务器(例如 Nginx 反向代理转发请求)可略微缓解以上两条条缺点,但不能完美解决问题。

2、微服务是什么?

微服务架构:就是将原来的单体应用按义务范围来,划分为多个小 model,每个微服务运行在自己的进程中,相互不产生影响,完全自动化独立部署,并使用轻量级机制通信,通常是 HTTP RESTUFUL API,可对各微服务进行集中管理。这些小 model 可以使用不同的编程语言及存储技术,微服务架构是分布式架构。

微服务架构的优点:

  • 按业务划分的微服务单元独立部署,运行在独立的进程中,服务之间没有任何耦合,具备良好的扩展性和复用性;
  • 服务之间通常采用 HTTP 通信,该通信机制与平台和语言无关,可以使用不同的编程语言和存储方法。也可以采用轻量级消息总线通信,如 RabbitMQ、Kafaka 消息队列等,数据格式一般采用 JSON;
  • 每个微服务都有自己的数据库,服务间数据库相互是独立;
  • 微服务一般采用自动化工具部署。Docker 容器技术是微服务最佳部署容器;
  • 服务集中化管理(服务注册与发现:Eureka、Zookeeper、Consul),监控(服务运行状况监控:Spring-Boot-Admin-Server);
  • 微服务架构是分布式架构。

3、微服务脚手架工具:sms-platform

Spring Cloud 为开发人员提供了快速构建微服务系统的系列工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、分布式会话等相关功能,但是并没有进行相关整合,sms-platform 是在 Spring Cloud 基础上搭建的一套可以快速实现微服务架构的基础脚手架工具,sms-platform 基于 Spring Cloud Finchley 版本 的框架搭建,可以快速帮助项目组完成老系统微服务改造。帮助业务系统快速搭建微服务化。

架构模型图如下所示:

 

Spring Cloud微服务脚手架(短信平台)实践分享

 

产品分五大子系统:短信管理平台、系统接口层、短信下发策略、短信网关接口、监控系统,分别完成不同的功能,也可组合成复杂的综合系统,如下图1所示。接入子系统的功能是通过协议接入第三方客户和推送状态报告,采用异步通信机制,状态报告数据直接推送给对方;短信管理平台提供权限管理,客户管理,黑名单和敏感词管理以及下发日志统计查询等功能。短信下发策系统主要是对接收到的短信进行黑名单、敏感词、流量、路由等方面的控制和过滤。短信网关接口系统能够接中国移动的企信通CMPP2、CMPP3.0短信网关、中国联通的SGIP短信网关、中国电信的SMGP网关,也可以接入其他非标准接口或网关。短信网关接口系统支持多个通道的整合管理,机构可以同时使用多个通道,只需事先定义好路由策略,即可自动路由分拣。不同通道对接模块可以分布式部署,亦可集中部署,方便灵活。

组件图如下:

 

Spring Cloud微服务脚手架(短信平台)实践分享

 

Github 相关链接 :
https://github.com/qfjiaoyan/sms-platform

主要包括以下功能模块:

  • 基础核心工具包: sms-platform-common
  • 缓存微服务:sms-platform-cache
  • 微服务服务中心:sms-platform-eureka
  • 短信网关微服务:sms-platform-gateway
  • 接口微服务:sms-platform-interface
  • 监控微服务:sms-platform-monitor
  • 搜索微服务:sms-platform-search
  • 策略微服务:sms-platform-strategy
  • 运营管理平台:sms-platform-webmaster

 

Spring Cloud微服务脚手架(短信平台)实践分享

 

4、开发框架

  • SpringBoot 2.0.3
  • SpringCloud Finchley.RELEASE
  • Shiro 1.4.0(权限管理)
  • Elastic-Job(分布式任务)
  • Netty
  • ECharts

5、运行环境

  • JDK1.8+
  • Tomcat8.5+
  • Mysql5.5+
  • Redis5.0
  • Elasticsearch 6.5.4
  • RabbitMQ 3.7.14
  • Zookeeper3.4.9基于Spring Cloud Finchley微服务框架

6、技术特性

  • 基于Eureka的服务管理
  • 异步编程与高并发多线程处理技巧
  • 基于Servlet3.0实现接口异步处理
  • 基于Shiro实现客户精细化权限管理
  • 基于HttpClient加多线程实现消息推送
  • 基于分布式任务框架Elastic-Job实现高可用监控
  • 短信下发策略模块使用责任链框架解耦业务,实现业务可定制可拨插的编程
  • 基于RabbitMQ日志收集以及各系统间解耦
  • 基于Elasticsearch实现短信日志搜索与统计
  • 基于Netty实现各运营商网关的Socket高性能异步通讯
  • 基于Echarts展示统计图表
  • 前端采用VUE框架

7、模块介绍

sms-platform-common(基础核心工具包)

基础核心工具包,主要负责如 请求切面、服务配置、异常处理、参数格式化、请求防护、redis、Db、基础配置组件、以及其他相关如文件服务、基础工具类等组件。这里,重点要介绍 bean 包下组件 。

sms-platform-eureka(微服务服务中心)

微服务注册中心 eureka 高可用配置方案,Eureka 通过运行多个实例,使其更具高可用性。事实上,这是它的默认属性,用户需要做的就是给对等实例一个合法的关联 serviceUrl, 如下图所示:

Spring Cloud微服务脚手架(短信平台)实践分享

 

当有服务注册时,两个 Eureka-server 是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。

sms-platform-cache(缓存微服务)

基于Redis5集群提供基本的缓存操作接口,缓存管理平台同步过来的黑名单、敏感词、通道路由、客户信息、充值、扣费等,提供缓存查询接口给各服务使用。

sms-platform-gateway(短信网关微服务)

监听短信下发日志,把日志写到MQ,从状态报告队列监听状态报告,更新下发日志状态,提供短信搜索与统计接口给运营管理平台使用。

基于Netty实现各运营商网关的NIO Socket高性能异步通讯,心跳、拆包、粘包、实现中国移动CMPP2短信协议,中国联通SGIP1.2短信协议、中国电信SMGP协议。

sms-platform-interface(接口微服务)

基于Servlet3.0实现接口异步处理,接口模块实现了与API客户端的对接,实现了对接口发送短信的校验与预处理,推送状态报告给客户.

sms-platform-monitor(监控微服务)

使用的是 Elastic-Job-Lite;定时任务一般都是使用 quartz 或者 spring-task(ScheduledExecutorService),无论是使用 quartz 还是 spring-task,我们都会至少遇到两个痛点:

  1. 不敢轻易跟着应用服务多节点部署,可能会重复多次执行而引发系统逻辑错误;
  2. quartz 的集群仅仅只是用来 HA,节点数量的增加并不能给我们的每次执行效率带来提升,即不能实现水平扩展。

Elastic job 的主要功能有支持弹性扩容,通过 Zookepper 集中管理和监控 job,支持失效转移等。

监控项如下:

  1. 监控网关下发队列,如果下发队列积压超出一定值就报警,有可能是网关出问题,不从队列取值或发送缓慢,或客户有超大数据发送,需要运营人员排查关注
  2. 监控用户客户费用不足一定的值,比如小于1000块钱,就提醒用户充值,每天早 9天定时排查一次。

 

Spring Cloud微服务脚手架(短信平台)实践分享

 

sms-platform-search

基于Elasticsearch实现短信日志搜索与统计,监听短信下发日志,把日志写到MQ,从状态报告队列监听状态报告,更新下发日志状态,提供短信搜索与统计接口给运营管理平台使用。

Elasticsearch允许你开始小规模使用,但是随着你使用数据的增长,它可以建立在横向扩展的开箱即用。当你需要更多的容量,只需添加更多的节点,并让集群重组,只需要增加额外的硬件,让集群自动利用额外的硬件。

可以在数以百计的服务器上处理PB级别的数据。

sms-platform-strategy

短信下发策略模块使用责任链框架解耦业务,实现业务可定制可拨插的编程,对接收到的短信进行号段补全、黑名单、敏感词、流控、扣费、路由等方面的控制和过滤,各个过滤器之间要做到解耦,可以通过配置文件来动态配置,当需要去掉某个过滤器的时候不需要更改程序,只需要改一下配置文件即可.

流程图如下所示:

 

Spring Cloud微服务脚手架(短信平台)实践分享

 

 

sms-platform-webmaster

基于VUE+Shrio+Springboot+Mybatis实现精细化权限管理(可以控制到按钮级别)。

短信管理平台实现权限管理、客户管理、黑名单管理、敏感词管理、短信通道管理、客户通道管理、充值和号段管理、查询统计、短信下发等功能。

 

Spring Cloud微服务脚手架(短信平台)实践分享

 

结束语

通过精简或者重组 sms-platform 微服务脚手架可以快速提炼出适应相关项目组的微服务脚手架工具,解决项目组大量的前期框架整合时间,提升开发效率和项目进度。

开源地址下载或私信

https://github.com/qfjiaoyan/sms-platform

文章标签:

sms短信平台