鉴权系统和改良

到新公司报道一周了,实际工作时间四天。做的是即时通信产品的不良信息管控系统。即时通信家族里,最有名的应该时微信了吧。但微信里可能没有这个不良信息管控系统。大概因为微信没有这个义务吧。

什么时不良信息管控?举个栗子,如果微信有这个功能,你在朋友圈中发一张黄色图片,这张图片在朋友圈中呈现出来之前,它会先被发给服务器(集群),服务器会对这张图片进行鉴权,判断它是黑(非法)还是白(合法),如果合法,则放行,并最终在朋友圈呈现。如果非法,则被拦截,同时它的相关信息被记录,并上报给集中管控点。

如何实现?最简单的想法就是编写一个算法,以函数方式提供,输入图片,输出鉴权结果。也就是说这台服务器就运行这个函数,图片发到服务器就交给这个函数处理,根据函数返回结果,决定放行或拦截并上报。这和分布式和消息队列没有半毛钱关系。

我们把需求扩展一下,以接近实际情况。首先,输入除了图片,还有文字、音频、视频。

从鉴权的流程来讲,可以先对所有的输入一视同仁,先做一次黑白指纹命中,如果直接命中黑指纹,则表面该文件、图片、音频、视频非法,且曾经留有“案底”。如果命中白指纹则直接放行。如果没有命中,则继续后面的流程。这里有必要说明一下什么是指纹。对于文字、图片、音频、视频,我们都可以看作是一个字节流,计算这个字节流的md5值,就是它的指纹。除了指纹检测,可以想像还有很多鉴权手段,比如对于文字,进行分词、模式匹配等等,对于图片、音频、视频都有各自的鉴权算法。除此之外,对于荐权结果为黑的输入,有时还要发给集控中心,进行人工审核,以免误判。

白指纹、黑指纹匹配就是这个系统的业务,除此之外还有其他业务。我们为业务编号,分别为svc0,svc1,svc2,...,svcn。目前的系统以模块方式组织,每个模块对应一个业务。同时每个模块都是独立的进程,之间以消息队列方式连接。一个消息进入系统后在各个模块之间流转。即每个模块既是客户端也是服务端,它接收消息的时候就是服务端,将消息传递给下一个模块的时候,它就是客户端。

我的意思是,这个软件框架用的有些重了。跨进程通信的任务,虽然被底层封装了,但相比函数调用时的参数传递,它还是太重了些。函数调用可以查看调用栈就可以看到整个数据流,而进程件的数据传递只能依赖log了。

真对这个项目本身,完全可以横向将业务划分为两类:实时业务和非实时业务。即文本和体积小于一个阀值的媒体文件,可以快速处理,他们被划分都一个模块中(进程中),同步处理。体积大于一个阀值的媒体文件,划到另一个进程中,异步处理。这样业务进程被简化为两个。同时可以把原先分散在各个业务模块中的配置加载和配置更新模块,汇集到第三个进程中。

这就是我的方案,相信比拥有大量进程的原方案,更贴近业务模型,也更简单易调试。

时间: 2024-10-20 06:25:01

鉴权系统和改良的相关文章

web系统中ACL, RBAC等鉴权系统的异同

ACL, 强调面向资源, 描述对具体资源对象的操作鉴权, 有诸如Zend_ACL(好用), symfony-acl(不好用)等实现 应用场景如:对一条帖子资源的增删改鉴权, 整个鉴权流程中, 权限部分是由具体帖子对象和增删改等操作共同构成的.授权的结果是将 "资源---操作" 组合授权给用户. RBAC,强调面向角色的权限节点鉴权, 描述对功能节点的鉴权,有诸如ThinkPHP-RBAC, sylius/rbac-bundle(symfony)等实现 应用场景如: 依据不同用户角色显示

无线端安全登录与鉴权一之Kerberos

无线端登录与鉴权是安全登录以及保证用户数据安全的第一步,也是最重要的一步.之前做过一个安全登录与鉴权的方案,借这个机会,系统的思考一下,与大家交流交流 先介绍一下TX系统使用的Kerberos方案,参考了 http://blog.csdn.net/wulantian/article/details/42418231 的文章 一.概念介绍 Kerberos:起源于希腊神话,是一支守护着冥界长着3个头颅的神犬,在keberos Authentication中,Kerberos的3个头颅代表中认证过程

