消息发送管理平台学习笔记

一、项目背景

消息类型

通知类(开播了)、营销类(大促商品)、验证码类、警告类(系统挂了)

下发渠道

短信、邮件、微信小程序、公众号、企业微信等等

二、项目架构

三、技术栈

     中间件

     核心技术

Maven项目管理工具、依赖包管理工具

SpringBoot 约定大于配置、各种starter方便接入中间件、组件

Mysql 关系型数据库,存储模板、短信发送记录等信息

SpringData JPA orm框架

XXL-JOB 分布式定时任务框架    刷新token、下发短信指定时间的消息、次日发送消息

Kafka 消息队列:消峰、异步、解耦、下发日志、接入层和逻辑层的解耦

Redis 缓存:存储Token、业务去重

Apoollo 分布式配置中心  限流值、流量配置值、账号信息

Flink 实时计算引擎:清洗日志

Graylog 分布式日志框架:业务监控、日志检索

prometheus(普罗米修斯)+Grafna 系统监控

docker+docker-compose 方便搭建部署环境

四、项目模块

common 枚举、公共类等

API 接入层接口

APIImpl 接入层接口实现(和API区分开的原因是 后续接入RPC远程调用。业务方不关心业务实现,减少接入方的依赖项)

support 中间件的接入(大Util包)

stream flink的实时清洗

cron 定时任务逻辑

handler 逻辑层

web 后台管理接口

项目分模块的原因

1、职责分明 为了以后扩展和部署。2、模块管理 可针对某个模块,编译、测试、打包等。3、代码复用 将不同模块在不同机器上部署,他们所依赖的common包、support包可以通过jar方式引入

五、工具开发包

日常开发中需要用到许多Utils 自己写的往往没有一些开源包好用,国外:guava和common(apache) 国内:Hutool(糊涂)

我自己常用common的包  比如集合判空 字符创判空等等。json字符处理理 常用的是 fastjson

六、接入Java日志框架

日志,可以记录时间、位置、并持久化

Java日志框架:log4j、logback、log4j2等等

这么多的日志框架实现都有自己的api接口

slf4j 可以分别适配这些日志框架实现,从而代用api

在输出日志时 使用lombok的@Slf4j注解  直接使用log.info打印信息

在资源文件添加logback.xml来配置日志信息

七、短信的发送

我方平台  对接  短信服务商(阿里、腾信)

要做的工作:签名(安全验证)、短信模板的维护模板、调用发送短信api)

【注】:对接第三方时,一般使用其提供的sdk(不用发送http请求),鉴权复杂。

短信服务商会对接联通、移动等等发送短信

MySQL和SpringData JPA

开源好用、低成本快速插入、国内公司大部分数据库使用的MySQL

java链接MySQL的方式

DButil、Hibernate、Spring JDBC、MyBatis、SpringData JPA他们都是通过jdbc实现的

工作上用的更多的是使用MyBatis,SpringData JPA 适合单表操作

文章地址:https://gitee.com/zhongfucheng/austin

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值