360SDN.COM

首页/Java/列表

日志分析

来源:  2017-08-18 17:08:31    评论:0点击:

一、日志分析的用途

大型站点=>用户行为分析、广告推广、数据挖掘、大数据分析平台、实时分析平台。

《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(1) -- 性能

1. 性能

    在浏览器端,可能通过浏览器缓存、使用页面压缩、合理布局页面、减少cookie传输等手段改善性能。还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度。

    在应用服务器端,可以使用服务器本地缓存和分布式缓存。也可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回给用户。

    将多台应用服务器组成一个集群共同对外服务。

    在代码层面,可以通过使用多线程,改善内存管理等手段优化性能。

    1.1 性能测试指标: 响应时间、 并发数、 吞吐量、 性能计数器

    1.2 性能测试方法:

          1.2.1 性能测试: 以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,难系统在资源可接受范围内是否能达到性能预期

          1.2.2 负载测试: 对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值。如某种资源已经呈饱和状态,这时继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。

          1.2.3 压力测试: 超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。

          1.2.4 稳定性测试: 在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。

    1.3 性能优化

        1.3.1 前端性能优化:

            1.3.1.1 减少HTTP请求: 合并CSS,合并JS,合并图片

            1.3.1.2 使用浏览器缓存: 对于CSS,JS,LOGO及一些更新频率都比较低的表态资源文件,可通过设置HTTP头中Cache-Control和Expired的属性,缓存在浏览器中

            1.3.1.3 启用压缩: 压缩对服务端和浏览器都会产生一定的压力,需权衡考虑

            1.3.1.4 CSS放在页面最上面,JS放在页面最下面

            1.3.1.5 减少Cookie传输,考虑静态资源使用独立域名

        1.3.2 CDN加速

        1.3.3 反向代理

        1.3.4 应用服务器性能优化

            1.3.4.1 分布式缓存: Memcached

            1.2.4.2 异步操作: 任何可以晚点做的事情都应该晚点再做

            1.3.4.3 使用集群

            1.3.4.4 代码优化: 多线程、资源复用(数据库连接、复杂对象等)、数据结构、垃圾回收

        1.3.5 存储性能优化

            1.3.5.1 固态硬盘 vs 机械硬盘

            1.3.5.2 B+树 vs LSM 树

            1.3.5.3 RAID vs HDFS
 

《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(2) -- 可用性

2. 可用性

    网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份。

    对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务。但是一个前提条件是应用服务器上不能保存请求的会话信息,否则服务器宕机,会话丢失,即使将用户请求转发到其它服务器上也无法完成业务处理。

    2.1 高可用的网站架构

        分层模型:应用层、服务层、数据层。大型网站分层的粒度更细,每层再按业务拆分

    2.2 通过负载均衡进行无状态的失效转移

    2.3 应用服务器集群的session管理

        2.3.1 session复制 -- 集群规模较大时,不可取

        2.3.2 session绑定 -- 对同一用户的请求,总是发送到集群中的同一台服务器。当此服务器宕机时,session丢失,不可取

        2.3.3 使用cookie记录session -- 不可取。大小受限; 每次请求响应均需要传输cookie,影响性能; 如果用户关闭cookie,则导致访问不正常

        2.3.4 session服务器(集群) -- 应用服务器每次读写session时,均访问session服务器

    2.4 高可用的服务

        2.4.1 分级管理:服务分高优先级和低优先级。高优先级的服务独立部署。

        2.4.2 超时设置

        2.4.3 异步调用

        2.4.4 服务降级:高峰期间,拒绝或关闭非核心业务。比如双十一期间关闭”评价“服务

        2.4.5 幂等性设计: 服务层保证服务重复调用和调用一次的结果相同

    2.5 高可用的数据

        2.5.1 CAP原理:提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availibility)、分区耐受性(Partition Tolerance,系统具有跨网络分区的伸缩性)这三个条件。大型网站应用中,通常会选择强化分布式存储系统的可用性(A)和伸缩性(P),而在某种程度上放弃一致性(C)。

        2.5.2 数据备份

    2.6 网站运行监控

        2.6.1 监控数据采集:用户行为日志收集、服务器性能监控、运行数据报告

        2.6.2 监控管理:系统报警、失效转移、自动优雅降级

 