.NET 统一用户管理 -- 统一鉴权

统一鉴权 目的 为什么要统一鉴权了,每一个业务系统几乎都离不开,用户,角色,权限 这个 3个基础功能,为了避免各个系统各自去开发一套权限管理等基础功能,也同时轻松管理每个用户的全部权限. 怎么做         1. 在同一鉴权模块新建业务系统(获得系统ID) 2.  初始化业务系统的角色,菜单,以及权限等相关基础数据 3.  业务系统通过Get方式 (传入系统ID,英文名(唯一))获取用户在当前系统中的权限和功能列             表                数据库设计    

IMS AKA鉴权及应用流程详解

IMS AKA鉴权及应用流程详解 @auth doubleRabbit @date 2017-03-14 目的 了解鉴权及通信类业务相关鉴权算法的概念原理 了解IMS注册流程 了解IMS鉴权流程应用 鉴权含义 鉴权是指用户访问系统的权利,是提升系统安全性的一种方式,传统鉴权方法就是用户名与密码. 鉴权与授权的区别联系.逻辑上授权过程发生在鉴权之后,而实际中有时鉴权与授权对于用户来说体现为同一过程.例如在EPC附着过程中,先发生AIA鉴权过程,再发生ULR位置更新过程(授权). 接下来讲的是针对通

apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析

一.访问入口 http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E 微博开放接口的调用,如发微博.关注等,都是需要获取用户身份认证的. 目前微博开放平台用户身份鉴权主要采用的是OAuth2.0. 另外,为了方便开发者开发.测试自己的应用,我们还提供了Basic Auth的身份鉴权方式,但Basic Auth仅适用于应用所属的开发者自己调用接口. OAuth2.0概述 OAuth2.0较1

【Netty4 简单项目实践】六、断掉未鉴权的TCP长连接--ChannelHandelContext中的定时器用法

在TCP长连接模式下,我们需要及时释放那些未授权的TCP链接,让系统运行得更稳健一些. 首先是connect上来的TCP报文需要设置一个存活期,通过在pipleline上设置超时处理器ReadTimeoutHandler ch.pipeline().addLast(new ReadTimeoutHandler(120)); 使得一个TCP在120秒内没有收到数据就断掉. 这样做的目的是让连接者必须发TCP报文才能维持连接. 下一步在业务层对ChannelHandlerContext进行鉴权.与H

公共平台服务治理与鉴权

问题 解决问题 鉴权 注册 管理 总结 聊一聊最近了解的公司服务治理平台,主要是思想,理念,而不是一种技术或框架.整个平台设计,融入了OAUTH2认证,融入了微服务思想,帮助公司各系统在复杂的IT架构下,实现一种便捷统一的调用方案,同时完成调用的管理(监控.注册.鉴权等). 问题 一种思想或理念的出现,是否有价值,我认为主要在于它实际解决了哪些问题.基于这个价值观,我们先看看,当一个公司有成百上千个系统时,会有哪些问题? pi如: 接口访问有没有鉴权?如何鉴权?这个话题很大,归根揭底就是,要让提

PMS权限管理和鉴权过程

一.权限的管理基础知识 1.系统的权限机制分为:权限解析.权限分配.鉴权.动态添加权限 2.PermissionInfo :  PackageParser.Permission中包含一个对应的PermissionInfo,权限信息的表示,其中包含权限等级的定义(NORMAL, DANGER, SIGNERATURE),另外实现了序列化,用户于进程间通信 3. BasePermission : 系统权限的基本表示单元是BasePermission,Settings中维护了一个总的权限映射表mPer

5.4 交易鉴权

5.4.1 账户权限相关概念 权限 EOS采用父子分层的权限结构,低级权限(子权限)由高级权限(父权限)派生而来,父权限拥有子权限所有的能力.子权限能做的事父权限也能做,但是反过来,父权限能做的事,子权限不一定能做. owner 是最高等级权限,拥有owner权限就意味着拥有账户的所有权,我们可以把owner理解为超级管理员权限. active 是owner的子权限,主要用来发送交易.投票或者进行高级别的账户修改操作. 权重 权限拥有者在权限中的重要程度,具体以不小于1的整数表示. 阈值 执行该