Ethan's Blog


  • Home

  • Archives

  • Tags

  • Search

异步与通讯

Posted on 2020-01-17

异步(Asynchronism)

异步工作流有助于减少那些原本顺序执行的请求时间。它们可以通过提前进行一些耗时的工作来帮助减少请求时间,比如定期汇总数据。

消息队列

消息队列接收、保留和传递消息。如果按顺序执行操作太慢的话,你可以使用有以下工作流的消息队列:

  • 应用程序将作业发布到队列,然后通知用户作业状态;
  • 一个 worker 从队列中取出该作业,对其进行处理,然后显示该作业完成;

不去阻塞用户操作,作业在后台处理。在此期间,客户端可能会进行一些处理使得任务看上去像是已经完成了。例如,如果要发送一条推文,推文可能会马上出现在你的时间线上,但是可能需要一些时间才能将你的推文推送到你的所有关注者那里去。

Redis 是一个令人满意的简单的消息代理,但是消息有可能会丢失。

RabbitMQ 很受欢迎但是要求你适应 AMQP 协议,并且管理你自己的节点。

Amazon SQS 是被托管的,但可能具有高延迟,并且消息可能会被传送两次。

Read more »

数据库

Posted on 2020-01-15

关系型数据库管理系统(RDBMS)

像 SQL 这样的关系型数据库,是一系列以表的形式组织的数据项集合。

ACID 用来描述关系型数据库事务的特性:

  • 原子性(Atomicity):每个事务内部所有操作要么全部完成,要么全部不完成;
  • 一致性(Consistency):任何事务都使数据库从一个有效的状态转换到另一个有效状态;
  • 隔离性(Isolation):并发执行事务的结果与顺序执行事务的结果相同;
  • 持久性(Durability):事务提交后,对系统的影响是永久的。

关系型数据库的扩展,包括许多技术:主-从复制、主-主复制、联邦、分片、非规范化和 SQL 调优。

主-从复制

主库同时负责读取和写入操作,并复制写入到一个或多个从库中,从库只负责读操作。树状形式的从库再将写入复制到更多的从库中去。如果主库离线,系统可以以只读模式运行,直到某个从库被提升为主库或有新的主库出现:

Read more »

反向代理与应用层

Posted on 2019-12-28

反向代理

Reverse Proxy 是一种可以集中调用内部服务,并提供统一公共接口的 Web 服务器。来自客户端的请求先被反向代理服务器转发到可响应请求的服务器,然后再把服务器的响应结果返回给客户端。

带来的好处包括:

  • 增加安全性:隐藏后端服务器的信息,屏蔽黑名单中的 IP,限制每个客户端的连接数;
  • 提高可扩展性和灵活性:客户端只能看到反向代理服务器的 IP,这使你可以增减服务器或修改它们的配置;
  • SSL 终结:解密传入的请求并加密服务器响应,这样的话后端服务器就不必再执行这些潜在高消耗运算了(不需要再每台服务器上安装 X.509);
  • 压缩:压缩服务器响应;
  • 缓存:直接返回命中的缓存结果;
  • 静态内容:直接提供静态内容(HTML/CSS/JS、图片、视频等)。

反向代理与负载均衡

  • 当你有多个服务器时,部署负载均衡器非常有用。通常,负载均衡器将流量路由给一组功能相同的服务器上;
  • 即使只有一台 Web 服务器或应用服务器时,反向代理也同样有用;
  • Nginx 和 HAProxy 等解决方案,可以同时支持七层反向代理和负载均衡。
Read more »

负载均衡器

Posted on 2019-12-25

Load Balancer 将传入的请求分发到应用服务器和数据库等计算资源。无论哪种情况,负载均衡器将来自计算资源的响应,返回给恰当的客户端。负载均衡器的效用在于:

  • 防止请求进入不好的服务器
  • 防止资源过载
  • 帮助消除单一的故障点

负载均衡器可以通过硬件(昂贵)或 HAProxy 等软件来实现。 增加的好处包括:

  • SSL 终结:解密传入的请求并加密服务器响应,这样的话后端服务器就不必再执行这些潜在高消耗运算了(不需要再每台服务器上安装 X.509);
  • Session 留存:当 Web 应用程序不追踪 session 时,发出 cookie 并将特定客户端的请求,路由到同一实例。
Read more »

域名系统与内容分发网络

Posted on 2019-12-21

域名系统

Domain Name System(DNS)将 www.example.com 等域名转换成 IP 地址:

域名系统是分层次的,一些 DNS 服务器位于顶层。当查询(域名)IP 时,路由或 ISP 提供连接 DNS 服务器的信息。较底层的 DNS 服务器缓存映射,它可能会因为 DNS 传播延时而失效。DNS 结果可以缓存在浏览器或操作系统中一段时间,时间长短取决于 TTL(Time To Live):

  • NS 记录(域名服务):指定解析域名或子域名的 DNS 服务器;
  • MX 记录(邮件交换):指定接收信息的邮件服务器;
  • A 记录(地址):指定域名对应的 IP 地址记录;
  • CNAME(规范):一个域名映射到另一个域名,或映射到一个 A 记录。
Read more »
1…424344…55
necusjz

necusjz

274 posts
16 tags
© 2016 - 2025 necusjz
Powered by Hexo
Theme - NexT.Mist