Author: admin

Nginx+Keepalived实现站点高可用

公司内部 OA 系统要做线上高可用,避免单点故障,所以计划使用2台虚拟机通过 Keepalived 工具来实现 nginx 的高可用(High Avaiability),达到一台nginx入口服务器宕机,另一台备机自动接管服务的效果。(nginx做反向代理,实现后端应用服务器的负载均衡)快速搭建请直接跳至 第2节。…

        

什么是代码现代化?

现代高性能计算机由下列资源组合构建而成:多核处理器(/zh-cn/articles/frequently-asked-questions-intel-multi-core-processor-architecture#_Essential_concepts)、众核处理器(http://goparallel.sourceforge.net/ask-james-reinders-multicore-vs-manycore/)、大型高速缓存,高带宽进程间通信结构和高速 I/O 功能。 高性能软件需经过设计,以充分利用这些丰富的资源。 无论是重新构建并/或调优现有应用以发挥最高性能,或为现有或未来设备构建新应用,了解编程模型和高效利用资源之间的相互作用极其关键。 以此为起点,全面了解代码现代化(/zh-cn/moderncode)。 关于性能,您的代码至关重要!…

InnoDB行格式对text/blob大变长字段的影响

最近在排查现网Text与Blob类型,发现有不少,在《高性能MySQL(第3版)》看到对这两种变长数据类型的处理会涉及到在磁盘上创建临时表,性能开销比较大。于是把影响blob型数据存储方式了解了一下:row_format。

1. InnoDB的Antelop与Barracuda文件格式

Innodb存储引擎保存记录,是以行的形式存放的(与之对应的是像Google BigTable这种列数据库)。在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了 CompactRedundant 两种格式来存放行记录数据,这也是目前使用最多的一种格式。Redundant 格式是为兼容之前版本而保留的。…

    

基于内容推荐的个性化新闻阅读实现

这一直是本人想做的一个项目,缘由是现在的信息越来越多,越来越廉价,所以我必须想办法能自动挑出我感兴趣的文章,而不是一打开订阅邮箱堆积着好多好多的订阅文章,想要消化这些文章又不知哪里下手。其实以前好像看到说,Twitter已经着手研究这类问题,今后可能Twitter信息将按照用户的喜好程度,而不是时间排序展列了,国内低效著称的某浪不知道有没有着手这方面的研究,还是坐等着山寨呢?
同时,国内的今日头条算是当前最大的移动端信息聚合平台了,之前使用见他每个文章都有好几个TAG,所以不知道他的推荐算法是不是简单基于标签计算的。之前的推荐算法介绍…

再见,CSRF:讲解set-cookie中的SameSite属性

SameSite-cookies是一种机制,用于定义cookie如何跨域发送。这是谷歌开发的一种安全机制,并且现在在最新版本(Chrome Dev 51.0.2704.4)中已经开始实行了。SameSite-cookies的目的是尝试阻止CSRF(Cross-site request forgery 跨站请求伪造)以及XSSI(Cross Site Script Inclusion (XSSI) 跨站脚本包含)攻击。详细介绍可以看这一篇文章(https://tools.ietf.org/html/draft-west-first-party-cookies-06)。…

        

Websocket原理及使用场景

WebSocket的使用场景

社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等需要高实时的场景

由轮询到WebSocket

1 轮询

客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。客户端会轮询,有没有新消息。这种方式连接数会很多,一个接受,一个发送。而且每次发送请求都会有Http的Header,会很耗流量,也会消耗CPU的利用率。

2 长轮询

长轮询是对轮询的改进版,客户端发送HTTP给服务器之后,有没有新消息,如果没有新消息,就一直等待。当有新消息的时候,才会返回给客户端。在某种程度上减小了网络带宽和CPU利用率等问题。但是这种方式还是有一种弊端:例如假设服务器端的数据更新速度很快,服务器在传送一个数据包给客户端后必须等待客户端的下一个Get请求到来,才能传递第二个更新的数据包给客户端,那么这样的话,客户端显示实时数据最快的时间为2×RTT(往返时间),而且如果在网络拥塞的情况下,这个时间用户是不能接受的,比如在股市的的报价上。另外,由于http数据包的头部数据量往往很大(通常有400多个字节),但是真正被服务器需要的数据却很少(有时只有10个字节左右),这样的数据包在网络上周期性的传输,难免对网络带宽是一种浪费。

3  WebSocket

现在急需的需求是能支持客户端和服务器端的双向通信,而且协议的头部又没有HTTP的Header那么大,于是,Websocket就诞生了!流量消耗方面,相同的每秒客户端轮询的次数,当次数高达数万每秒的高频率次数的时候,WebSocket消耗流量仅为轮询的几百分之一

WebSocket协议原理

Websocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。

Websocket的数据传输是frame形式传输的,比如会将一条消息分为几个frame,按照先后顺序传输出去。这样做会有几个好处:

1 大数据的传输可以分片传输,不用考虑到数据大小导致的长度标志位不足够的情况。

2 和http的chunk一样,可以边生成数据边传递消息,即提高传输效率。…