《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(4) -- 可扩展性

4. 扩展性

    是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。

    4.1 构建可扩展的网站架构

    4.2 利用分布式消息队列降低系统耦合性

        4.2.1 事件驱动架构

      

        4.2.2 分布式消息队列

    4.3 利用分布式服务打造可复用的业务平台

        纵向拆分:将一个大应用拆分为多个小应用,独立部署为一个Web应用

        横向拆分:将复用的业务拆分出,独立部署为分布式服务

        4.3.1 大型网站分布式服务的需求与特点

            1)负载均衡   2)失效转移    3)高效的远程通信    4)整合异构系统    5)对应用最少侵入    6)版本管理    7)实时监控

        4.3.2 分布式服务框架设计

            开源分布式服务框架:Dubbo


《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(3) -- 伸缩性

3. 伸缩性

    伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

    对于缓存服务器集群,加入新的服务器可能会导致缓存路由失效,进面导致集群中大部分缓存数据都无法访问。需要改进缓存路由算法保证缓存数据的可访问性。

    对于关系型数据库,虽然支持数据复制、主从热备等机制,从早但是很难做到大规模集群的可伸缩性,因此关系数据库的集群伸缩性方案必须在数据库之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群。

    3.1 网站架构的伸缩性设计

        3.1.1 不同功能进行物理分离实现伸缩

            纵向分离(分层后分离):将业务处理流程上的不同部分(网站具体产品、可复用业务模块、基础技术服务、数据库)分离部署

            横向分离(业务分割后分离):将不同的业务模块(如:网站前台、卖家后台、买家后台)分离部署

        3.1.2 单一功能通过集群规模实现伸缩

    3.2 应用服务器集群的伸缩性设计

        3.2.1 HTTP重定向负载均衡

            缺点:需要2次请求才能完成一次访问,性能较差; 重定向服务器自身的处理能力有可能成为瓶颈,整个集群的伸缩性规模有限; 使用HTTP302响应码重定向,有可能使用搜索引擎判断为SEO作弊,降低搜索排名。 因此这种方案并不多见。

        3.2.2 DNS域名解析负载均衡

            优点:将负载均衡的工作转交给DNS,省掉了网站管理维护负载均衡服务器的麻烦; 许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样加快用户访问速度,改善性能。

            缺点:DNS是多级解析,每一级DNS都可能缓存A记录,当下线某台服务器后,即使修改了DNS的A记录,要使其生效也需要较长时间,此期间会导致访问失败;而且DNS负载均衡的控制权在域名服务商那里,网站无法对其做更多改善和更强大的管理。

        3.2.3 反向代理负载均衡

            缺点:反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

        通常总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段,即域名解析得到的一组服务器并不是实际提供Web服务的物理服务器,而是同样提供负载均衡服务的内部服务器,这组内部负载均衡服务器再进行负载均衡,将请求分发到真实的Web服务器上。

        3.2.4 IP负载均衡 -- 在网络层通过修改请求目标地址进行负载均衡

        3.2.5 数据链路层负载均衡 -- 是指在通信协议的数据链路层修改mac地址进行负载均衡

              此方式是目前大型网站使用最广的一种负载均衡手段。在Linux平台上的开源产品是LVS(Linux Virtual Server)

        3.2.6 负载均衡算法 -- 轮询、加权轮询、随机、最少连接、源地址散列

    3.3 分布式缓存集群的伸缩性设计

        3.3.1 Memcached

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

            将一台缓存服务器虚拟成一组服务器节点(推荐分成150个),这样可以保证节点能均匀地分布于hash环,当加入一台新缓存服务器时,也能保证尽量分担多台缓存服务器的负载,而不会只分担某台缓存服务器的负载。

    3.4 数据存储服务器集群的伸缩性设计

        3.4.1 关系数据库集群的伸缩性设计

            (1) 数据库主从复制

            (2) 数据分库。不同库的表不能进行Join操作

            (3) 对于数据量大的单表,还需进行分片,将一张拆开分别存储在多个数据库中。

       目前比较成熟的支持数据分片的分布式关系数据库产品主要有开源的Amoeba和Cobar

        3.4.2 NoSQL数据库的伸缩性设计

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权