• 大型B/S系统技术总结(不断更新)


    看了《淘宝技术这十年》和《大型网站系统与Java中间件实践》这些书,对大型B/S系统的构建越来越感兴趣,于是尝试收集和总结一些常用的技术手段。不过大型网站的架构是根据业务需求不断完善的,需要结合自身特点做特定的设计和考虑。

    缓存:

      本地缓存:OSCache

      分布式缓存:Memcached、Redis、Tair(淘系)

    数据库:

      读写分离:通过主备功能实现数据同步

      分库分表:TDDL(淘系)

        数据库水平拆分:同一张表拆分,比如usr表,拆分数据量太大的表

        数据库垂直拆分:根据业务,把不同的表放到不同的数据库里

    服务器:

      CDN:蓝汛、网宿运营商

      反向代理:Squid,Nginx

      负载均衡:

        硬件解决方案:F5

    分布式文件系统:NFS、TFS(淘系)

        软件解决方案(#1):LVS、Nginx、HAProxy

    查询:

      关系数据库:效率低,小型系统使用

      NOSQL:高并发、大数据的查询

        键值(Key-Value)存储数据库:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
        列存储数据库:Cassandra, HBase, Riak
        文档型数据库:CouchDB, MongoDb
        图形(Graph)数据库:Neo4J, InfoGrid, Infinite Graph.

      搜索引擎:lucene

    分布式系统:

      应用服务器拆分:应用程序进行业务拆分,每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。

      分布式服务化应用:Dubbo(淘系)、HSF(淘系)

        

    260851397174320

    图1(#2)

    #1:LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx是七层负载均衡和HAProxy支持四层、七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

    #2:图1和本文章部分内容来源于其它博主(http://www.cnblogs.com/leefreeman/p/3993449.html)博客,非本人原创

    后记:关于优化

    1.避开网络开销,避开海量数据,避开资源争夺 是所有高性能的几个基本要素。(来源:http://www.cnblogs.com/selfteam/p/4036317.html)

  • 相关阅读:
    UNIX常用shell
    exit函数
    linux消息队列
    互斥量
    RCS版本控制
    linux samba
    UML建模
    linux syslog
    python基础-列表List及内置方法
    仿美团详情页与购物车源码-详情页
  • 原文地址:https://www.cnblogs.com/xujanus/p/4244334.html
Copyright © 2020-2023  润新知