明博体育明博体育明博体育最近有小伙伴拿到了一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:
所以,这里今天给大家做一下系统化、体系化的梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”。
构建企业级统一基础推送服务,支持通过多渠道推送,能够统一集成的电子邮件、短信、聊天、钉钉、企业微信和其他公共社交应用:
企业级统一基础推送服务,是一个通用特性明博体育,适用于所有现代分布式应用,无论采用何种编程语言和技术。
企业内部,早期业务量比较少,各系统基本都是有自己的推送模块,类型也是五花八门:
为了解决上述分散实现的问题,企业内部统一实现了一个综合各类推送功能的基础库,供业务方统一调用。
于是,我们把 springboot-starter 的逻辑封装到了服务治理框架内,微服务服务启动时,每一个服务对各种的 starter 进行运维管理、配置管理。
这样的基础服务,需要进行沉淀,剥离,集中成统一的、基础服务,由专门团队负责维护、迭代、运维。降低重复投入、重复建设成本, 真正的降本增效。
一个业务应用, 基本上有很多原子服务编排、整合而来,最终构建出一个完整的架构图。
接入层,这是外部请求进入内部系统的门户,所有的请求都必须通过 API 网关。
应用层,也被称为聚合层,它为相关业务提供聚合接口,并调用中台服务进行组合。
原子服务,包括就是原子技术服务,原子业务服务,根据业务需求提供相关的接口。原子服务为整个架构提供可复用的能力。
例如,在B站视频网站平台上,评论服务作为一项原子服务平面设计,在B站的视频、文章、社区都需要,那么为了提高复用性,评论服务就可以独立为原子服务,不能与特定需求紧密耦合。
类似的,文件存储、数据存储、推送服务、身份验证服务等功能,都会沉淀为原子服务,业务开发人员,在原子服务基础上,进行编排、配置、组合,可以快速构建业务应用。
高扩展:可扩展/可插拔的设计,以便添加更多适配器和提供商,与所有通知模块的API集成以及与客户端和服务提供商/供应商的外部集成
跨平台:支持Android/iOS移动设备和桌面/笔记本电脑的Web浏览器
自伸缩:可在本地(VMware Tanzu)和 AWS、GCP 或 Azure 等公共云服务上扩展负载
这些客户端通过 API 调用请求单个和批量消息。它们将向简单和批量通知服务发送通知消息。
简单通知客户端:专门用于发送单个通知的客户端,负责向用户发送单一通知。这些客户端通常用于向特定用户发送重要通知,例如密码找回或账户异常提醒。
批量通知客户端:专门用于发送批量通知的客户端,负责向用户批量推送通知。这些客户端通常用于需要通知大量用户的场景,例如企业内部通知或营销活动。
它们负责构建通知消息,通过调用模板服务。这些消息将使用验证服务进行验证。
简单通知服务:该服务将提供 API,主要负责处理简单通知请求,提供与后端服务集成的 API,以便将通知发送给用户。这种服务通常用于处理较少的通知请求,例如针对特定用户或事件的简单通知。
批量通知服务:该服务将提供 API,主要负责处理批量通知请求,提供与后端服务集成的 API,以便批量发送通知。这种服务通常用于处理大量的通知请求,例如企业内部的批量通知或营销活动的批量推送。
它还将提供 Web 仪表板,该仪表板应具有筛选选项,以根据不同的条件(如日期范围、优先级、模块用户、用户组等)筛选消息。
此服务主要负责所有可用的一次性密码(OTP)、短信、电子邮件明博体育、聊天以及其他推送通知消息的模板管理。
除此之外,它还将提供一个用户界面(UI)的仪表板页面,使用户能从网络控制台检查和管理各种消息模板。
此服务全权负责根据业务规定和预期格式对通知信息进行核实。批量通知需由授权的系统管理员同意。
通知信息具有较高的优先级和有时间限制的到期时间,它们将始终以较高优先级发送。
通用出口处理器会接收消息并根据相同的优先级从高、中和低三个不同的队列中发送和处理。
在交易过程中的应用程序通知可以发送到中优先级,如电子邮件等。企业可以根据通知的重要性确定优先级。
它会根据业务的优先级来发送和接收通知。企业可以根据通知的重要性来设定优先级。
该服务通过轮询事件优先级队列来接收事件中心中的通知信息,并根据其优先级进行处理。
此外,该服务还从用户选择服务中获取目标用户/应用程序,以便进行通知的分发。
在处理过程中,通用出口处理器会根据事件的优先级进行相应的操作,确保重要事件得到优先处理。
除此之外, 通用出站处理程序,还能进行消息的进一步按照通道类型进行分发:
这些适配器会根据不同的设备(如桌面/移动设备)和通知类型(如短信/OTP/电子邮件/聊天/推送通知)进行转换。
这些转换器将从消息队列(RocketMQ)接收传入信息并根据其所支持的格式传递给外部合作伙伴。
这些是外部的 SAAS(云上/本地)服务提供商,利用它们的基础设施和技术实现实际的通知传递。
可能是 AD/IAM/eDirectory/用户数据库/用户组,具体取决于客户的偏好。
在服务内部,它将使用用户配置文件服务API 来消费和检查客户的通知偏好。
此外,该服务还可以用于统计和分析用户对通知的偏好,以帮助企业优化通知策略。
它将从分析数据库(Cassandra)和通知数据库中提取所有最终的通知信息,用于分析和报告目的。
它包括一个数据库集群,其中领导者用于执行所有写操作,读取操作则在读取副本/跟随者上进行。
它能提供良好的性能和低延迟,适应大量的通知,因为它内部处理大量的写操作,并与其他数据库节点同步,保持高可用性和可靠性的冗余数据/消息。
3、公司新来一个同事:为什么 HashMap 不能一边遍历一边删除?一下子把我问懵了!