设计一个敏感词过滤模块或系统
jerry1985
2012-03-28
在一家B2B的公司面试时遇到一个这样的问题,可是我觉得这个跟系统架构设计关系不大,而跟算法的优劣有关。可能是我的功力太浅薄吧。希望群里的大师们能谈谈自己的看法和思路。
![]() 个人的想法是提供一个敏感词过滤服务,服务采用同步(请求响应)的方式接收待过滤的文字,服务内部使用多线程搭配高性能的算法对请求的内容进行处理,并返回处理后的文字。(是不是有点太简单了? ![]() |
|
weiqiang.yang
2012-04-01
做异步吧,搞个队列抄送数据,让他们准备回调接口~
搞成同步应用都要依赖你的服务,万一挂了那不是悲剧了 |
|
jerry1985
2012-04-02
weiqiang.yang 写道 做异步吧,搞个队列抄送数据,让他们准备回调接口~
搞成同步应用都要依赖你的服务,万一挂了那不是悲剧了 言之有理,多谢指点. |
|
凤舞凰扬
2012-05-22
weiqiang.yang 写道 做异步吧,搞个队列抄送数据,让他们准备回调接口~
搞成同步应用都要依赖你的服务,万一挂了那不是悲剧了 楼上考虑得很好,我们在做一个服务的时候,需要考虑这个服务是否会对主业务造成影响。其实淘宝也是这么处理的。对于非业务的行为,都会采取异步,从而避免因为系统原因成为业务瓶颈。 当然,从内部实现来说,多线程并行调度来进行词过滤是可以的技术方案 |
|
jerry1985
2012-05-23
凤舞凰扬 写道 weiqiang.yang 写道 做异步吧,搞个队列抄送数据,让他们准备回调接口~
搞成同步应用都要依赖你的服务,万一挂了那不是悲剧了 楼上考虑得很好,我们在做一个服务的时候,需要考虑这个服务是否会对主业务造成影响。其实淘宝也是这么处理的。对于非业务的行为,都会采取异步,从而避免因为系统原因成为业务瓶颈。 当然,从内部实现来说,多线程并行调度来进行词过滤是可以的技术方案 多谢指点。 |
|
javamonkey
2012-05-23
jerry1985 写道 凤舞凰扬 写道 weiqiang.yang 写道 做异步吧,搞个队列抄送数据,让他们准备回调接口~
搞成同步应用都要依赖你的服务,万一挂了那不是悲剧了 楼上考虑得很好,我们在做一个服务的时候,需要考虑这个服务是否会对主业务造成影响。其实淘宝也是这么处理的。对于非业务的行为,都会采取异步,从而避免因为系统原因成为业务瓶颈。 当然,从内部实现来说,多线程并行调度来进行词过滤是可以的技术方案 多谢指点。 使用线程达到异步效果,造成的问题是如果主业务处理的比较快,那么,非主业务就会挤压很多,那你如何管理这些挤压?譬如,任何时间重启服务器。 敏感词过滤,我觉得要么同步,要么还是事后采用批量过滤的方式 |
|
凤舞凰扬
2012-10-17
javamonkey 写道 jerry1985 写道 凤舞凰扬 写道 weiqiang.yang 写道 做异步吧,搞个队列抄送数据,让他们准备回调接口~
搞成同步应用都要依赖你的服务,万一挂了那不是悲剧了 楼上考虑得很好,我们在做一个服务的时候,需要考虑这个服务是否会对主业务造成影响。其实淘宝也是这么处理的。对于非业务的行为,都会采取异步,从而避免因为系统原因成为业务瓶颈。 当然,从内部实现来说,多线程并行调度来进行词过滤是可以的技术方案 多谢指点。 使用线程达到异步效果,造成的问题是如果主业务处理的比较快,那么,非主业务就会挤压很多,那你如何管理这些挤压?譬如,任何时间重启服务器。 敏感词过滤,我觉得要么同步,要么还是事后采用批量过滤的方式 不是太清楚你的问题,如果只是任何时间重启服务器,完全可以发结束指令,等待线程结束(类似于阀门模式)。 |