• 缓存与消息队列


    服务器在负载较重时使用的基本技术:缓存&消息队列

    前边的章节介绍了套接字API,Python中使用基础IP网络操作构建信道的方式

    之后将讨论构建在套接字上的特定协议

    编写优雅的服务,解决特定的问题——机构内部特有的

    HTTP针对特定的负载设计(超文本文档)

    Memcached:内存缓存守护进程。结合服务器上的空闲RAM与LRU(last recently use)缓存

    使用Memcached

    在每台空闲内存的服务器上运行Memcached进程

    Memcached守护进程的IP地址与端口号列出(列表)——发送给所有将使用Memcached的客户端

    客户端可以访问一个组织极的,速度极快的键值缓存(Python字典)

    目的:将重复计算,花销大的计算结果保存

    数据库查询,文件系统读写,外部服务读写

    决定信息在缓存中的保存时间

    重启后丢失

    脏数据:

    1.设定过期时间

    2.信息标识到包含标识的键的映射

    3.记录不可用:覆写,而不是删除。程序首次启动时预安装缓存

    装饰器实现缓存

    8.2 散列与分区

    当Memcached客户端包含了多个Memcached实例的列表,会根据每个键的字符串值的散列值对Memcached数据库进行分区。

    计算出的散列值决定使用集群中的具体服务器

    避免冗余,避免不同服务器之间的协同操作

    解决方案:所有服务器实现相同的稳定算法

    消除原数据的分布规律(随机),避免依赖输入数据中的模式。模式消除

    8.3消息队列

    允许发送可靠的数据块——消息。保证消息可靠自动传输。

    负责封帧

    TCP:基于IP点对点

    消息队列:允许多个拓扑结构

    可作为自定义远程过程调用服务(RPC)的基础

      前端服务器将工作交给后端服务器完成:前端将请求加入消息队列,后端监听消息队列,处理请求返回响应

    集中存储小型有效消息(大容量事件数据)

    具有混合安排并匹配所有客户端与服务器的能力。并连接到同一消息队列。

    单一目的的机器,将机器集合到集群,共同提供某个服务。

    拓扑结构:

    管道:生产者,消费者

    发布者,订阅者

    请求,响应:消息需要往返,保持连接。队列需要提供寻址模式

    允许服务器绑定,解绑

    大量运行多个轻量级线程,与数据库客户端、文件服务器连接。

    最流行的消息队列:被实现为独立的服务器

    所有组件绑定到消息队列:生产者,消费者,过滤器,RPC服务

    AMQP协议:跨语言消息队列协议

    每个线程创建一个或多个用于通信的套接字,试图让两个线程共享一个消息套接字:不安全

    线程间共享共同上下文对象(context)保证所有线程存在于同一个URL和消息队列空间内

    消息机制隐式的为请求自动添加返回地址供代理完成后返回

    实际情况:保证无法处理的消息被持久化保存。

    流量控制,保证速度慢的时候也能处理消息队列中的消息。

  • 相关阅读:
    C#2.0 对AD的简单操作
    启用sqlclr
    项目管理杂谈
    使用目录服务和 Visual C# .NET 向本地系统添加用户
    CSS HACK
    Web2.0设计师工具箱资源网站集锦
    Cookie 的基本知识
    精妙sql语句二
    分页存储过程
    js常用函数
  • 原文地址:https://www.cnblogs.com/qmcj/p/9215070.html
Copyright © 2020-2023  润新知