大型网站技术架构-技术汇总

5 篇文章 0 订阅

总体架构图
                 
                               

1 加速网站响应
  反向代理(Reverse Proxy)和CDN(Content Delivery Network内容分发网络),

     CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求,一般部署在网络提供商机房中。

      反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。

      CDN缓存服务器现状科普 https://blog.csdn.net/charleslei/article/details/50879908

  代理服务器科普&Nginx反向代理科普  https://blog.csdn.net/daybreak1209/article/details/51549031

      Squid基于Linux开源反向代理器 (官网http://www.squid-cache.org)

      Nginx反向代理实例配置 https://blog.csdn.net/jun55xiu/article/details/80570221

      Nginx+ lua反向代理动态更新 https://www.cnblogs.com/shihuc/p/8044753.html

      Nginx+Lua(OpenResty)高性能Web应用 https://www.jianshu.com/p/36f1955edb8b

2 负载均衡
  将用户请求负载、均衡分发至应用服务器集群,解决高并发的用户访问量。

      Nginx负载均衡实例配置: https://blog.csdn.net/jun55xiu/article/details/80570221

      LVS[Linux Virtual Server]+Keepalived负载均衡服务器:

              https://www.cnblogs.com/liwei0526vip/p/6370103.html

              https://www.cnblogs.com/yanxinjiang/p/7905011.html

       LVS创始人章文嵩 http://jm.taobao.org/2016/06/02/zhangwensong-and-load-balance/

       Keepalived+Nginx+Tomcat双主模式负载均衡服务器 http://blog.csdn.net/apei830/article/details/78685885

       Keepalived+Nginx+Tomcate主备模式负载均衡服务器 http://blog.csdn.net/apei830/article/details/78685855

3 应用服务器集群
  提高网站并发处理能力,解决高并发。

     Nginx + Tomcat 集群配置 见上述章节

     Apache2.2 + Tomcat6 集群配置点击打开链接

     Apache2.4.6+Tomcat7集群配置点击打开链接

  应用服务器集群Session管理方案:

     1) session共享: 缓存session,使用redis, memcached

       开源项目:tomcat-redis-session-manager

             Tomcat8参考配置 点击打开链接

             Tomcat7参考配置 点击打开链接

     2) Session服务器(集群)统一管理: session信息存放到session集群服务器组。当应用系统需要session信息的时候直接到session群集服务器上读取。目前大多都是使用Memcache来对Session进行存储。如图:

 

   参考配置一  http://chenzhou123520.iteye.com/blog/1650212

   参考配置二  http://blog.51cto.com/732233048/1909682

   参考配置三 https://yq.aliyun.com/articles/476166?spm=a2c4e.11163080.searchblog.38.54942ec1duzbQ5

        memcached-session-manager(MSM)是一个用于解决分布式tomcat环境下session共享的问题的开源解决方案。它的实现原理为以tomcat插件的方式部署在服务器,修改了servlet容器代码中的session相关代码,使其连接memcached,在memcached中创建和更新session。MSM拥有如下特性:

      1) 支持Tomcat6至Tomcat8     2) 支持黏性sticky session、非黏性no-sticky session

      3) 无单一故障点                     4) 可处理tomcat故障转移              5) 可处理memcached故障转移

      6) 插件式session序列化         7) 允许异步保存session,以提升响应速度

      8) 只有当session有修改时,才会将session写回memcached            9) JMX管理&监控

     Sticky 模式:tomcat session为主session, memcached为备session。Request请求到来时, 从memcached加载备session到tomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。

     Non-Sticky模式:tomcat session为中转session, memcached1为主session,memcached 2为备session。Request请求到来时,从memcached2加载备session到tomcat,当容器中还是没有session 则从memcached1加载主session到tomcat,这种情况是只有一个memcached节点,或者有memcached1出错时,Request请求结束时,将tomcat session更新至主memcached1和备memcached2,并且清除tomcat session ,以达到主备同步之目的。

  优点:不用考虑session共享问题,可专注于程序开发,不用显示编写代码,只需对服务器进行配置即可。

  缺点:如想改变session策略,必须重新部署每个服务器的servlet容器。

4 分布式缓存
  存储20%数据。网站访问2/8原则,80%业务集中在20%数据上,减少数据库访问压力,提高网站数据访问速度。

     EhCache 实例:https://blog.csdn.net/jun55xiu/article/details/38492127

     Redis集群&虚拟槽分区https://www.cnblogs.com/hjwublog/p/5681700.html

     Redis 哨兵模式 https://blog.csdn.net/a67474506/article/details/50435498

                             https://blog.csdn.net/shouhuzhezhishen/article/details/69221517

                             https://blog.csdn.net/pi9nc/article/details/17735653

  分布式缓存的一致性Hash算法:

              https://blog.csdn.net/Jerome_s/article/details/52492862

              https://blog.csdn.net/cywosp/article/details/23397179

  淘宝开源Tair分布式存储引擎(源代码C++,官网没维护手册)

    部署 https://www.cnblogs.com/lengfo/p/4171655.html 

    资料 https://wenku.baidu.com/view/57d52927ec3a87c24128c47e.html

            JAVA客户端 https://github.com/alibaba/tair-java-client

