网站架构要素

"系统架构关注点及其实践"

Posted by echola on August 20, 2018

网站架构要素

image

性能

现象
  • 网站慢,响应时间,TPS
    最佳实践:

    浏览器

  • 浏览器缓存、页面压缩、减少cookie传输,减少http请求,合并CSS,图片,JS,启用压缩

网络

  • CDN,反向代理,缓存热点文件

服务器

  • 缓存数据(分布式缓存、服务器本地缓存)
  • 异步操作
  • 通过消息消除峰值
  • 多线程:主要包括将对象设计为无状态对象;使用局部变量;并发访问资源时使用锁;使用线程池来减少创建线程带来的消耗
  • 内存优化:通过对象池减少对象穿件和资源消耗,例如数据库连接池;注意对象引用导致的垃圾回收:年轻代(Eden ,From,To)[Young GC],年老代[Full GC]

数据库

  • 建立索引、缓存,SQL优化,分库分表;根据具体场景使用不同类型的数据库。

可用性

可用性主要指系统的总可用时间,包括 计算高可用和存储高可用

解决方法:
  • 冗余,服务部署多台,出现故障的从路由中移除
    实践经验
  • 分级管理、服务隔离、优先响应
  • 超时设置
  • 服务降级

    伸缩性:

    主要指可以通过不断向集群中加入新的服务器来缓解访问压力

    主要指标:
  • 是否很容易的将新服务器加入到集群
  • 新的服务器是否能够提供无差别的服务
    技术点:
  • 应用服务器集群:无状态,
  • 缓存服务器集群:改进缓存路由算法
  • 数据库集群:分库分区

    扩展性:

    良好的扩展性主要表现在系统架构能快速响应需求变化

    最佳实践:
  • 事件驱动架构:通过消息队列来解耦各个业务子系统
  • 分布式服务:将业务和可复用服务分离