大型网站技术架构(一)-技术汇总&实战(部分)

总体架构图

                

                              

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,使用redismemcached

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

      1) 支持Tomcat6Tomcat8     2) 支持黏性sticky session、非黏性no-sticky session

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

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

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

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

     Non-Sticky模式:tomcat session为中转sessionmemcached1为主sessionmemcached 2为备sessionRequest请求到来时,从memcached2加载备sessiontomcat,当容器中还是没有session 则从memcached1加载主sessiontomcat,这种情况是只有一个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 Couldhttp://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平台。

   从201112月开始,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 客户端请求,甚至于对远程后端诸如 MySQLPostgreSQLMemcached 以及 Redis 等都进行一致的高性能响应。

Perl

   《Effective Perl Programming》(由Addison—Wesley出版)、《Learning Perl》、 ProgrammingPerl》、《Intermediate Perl》以及《Mastering Perl


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZArchiver捐赠 ZArchiver捐赠 - 捐赠项目的特殊版本程序。目前只在应用程序图标中与免费版本不同。 ZArchiver捐赠 - ZArchiver的特殊版本,用于捐赠给项目。 专业版的优点: - 浅色和深色主题; - 密码存储; - 存档中的图像预览; - 编辑档案中的文件(见注释); ZArchiver - 是一个档案管理程序。它有一个简单而实用的界面。 ZArchiver让您: - 创建以下存档类型:7z(7zip),zip,bzip2(bz2),gzip(gz),XZ,tar; - 解压缩以下存档类型:7z(7zip),zip,rar,rar5,bzip2,gzip,XZ,iso,tar,arj,cab,lzh,lha,lzma,xar,tgz,tbz,Z,deb,rpm, zipx,mtz,chm,dmg,cpio,cramfs,img(fat,ntfs,ubf),wim,ecm,arc(freearc); - 查看存档内容:7z(7zip),zip,rar,rar5,bzip2,gzip,XZ,iso,tar,arj,cab,lzh,lha,lzma,xar,tgz,tbz,Z,deb,rpm,zipx, mtz,chm,dmg,cpio,cramfs,img(fat,ntfs,ubf),wim,ecm,arc(freearc); - 创建和解压缩受密码保护的档案; - 编辑档案:在档案中添加/删除文件(zip,7zip,tar,apk,mtz); - 创建和解压缩多部分档案:7z,rar(仅解压缩); - 部分档案减压; - 打开压缩文件; - 从邮件应用程序打开存档文件; - 提取拆分档案:7z,zip和rar(7z.001,zip.001,part1.rar,z01); 主要特点: - 多线程支持(对多核处理器有用); - 支持文件名的UTF-8 / UTF-16。允许您在文件名中使用国家符号; - 无需启用多选模式。您可以通过单击文件名左侧的图标来选择文件; 注意!欢迎任何有用的想法和愿望。您可以通过电子邮件发送或只是在这里发表评论。 注意: 存档中的文件修改可以在外部程序中更改文件后更新存档中的文件。要执行此操作:从存档打开文件,选择应用程序(如果需要),编辑文件,保存更改,返回ZArchiver。当您返回ZArchiver时,将提示您更新存档中的文件。如果由于某种原因未提示更新文件,则可以在Android / ru.zdevs.zarchiver.pro / temp /中的存储卡上找到修改后的文件。 迷你FAQ: 问:什么密码? 答:某些档案的内容可能会被加密,档案只能用密码打开(不要使用手机密码!)。 问:程序运行不正常? A:给我发一封电子邮件,详细说明问题。 问:如何压缩文件? 答:通过单击图标(从文件名左侧)选择要压缩的所有文件。单击所选文件之一,然后从菜单中选择“压缩”。设置所需选项,然后按OK按钮。 问:如何提取文件? 答:单击存档名称并选择合适的选项(“在此提取”或其他)。 什么是新的 0.9.0 - 扩展Android 7/8支持; - 7zip更新为lates版本; - LZ4支持; - 修复三星设备; - 支持PIPE格式; - 更新图标和主题; - 其他修复和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值