5 数据库集群
   防止数据库由数据量过大产生过高的负载压力,主从热备模式(主数据写->同步->从数据库读取数据)。

        Mysql集群和主从区别 https://blog.csdn.net/wutian713/article/details/50682360

        Mysql主从[主]模式 http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7

        Mysql数据同步Redis方案中间件canal 

                 http://www.cnblogs.com/duanxz/p/5062833.html

                 https://github.com/alibaba/canal

                 https://blog.csdn.net/tb3039450/article/details/53928351

   分布式关系数据库中间件 Mycat

                Mycat资料 点击打开链接  点击打开链接   点击打开链接 

           点击打开链接  点击打开链接

6 业务拆分
   将业务拆分成产品线,按产品线在应用服务器集群分离、独立部署。即服务和功能纵向维度分割,如首页、商铺、订单、卖家等分割成不同的应用,应用间可采用消息队列实现关联数据的通信。

7 分布式服务(图1.10)
   在图1.7基础上,按业务拆分成产品线(如首页、商铺、订单、卖家),各产品线在各自应用服务器集群分离、独立部署,势必产生大量应用系统(产品线),以及大量与数据库系统连接数,最终会导致数据库连接资源不足,拒绝服务。

   为缓解此种情况,在应用系统(产品线)与数据库系统间加入、部署提供分布式服务的服务器,提取访问数据库或其它的共用业务服务,提高业务连接数据库和业务的复用性。通过分布式服务调用共用业务服务完成应用系统(产品线)具体业务操作。如微博的核心服务是微博、关系和用户,分割成独立的服务模块,每个模块部署在一组独立的服务器集群上。

  注意:分布式服务是由系列共用业务服务调用、组合,每个共用业务服务可独立、集群式部署,类似于微服务。

    微服务框架 Spring Could见http://blog.didispace.com/micro-serivces-arch/

8 异步
   异步消息队列如下特性:1)提高系统可用性。消费者服务器宕机重启后,可继续读取消息队列内的数据。2)加快网站响应速度。3)消除并发访问高峰。

    如微博中应用场景:用户发表微博后,系统只会给已被关注的粉丝们实时推送微博消息,其它所有微博用户(如浏览用户)则会在以后某个时间点逐步推送微博消息。

   消息中间件Kafka    https://blog.csdn.net/lizhitao/article/details/23743821

                                      http://orchome.com/kafka/index

                                      https://blog.csdn.net/vinfly_li/article/details/79397201

9 冗余
   保证网站7*24小时连续运行,就需要一定程度的服务器冗余运行、数据冗余备份。数据库需要定期备份、存档保存,实现冷备份外,为保证线上业务高可用,还需要对数据库进行主从分离,实时同步实现热备份。

10自动化
       发布过程自动化、代码管理自动化、自动化测试、自动化安全检测、自动化部署、自动化监控(报警)、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源。

11安全
      网站在安全架构方面积累相应模式:身份验证-密码和手机校验码、加密、过滤、风险控制、多级安全审核。

核心要素
  性能、可用性、伸缩性、扩展性、安全性

重要文档
    Nginx
    章亦春教程:https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

    入门到精通:http://tengine.taobao.org/book/

Tengine
   由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

   从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。

   版   本:http://tengine.taobao.org/

   中文文档:http://tengine.taobao.org/documentation_cn.html

OpenResty
   创始人之一章亦春Github地址:https://github.com/agentzh,官网:http://openresty.org/en/

        OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

        OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

        OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

Perl
   《Effective Perl Programming》(由Addison—Wesley出版)、《Learning Perl》、 《ProgrammingPerl》、《Intermediate Perl》以及《Mastering Perl》
