这篇文章分享一下最近一个项目的部分架构设计,主要还是根据对业务的理解来构思。主要是对部分功能的设计,涉及到消息中间件、内外网隔离、故障隔离等相关的技巧。
项目需求
项目是进行社交媒体的发布,需要对接微信、微博、以及海外的Facebook、Twitter、Youtube等平台,通过定制的编辑器对稿件进行编辑,然后一键发布到所对应的平台上。
业务流程
编辑器:可对所有类型的稿件进行编辑,它会对不同类型的稿件进行不同的条件限制以满足最终的发布要求。
中间层:收到编辑器的签发请求开始对数据进行封装,依据不同平台的数据格式进行处理。
发布层:对中间层封装好的数据发布到对应的平台。
本文主以获取微博官方表情的接口为例,发布层定时调用微博服务器进行表情的获取,对获取到的数据写入文件再上传到nas并通过mq通知中间层,目前的mq是备用方案,中间层也可以定时从nas中读取文件并更新数据到数据库,编辑器则直接调用中间层进行数据获取,由于一些别的因素此处并未引入缓存。这就是获取微博官方表情接口的一个大概流程,下面会结合构架设计图来说明为什么要这么设计。
架构设计
设计初衷
出于安全考虑发布层需要部署到接口机上直接跟外网进行交互,而发布层部署在内网服务器,发布层调用接口获取到的数据先写入nas服务器的文件中,然后中间层去定时读取nas中文件进行读取并把数据入库。nas是可以供内外网访问的,这样的话如果有人对发布层进行恶意攻击的话也不会影响到中间层和其他的服务,从而进行内外网隔离并起到一个故障隔离的作用。
细心的小伙伴可能发现发布层和中间层既然已经加入了mq为什么中间层还有再定时去读取nas中的文件呢?
假设在单机情况下mq挂了的话中间层就无法取到最新的数据,假如发布层的接口是每隔1一个小时调用一次,然而中间层一个小时之内并没有收到数据的话那么他就主动的去读取nas中的文件,当然具体的实现中还需要进行相关的处理。
总结
对设计来说没有什么是最好的,所有的设计都需要在不断的实践中进行调整。所以大家在工作中不要以为设计是多么难做的事情,总要去不断的进行尝试,如果说碰到一个还不错的公司给你这种机会的话一定不要错过,也不要怕出什么问题,既然有人信任你那你就一定要去尝试,慢慢的等你在面试过程中说起这种经历的时候你就会知道你曾经的努力都没有白费。
路过的朋友帮忙点个赞转发评论一下吧,谢谢啦!
- 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《草原上的建筑- 草原上的建筑模型-玉龍之鄉》。
- 本文网址:https://liangzhidong.cn/?post=89
- 上篇文章:陈春花:传统产业数字化转型的「六个关键认知」
- 下篇文章:BIM的八大争议,有同感的吗?