zoukankan      html  css  js  c++  java
  • 异步通信,rpc通信的笔记

    加密

    rpc通信,现在很多使用事件源的方式或者类似的方式。通过消息队列来传递事件,然后有消费端处理事件。 对于执行结果,则保存到另外的队列中去。这里有个问题,队列是有序的,客户端查询的结果可能不是有序的,所以,一般会通过加一个事件的guid来解决。但是一般相同的查询条件,结果应该一般是相同的(不考虑过期)。这点和插入不同,插入相同的数据,返回的主键是不同的。 所以会一部分浪费。

    例如 1 客户a 插入产品1,同时客户2也插入产品1.
    2 2个插入操作到事件队列中去
    3 服务消费事件,执行插入产品到数据库操作。
    4 服务将结果的记录id保存到结果队列
    5 客户查询插入结果(根据插入时的guid)

    这样的情况一般的时候是没问题。

    考虑另外的情况,查询
    1 客户a 查询产品1,同时客户2也查询产品1.
    2 2个查询操作到事件队列中去
    3 服务消费事件,执行查询。
    4 服务将结果保存到结果队列
    5 客户查询插入结果(根据插入时的guid)
    这样就会有2个查询结果。

    解决办法:
    所有查询类的方法(非插入,修改,删除),同样的参数返回相同的结果,定期过时。
    就是把用户请求的参数做md5,得到16位或32位密文,然后用密文做key。将结果保存到对应的redis缓存,这样同样的参数的查询,结果只有一个,减少空间,和提高性能。同时,还不受查询的顺序影响。


    作者:过错
    出处:http://www.cnblogs.com/wang2650/
    关于作者:net开发做的久而已。十余年时光虚度!
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com  联系我,非常感谢。

  • 相关阅读:
    使用Xshell为xftp开ssh通道代理
    linux下查找svn的相关目录的命令
    linux服务器A远程连接服务器B的mysql及1045错误
    怎样下载带权限认证的文件?
    Vue项目打包部署总结
    Vue项目打包压缩:让页面更快响应
    axios请求失败自动重发
    可用的后台管理系统
    vue组件间方式总结
    非脚手架创建vue项目,并使用webpack打包
  • 原文地址:https://www.cnblogs.com/wang2650/p/14609201.html
Copyright © 2011-2022 走看看