————————————————
版权声明:本文为CSDN博主「陈鋆」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jun55xiu/article/details/80830627

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大型网站架构演化 大型网站软件系统的特点 大型网站架构演化发展历程 初始阶段 应用服务和数据服务分离 使用缓存改善网站性能 缓存类型 本地缓存 分布式缓存 缓存产品 redis 业界主流 memcached 解决问题 数据库访问 使用应用服务器集群改善网站的并发处理能力 问题: 负载均衡情况下session状态的保持? 解决方案: 基于DNS的负载均衡 反向代理 ngix JK2 数据库的读写分离 问题: 读库与写库的数据同步 解决方案: 不同的数据库都有自己的数据库的主从复制功能 使用反向代理与CDN加速网站响应 反向代理产品 ngix 使用分布式文件系统和分布式数据库系统 使用no-sql和搜索引擎 站内搜索 lucene nutch 分词器 no-sql库 mongodb hadoop 业务拆分 web service restful 分布式服务 大型网站架构演化的价值观 核心价值:随网站所需灵活应对 驱动力量:网站的业务发展 网站架构设计误区 一味追随大公司的解决方案 为技术技术 企图用技术解决一切问题 大型网站架构模式 架构模式 分层 分割 分布式 分布式应用和服务 分布式静态资源 分布式数据和存储 分布式计算 集群 缓存 CDN 反向代理 本地缓存 分布式缓存 异步 冗佘 冷备份 主从分离,实时同步实现热备份 灾备数据中心 自动化 发布过程自动化 ant maven. 自动化代码管理 svn cvs github 自动化测试 loadrunner hudson. 自动化安全测试 自动化部署 自动化报警 自动化失效转移 自动化失效恢复 自动化降级 自动化分配资源 安全 密码和手机校验码 数据库中的密码加密后存 -> 不可ni -> md5 加密 子主题 1 验证码 防止机器登录 对于攻击网站的XSS攻击,SQL注入,进行编码转换 对垃圾信息,敏感信息进行过滤 对交易转账等重要操作根据交易模式和交易信息进行风险控制 Sina微博的应用 大型网站架构要素 性能 可用性 伸缩性 扩展性 安全性 瞬时响应:网站的高性能架构 网站的性能测试 不同的视角 用户的视角 开发人员的视角 运维人员的视角 性能测试指标 响应时间 并发数 吞吐量 性能测试方法 性能测试 负载测试 压力测试 稳定性测试 web 前端性能优化 浏览器优化 减少http请求 使用浏览器缓存 启用压缩 css上,js下 减少cookie传输, 静态资源使用独立域名访问 CDN加速 反向代理 应用服务器性能优化 分布式缓存 缓存的原理 合理使用缓存 频繁修改的数据 没有热点的访问 数据不一致和脏读 缓存可用性 缓存预热 缓存穿透 缓存架构 jboss cache为代表的需要更新同步的分布式级缓存 以memcached为代表的不互相通信的分布式缓存 异步操作 使用集群 代码优化 多线程 资源复用 单例 对象池 数据结构 垃圾回收 存储性能优化 固态硬盘 RAID与HDFS 万无一失:网站的高可用性 高可性的度量与考核 度量 考核 高可用的网站架构 高可用的应用 高可用的服务 高可用的数据 CAP原理 数据备份 失效转移 高可用网站的软件质量保证 网站发布 自动化测试 预发布验证 代码控制 自动化发布 灰度发布 网站运行临控 临控数据采集 临控管理 永无止境:网站的可伸缩性 网站架构的伸缩性设计 不同功能进行物理分离实现伸缩 单一功能通过集群规模实现伸缩 应用服务器集群的伸缩性设计 http重定向负载均衡 DNS域名解析负载均衡 反向代理负载均衡 ip负载均衡 数据链路层负载均衡 负载均衡算法 分布式缓存集群的伸缩性设计 memcached分布式缓存集群的访问模型 memcached分布式缓存集群的伸缩性挑战 分布式缓存的一致性hash算法 数据存储服务器集群的伸缩性设计 关系数据库集群的伸缩性设计 nosql数据库的伸缩性设计 随需应变:网站的可扩展性 构建可扩展的网站架构 利用分布式消息队列降低系统耦合性 事件驱动架构 分布式消息队列 利用分布式服务打造可复用的业务平台 web service与企业级分布式服务 大型网站分布式服务的需求与特点 分布式服务框架设计 可扩展的数据结构 利用开放平台建设网站生态圈 固若金汤:网站的安全架构 网站应用攻击与防御 XSS攻击 反射型 持久型 防御方法 消毒 httponly 注入攻击 SQL注入攻击 攻击前提 获取数据库结构的方法 防御方法 消毒 参数绑定 OS注入攻击 CSRF攻击 防御方法 表单token 验证码 referer check 1. 网络流量统计 2. 防盗链 error code html注释 文件上传 web应用防火墙 modsecurity NEC的 siteshell 网站安全漏洞扫描 信息加密技术及密钥安全管理 案例: CSDN 信息加密技术分类 单项散列加密 对称加密 非对称加密 密钥安全管理 将密钥和算法放在一个独立的服务器上,对外提供加密和解密服务 密钥放在独立服务器中,算法放在应用程序中。 信息过滤与反垃圾 文本匹配_敏感词过滤 正则表达式 trie树 双数组trie树 多级Hash表 信息降噪 分类算法_内容识别 黑名单 电子商务风险控制 风险 账户风险 买家风险 卖家风险 交易风险 风控 人工 自动 规则引擎 统计模型 案例 网购秒杀系统架构 网购秒杀系统架构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值