架构高性能网站
文章平均质量分 90
凌澜星空
这个作者很懒,什么都没留下…
展开
-
视频讲解——Web服务器性能优化入门介绍
点击播放原创 2016-04-12 16:12:03 · 1400 阅读 · 0 评论 -
常用的分布式事务解决方案
众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理分...原创 2018-03-11 14:44:55 · 87234 阅读 · 32 评论 -
0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)
本文你将学到什么?本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统。 项目完整源码下载https://github.com/bz51/SpringBoot-Dubbo-Docker-Jenkins这套微服务框架能干啥?这套系统搭建完之后,那可就厉害了:微服务架构 你的整个应用程序将会被拆分成一个个功...原创 2018-02-02 15:52:27 · 7644 阅读 · 15 评论 -
架构高性能网站秘笈(一)——了解衡量网站性能的指标
服务器如何发送数据?服务器程序将需要发送的数据写入该程序的内存空间中;服务器程序通过操作系统的接口向内核发出系统调用;系统内核将用户态内存空间中的数据复制到内核缓冲区中去,然后通知网卡过来取;此后CPU转而做其他处理;网卡到CPU指定的内核缓冲区中将数据复制到网卡缓冲区中;网卡将字节转换成二进制位,再以电信号的形式输出至网络。注意:数据在计算机内部的复制是按照总线的宽度来复制的。比如在3原创 2016-04-07 17:17:19 · 10805 阅读 · 6 评论 -
架构高性能网站秘笈(二)——动态内容缓存
什么是动态内容缓存?浏览器向服务器发送请求后,服务器会根据浏览器的要求做相应的处理(如:数据库操作),然后将处理后的结果注入JSP页面生成HTML,最后将生成的HTML返回给浏览器显示。我们知道,数据库读取操作是非常耗时的,如果能将每次请求中的数据库处理时间去掉,那服务器的相应速度将会大幅提升。要实现这一点,我们就需要将常用的HTML页面事先生成好,当用户发出请求时,服务器只需从缓存中取出即可,无需原创 2016-04-07 20:42:32 · 4145 阅读 · 1 评论 -
架构高性能网站秘笈(三)——浏览器缓存
什么是浏览器缓存?在《架构高性能网站秘笈(二)——动态内容缓存》中我们知道,当不同用户请求相同数据时,动态内容缓存能够避免服务器的重复计算,从而降低用户的等待时间。但如果是同一个用户请求相同的数据,即使服务器能避免重复计算,但仍需将重复的数据传递给浏览器。若使用浏览器缓存,则同一个用户请求相同的数据时,浏览器只需从自己本地读取,无需从服务器上获取。从而大大降低用户的等待时间,减少了服务器的压力,可谓原创 2016-04-07 22:17:55 · 6142 阅读 · 0 评论 -
架构高性能网站秘笈(五)——Web组件分离
什么是Web组件?网站的静态网页HTML、JavaScript脚本、CSS样式、图片、动态数据称为网站的Web组件。也就是说,一个Web应用由各种各样的Web组件构成。 为什么要进行Web组件分离?一个网站的Web组件往往有各自的特点,比如:HTML页面属于静态文件,当用户请求一个HTML页面的时候Web服务器会进行IO操作,读取HTML文件;而用户请求动态数据的时候IO操作会比较少,但会涉及到大原创 2016-04-10 20:11:45 · 3986 阅读 · 3 评论 -
架构高性能网站秘笈(六)——构建数据缓冲区
到此为止,一共介绍了四种服务器性能优化的方法,分别是:动态内容缓存、浏览器缓存、反向代理缓存、Web组件分离。我们发现在这四种方法中,“缓存”占了大头!确实如此,“缓存”是服务器性能优化的核心思想,我们提出的各种优化方法本质上只是把“缓存”用在了不同的地方,并根据使用位置的不同,个性化定制缓存的使用方法。接下来又要介绍一种缓存的新用法——数据缓冲区。 之前介绍的动态内容缓存、浏览器缓存都是将整个静原创 2016-04-11 11:35:45 · 2758 阅读 · 2 评论 -
架构高性能网站秘笈(七)——负载均衡
什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。下面详细介绍负载均衡的四原创 2016-04-12 09:37:53 · 12033 阅读 · 3 评论 -
轻量级线程池的实现
写在前面最近因为项目需要,自己写了个单生产者-多消费者的消息队列模型。多线程真的不是等闲之辈能玩儿的,我花了两个小时进行设计与编码,却花了两天的时间调试与运行。在这里,我把我遇到的坑与大家分享。需求的由来一开始我需要实现一个记录用户操作日志的功能,目的是给商家用户提供客户行为分析的能力。要记录的信息包括客户的访问时间、IP、在网站上所做的操作等。其中,客户的地域信息是个重要的分析项,所以必须要把IP原创 2016-12-23 12:00:01 · 3406 阅读 · 1 评论 -
Spring速查手册(三)——Spring+JDBC
Spring的数据访问异常体系JDBC提供了SQLException异常,它是一个检查异常,必须要捕获。 但该异常过于笼统,只要是数据访问发生问题都抛出这个异常。因此很难在抛出该异常后进行恢复,因此该异常就没有抛出的必要。 Spring对JDBC的异常进行了转换,并进行了扩充,使得异常更加具体化,能够根据异常来进行恢复。 此外,Spring的数据访问异常均继承自DataAccessExcept原创 2017-05-09 15:20:08 · 1357 阅读 · 1 评论 -
服务器性能优化基础知识
性能调优整体思路空间换时间 对热点数据缓存,减少数据查询时间。分而治之 将大任务切片,分开执行。HDFS、MapReduce就是这个原理。异步处理 若业务链中有某一环节耗时严重,则该环节将拉长业务链的整体耗时。可以将耗时业务采用消息队列异步化,从而缩短业务链耗时。并行处理 采用多进程、多线程同时处理,提升处理速度。离用户更近一点 如CDN技术,将静态资源放到离用户更近的地方,从而原创 2017-10-13 14:03:50 · 1153 阅读 · 1 评论 -
缓存世界中的三大问题及解决方案
目前的IO设备远不能满足互联网应用海量的读写请求。于是便出现了缓存,利用内存的高速读写性能来应付海量的查询请求。然而内存资源非常宝贵,将全量数据存储在内存中显然是不切合实际的。因此目前采用内存和IO结合的方式,内存只存储热点数据,而IO设备存储全量数据。 缓存的设计包含很多技巧,设计不当将会导致严重的后果。本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案。1. 缓...原创 2018-03-14 15:55:03 · 3228 阅读 · 0 评论