前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可扩展web架构设计

可扩展web架构设计

原创
作者头像
J_J
发布2019-04-16 09:31:29
7080
发布2019-04-16 09:31:29
举报
文章被收录于专栏:每周一脱topic每周一脱topic

《Scalable Web Architecture and Distributed Systems》一文阐述了现代web架构的设计原则,并用由浅到深的案例总结了如何去做设计。看了下做下总结。

在设计高性能web架构时,我们需要考虑的几个点:

  • Availability,可用性。大型网站和分布式系统对可用性的要求一般都非常高,这是基本的技术要求。还包括异常恢复机制、回退机制等。
  • Performance,性能。访问网站的速度,并发的数量等等,网站的性能也非常重要。
  • Reliability,可靠性。成功上传的资料要确保不会丢失,相同的请求不会又二义性。
  • Scalability, 可扩展性。系统能处理多少额外的流量,扩展的难度大小等等。
  • Manageability,易于管理。网站足够人性化,方便操作。也包含升级等操作的容易程度。
  • Cost,费用。整套系统的费用。

小型项目简单的lamp这样已经足够。

几块提高性能的方法:

  • Caches,缓存

通过在请求层将数据加入cache,命中的请求将不用再去后台data层查询,减少io时间。

当扩展为多个node时,每个node都有自己的cache。

如果外部负载均衡随机分发请求,那么cache命中将降低。有全局缓存的2个方案可以尝试:

  • Global Cache,全局缓存

所有的node先去全局缓存去查,当数据不在缓存中时,缓存会去data层拉,再由cache返回数据。

另一种方案是,所有的node先去全局缓存去查,当数据不在缓存中时,node再发请求去data层拉,再由cache返回数据。

一般更倾向选第1种,毕竟第2种对相同请求可能降低命中率,同时增加了data层的负载。但有些情况也会考虑2,例如大文件cache的数量少等。

  • Distributed Cache,分布式缓存

每个node都拥有部分缓存。有个好处是增加缓存只需要增加node,但不好的是增加了缓存管理难度。

  • Proxies,代理

代理可以平滑流量,对于大量相同请求再加上cache,可以提高性能。

很多请求相邻数据时,proxy还可以一次拉回一批数据,这样对整个性能提升较多。

  • Indexes,索引

书可以有目录,大量数据可以有索引,它们是相似的。

  • Load Balancers,负载均衡

负载均衡可以把请求分发给业务,采用随机等策略。也可以分发给不同的负载均衡。

其中一个挑战是,session问题。一个请求分到某个node做了操作,下一次不是相同node怎嘛办?一种办法是相同用户的请求转发给相同node,自然session是相同的。但node失效等时候回带来麻烦。还可以考虑全局session、 browser caches, cookies, and URL rewriting等等来解决。

  • Queues,队列

通过将请求任务放入队列,服务端从队列中获取任务处理,这样的模式会极大提高服务端的处理能力、耗时任务的处理延时,在后台中有较多的使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档