Java Web架构篇之浅谈大型网站分布式架构

大型网站技术架构概述

Java Web架构篇之浅谈大型网站分布式架构_第1张图片
图片摘自:
大型网站技术架构:摘要与读书笔记

更多:
《大型网站技术架构》——第一章 大型网站架构演化

架构模式

  • 分层:横向切分 – 应用层、服务层、数据层
  • 分割:纵向切分 – 业务切分
  • 分布式: 将不同模块部署在不同的服务器上,通过远程调用协同工作。但是分布式也带来一些问题,分布式存储、分布式事务、分布式锁等
  • 集群:集群部署提高吞吐量、可用性,涉及负载均衡、HA等技术
  • 缓存:缓存提高性能,CDN、本地缓存、分布式缓存等
  • 异步:降低耦合、提高吞吐量、流量削峰等
  • 冗余:服务冗余、数据库表字段冗余,服务冗余提高系统可用性、字段冗余降低查询复杂度
  • 自动化:发布过程自动化(自动化代码管理、自动化测试、自动化安全检测、自动化部署)、
    运行过程自动化(自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级(通过拒绝部分请求及关闭部分不重要的服务将系统负载降至一个安全的水平)、自动化分配资源)

参考:
《大型网站技术架构》——第二章 大型网站架构模式

核心要素

  • 性能:快速响应,主要手段是异步、使用缓存等,MQ消息传递实现异步,应用层、服务层、数据层均可以使用缓存。
  • 可用:主要手段是数据和服务的冗余备份及失效转移,服务及数据备份、服务降级等。
  • 伸缩性:指的是通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。主要手段是服务集群。
  • 扩展性:指的是快速响应需求变化。架构方面,主要手段为事件驱动架构(消息服务)、业务与可复用基础服务分离。设计方面,考虑可扩展性,需要在需求设计时兼容可以预料的业务扩展场景、接口设计时兼容扩展场景且通用化、代码设计时遵循开闭等面向对象原则并合理应用设计模式,以便在业务扩展时能够快速响应。
  • 安全:安全架构,考虑一切安全风险,如防止XSS、SQL注入、CSRF攻击、加解密、黑白名单、权限管理、安全日志等。

参考:
《大型网站技术架构》——第三章 大型网站核心架构要素

高性能

性能指标

  • 响应时间
  • 并发数
  • 吞吐量

优化手段

  • Web前端性能优化 (浏览器访问优化(减少HTTP请求、浏览器缓存、启用压缩)、CDN加速、反向代理)
  • 应用服务器性能优化(分布式缓存、异步、集群、代码优化(多线程、资源复用、数据结构))
  • 数据存储优化(固态硬盘、B+树、LSM树(NoSQL)(LSM树存储模型)、RAID、HDFS)

参考:
《大型网站技术架构》——第四章 瞬时响应:网站的高性能架构
B+树和LSM比较

高可用

  • 应用层高可用:通过负载均衡、心跳检测等技术,在一个应用服务器无法正常运行时,进行失效转移。涉及分布式session等问题。
  • 服务层高可用:也是利用集群,但是需要借助分布式服务调用框架。服务层的服务器被应用层通过分布式服务调用框架访问,分布式服务调用框架会在应用层客户端程序中实现软件负载均衡, 并通过服务注册中心对提供服务的服务器进行心跳检测,发现有服务不可用,立即通知客户端程序修改服务访问列表,剔除不可用的服务器。需要考虑的策略包括:分级管理、超时设置、异步调用、服务降级、幂等性设计等
  • 数据层高可用:分布式文件系统与分布式数据库,核心都是冗余加失效转移。需要考虑一致性等问题。
  • 软件质量保证:自动化测试、预发布验证、代码控制、自动化发布、灰度发布等、
  • 网站运行监控:用户行为日志、服务器性能监控、运行数据报告

参考:
《大型网站技术架构》——第五章 万无一失:网站的高可用架构

伸缩性

  • 网站架构的伸缩性设计:功能横向与纵向切分、单一功能集群部署
  • 应用服务的伸缩性设计:服务无状态,集群部署。涉及负载均衡技术,主要包括:HTTP重定向负载均衡、DNS域名解析负载均衡、反向代理负载均衡、IP负载均衡、数据链路层负载均衡。
  • 分布式缓存集群的伸缩性设计:分布式缓存集群,如redis集群、memcached一致性hash方式部署集群。
  • 数据存储服务器集群的伸缩性设计:数据库主从复制,读写分离,数据库分库分表等

参考:
《大型网站技术架构》——第六章 永无止境:网站的伸缩性架构

扩展性

  • 网站架构的可扩展性:模块化, 并在此基础之上, 降低模块间的耦合性,提高模块的复用性。
  • 分布式消息队列:系统的耦合性,事件驱动架构等。
  • 分布式服务:服务纵向与横向拆分,依赖服务治理框架(服务注册与发现、服务调用、负载均衡、失效转移、高效远程通信、整合异构系统、版本管理、对应用最小侵入、实时监控等)

安全

  • 攻击与防御:防XSS、SQL注入、CSRF攻击等、防火墙、漏洞扫描等
  • 加密和密钥管理:高强度加解密算法、密钥管理
  • 信息过滤与反垃圾:文本匹配、分类算法、黑白名单等
  • 电子商务风险控制:交易风险控制等

参考:
网站技术架构学习整体贴-《大型网站技术架构》
分布式框架能力(应用综合管理平台)思考

你可能感兴趣的:(Java,Web知识总结)