熟练掌握各种常用数据结构的优缺点及使用场景,数组、链表、哈希表等。
喜欢分析优化及封装代码,善于使用设计模式来优化业务功能(工作常用的如单例、建造者、策略、责任链、观察者等)。
熟练使用AspNet.Core框架,深入理解其内部运行机制,善于使用中间件及filter解决一些特殊场景。
熟练使用Mysql、Clickhouse、Redis、Mongo,熟练使用RabbitMq等异步队列进行逻辑解耦及削峰填谷操作。
善于采用uml分析复杂业务(常用有类图、活动图、状态机、用例图等),进行领域建模。
善于使用异步多线程处理高并发、高耗时场景。
熟练使用Dapr构建分布式微服务应用。
通用的消息通知服务,主要解决公司平台服务中发通知问题,通过订阅RabbitMq消息(也提供Api访问)实现高内聚低耦合,其他服务只需要向RabbitMq丢消息即可,具体设计如下:
1、采用Mongo配置如下集合:消息模板、数据Providers、全局变量、邮件Layout、发送器Senders、发送日志
2、订阅到消息后通过唯一的模板编号找到模板信息,模板中有获取ModelProvider、收件人/抄送人Provider、推送方式等
3、支持消息体自带发送人抄送人等,支持邮件携带附件功能等
4、 各Provider负责返回模板所需的各种数据(支持Dapr调用和Sql),主要有2类:获取模板数据 及 获取收件人
5、模板渲染采用 Razor+RazorEngine 实现,渲染好之后通过 反射+缓存 找到对应Sender进行发送(邮件/短信/App/Webhook/Wechat);寻找Sender这里采用了策略模式的思想。
6、发送完之后记录发送日志,日志结构及内容完全支持重试机制
7、 基于以上消息服务,扩展了一个通用的后台定时发通知的功能,需求来源为:每个租户都有根据一定条件冻结用户功能并发提醒;采用Hangfire作为定时任务框架,只需要配置好job的数据扫描范围,触发条件及满足条件时要发送的消息模板和执行动作即可。
一款通用的后端表格服务,采用Mongo作为配置源,配置元素有表格列、数据源及类型、排序条件、查询条件,数据源支持Mysql、Clickhouse、Mongo,查询条件支持文本、下拉框、时间范围等,前端通过code查询配置信息,后端根据配置及前端的筛选条件查询出数据,并返回给前端进
一个专门服务于企业平台内的消息通知服务,通过订阅RabbitMq消息,计算出要发送的消息体、收件人以及发送渠道,完成发送并记录流水。目前支持邮件、短信、企业微信、webhook、极光推送等方式。 并基于该服务实现了一个定时发送通知的服务,只需要设置好job的扫描数据源、触发条件